All Products
Search
Document Center

Container Service for Kubernetes:Menyesuaikan aturan pengalihan Ingress ALB

Last Updated:Apr 21, 2026

Ingress ALB mendukung aturan pengalihan kustom yang terdiri dari kondisi dan aksi pengalihan. Anda dapat menentukan kondisi pengalihan berdasarkan nama domain, path, header permintaan, string kueri, metode permintaan, cookie, atau IP sumber. Selain itu, Anda juga dapat menentukan aksi pengalihan seperti mengembalikan respons tetap, melakukan pengalihan, menyisipkan atau menghapus header permintaan, mencerminkan traffic, meneruskan permintaan ke beberapa grup server backend, atau menulis ulang permintaan. Aturan pengalihan kustom ini dapat dikonfigurasi melalui Konsol atau dengan menambahkan anotasi pada resource Ingress.

Prasyarat

Komponen ALB Ingress Controller harus diinstal dan berada pada versi v2.5.0 atau lebih baru. Untuk informasi selengkapnya, lihat Mengelola komponen.

Kondisi pengalihan

Penting
  • Satu aturan pengalihan dapat mencakup maksimal 10 kondisi.

  • Kondisi pengalihan ResponseHeader dan ResponseStatusCode hanya berlaku untuk aturan pengalihan berbasis respons.

Kondisi pengalihan

Ingress ALB mendukung konfigurasi kondisi pengalihan melalui anotasi alb.ingress.kubernetes.io/conditions.<service-name>. Blok aturan routing yang berbeda memiliki hubungan logika AND, sedangkan nilai dalam satu blok aturan routing yang sama memiliki hubungan logika OR. Sebagai contoh, dua blok aturan Header yang berbeda memiliki hubungan logika AND, tetapi nilai-nilai dalam satu blok aturan Header yang sama memiliki hubungan logika OR. Penjelasan rinci mengenai aturan routing disajikan sebagai berikut.

Kondisi pengalihan

Deskripsi

Nama domain

Mengarahkan permintaan berdasarkan nama domain yang sesuai. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
      "type": "Host",
      "hostConfig": {
        "values": [
          "anno.example.com"
        ]
      }
  }]
  • type: Jenis pencocokan. Tetapkan nilainya ke Host untuk mencocokkan berdasarkan nama domain.

  • hostConfig: Nama domain yang akan dicocokkan. Jika Anda menentukan beberapa nama domain, mereka dievaluasi menggunakan logika OR.

Path

Mengarahkan permintaan berdasarkan path yang sesuai. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
    "type": "Path",
    "pathConfig": {
      "values": [
        "/pathvalue1",
        "/pathvalue2"
      ]
    }
  }]
  • type: Jenis pencocokan. Tetapkan nilainya ke Path untuk mencocokkan path permintaan.

  • pathConfig: Path yang akan dicocokkan. Jika Anda menentukan beberapa path, mereka dievaluasi menggunakan logika OR.

Header

Mengarahkan permintaan berdasarkan header permintaan yang sesuai. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
    "type": "Header",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type: Jenis pencocokan. Tetapkan ke Header untuk mencocokkan header permintaan.

  • headerConfig: Kunci dan nilai header. Jika Anda menentukan beberapa nilai header, mereka dievaluasi menggunakan logika OR.

String kueri

Mengarahkan permintaan berdasarkan string kueri yang sesuai. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
    "type": "QueryString",
    "queryStringConfig": {
      "values": [
        {
           "key":"querystringkey1",
           "value":"querystringvalue2"
        }
      ]
    }
  }]
  • type: Jenis pencocokan. Tetapkan nilainya ke QueryString untuk mencocokkan string kueri permintaan.

  • queryStringConfig: Pasangan kunci-nilai string kueri. Panjang kunci dan nilai harus antara 1 hingga 100 karakter. Kunci dan nilai dapat berisi huruf kecil, karakter yang terlihat, serta karakter wildcard tanda bintang (*) dan tanda tanya (?). Spasi dan karakter #[]{}\|<>& tidak didukung. Jika Anda menentukan beberapa string kueri, mereka dievaluasi dengan logika OR.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 3: Mengarahkan traffic berdasarkan string kueri, beberapa header, dan beberapa path.

Metode permintaan

Mengarahkan permintaan berdasarkan metode permintaan yang sesuai. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
    "type": "Method",
    "methodConfig": {
      "values": [
        "GET",
        "HEAD"
      ]
    }
  }]
  • type: Jenis pencocokan. Tetapkan ke Method untuk mencocokkan metode permintaan.

  • methodConfig: Metode permintaan. Nilai yang didukung: GET, POST, PUT, DELETE, HEAD, OPTIONS, dan PATCH. Jika Anda menentukan beberapa metode, mereka dievaluasi menggunakan logika OR.

Cookie

Mengarahkan permintaan berdasarkan cookie yang sesuai. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
    "type": "Cookie",
    "cookieConfig": {
      "values": [
        {
           "key":"cookiekey1",
           "value":"cookievalue2"
        }
      ]
     }
  }]
  • type: Jenis pencocokan. Tetapkan nilainya ke Cookie untuk mencocokkan cookie.

  • cookieConfig: Pasangan kunci-nilai cookie. Panjang kunci dan nilai harus antara 1 hingga 100 karakter. Kunci dan nilai dapat berisi huruf kecil, karakter yang terlihat, tanda bintang (*) wildcard, dan tanda tanya (?). Spasi dan karakter berikut tidak didukung: #[]{}\|<>&. Jika Anda mengonfigurasi beberapa cookie, cookie tersebut dievaluasi dengan logika OR.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 2: Mengarahkan traffic berdasarkan nama domain, metode permintaan, dan cookie.

IP sumber

Mengarahkan permintaan berdasarkan alamat IP sumber yang sesuai. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
    "type": "SourceIp",
    "sourceIpConfig": {
      "values": [
        "192.168.0.0/16",
        "172.16.0.0/16"
      ]
    }
  }]
  • type: Jenis pencocokan. Tetapkan nilainya ke SourceIP untuk mencocokkan IP sumber permintaan.

  • sourceIpConfig: Alamat IP sumber atau Blok CIDR. Jika Anda menentukan beberapa alamat IP atau Blok CIDR, mereka dievaluasi menggunakan logika OR.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 1: Mengarahkan traffic berdasarkan IP sumber dan header.

header respons

Mencocokkan header respons dan menjalankan aksi pengalihan hanya pada respons yang berisi header yang benar. Perhatikan bahwa ini harus digunakan bersamaan dengan anotasi alb.ingress.kubernetes.io/rule-direction.<service-name>: Response. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
    "type": "ResponseHeader",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type: Jenis kondisi. Tetapkan ke ResponseHeader untuk mencocokkan header dalam respons.

  • headerConfig: Kunci dan nilai header. Jika Anda menentukan beberapa nilai header, mereka dievaluasi menggunakan logika OR.

kode status respons

Mencocokkan kode status respons. Layanan hanya dapat diakses jika kode status yang benar dikembalikan. Perhatikan bahwa fitur ini harus digunakan dengan aksi pengalihan arah respons dan anotasi aturan pengalihan arah respons alb.ingress.kubernetes.io/rule-direction.<service-name>: Response. Berikut contohnya.

alb.ingress.kubernetes.io/conditions.service-name: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
  [{
    "type": "ResponseStatusCode",
    "responseStatusCodeConfig": {
      "values": [
        "statuscode1",
        "statuscode2"
      ]
    }
  }]
  • type: Jenis pencocokan. Tetapkan ke ResponseStatusCode untuk mencocokkan kode status respons.

  • responseStatusCodeConfig: Kode status respons. Jika Anda menentukan beberapa kode status, mereka dievaluasi menggunakan logika OR.

Kasus penggunaan 1: Pengarahan berdasarkan IP sumber dan header

Penting

Anda dapat menentukan maksimal lima kondisi IP sumber dalam satu aturan pengalihan.

YAML berikut mendefinisikan Ingress yang hanya mengarahkan permintaan jika IP sumber, header, dan path sesuai dengan kondisi yang ditentukan.

Jika alamat IP sumber permintaan berasal dari 192.168.0.0/16 atau 172.16.0.0/16, header permintaan berisi gray-hello dengan nilai value1 atau value2, serta path permintaan adalah /hello, maka permintaan tersebut diarahkan ke layanan gray-hello-svc. Jika tidak, permintaan diarahkan ke layanan lain.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/order: "1"
   alb.ingress.kubernetes.io/conditions.gray-hello-svc: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
     [{
       "type": "Header",
       "headerConfig": {
          "key":"gray-hello",
           "values": [
              "value1",
              "value2"
           ]
       }
      },
      {
         "type": "SourceIp",
         "sourceIpConfig": {
           "values": [
             "192.168.0.0/16",
             "172.16.0.0/16"
           ]
         }
     }]
  name: gray-hello-ingress
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /hello
        pathType: ImplementationSpecific
        backend:
          service:
            name: gray-hello-svc # Nama layanan backend ini harus sesuai dengan nama dalam anotasi `conditions` agar kondisi tersebut berlaku.
            port:
              number: 88

alb.ingress.kubernetes.io/order: Menentukan prioritas Ingress. Semakin kecil angkanya, semakin tinggi prioritasnya.

Kasus penggunaan 2: Pengarahan berdasarkan domain, metode, dan cookie

YAML berikut mendefinisikan Ingress yang hanya mengarahkan permintaan jika nama domain, metode permintaan, dan cookie sesuai dengan kondisi yang ditentukan.

Permintaan diarahkan ke service-a hanya jika metode permintaan adalah GET atau HEAD, host permintaan adalah example.com atau *.edu, cookie permintaan memiliki kunci cookiekey1 dan nilai cookievalue1, serta path permintaan adalah /test. Jika tidak, permintaan diarahkan ke service-b.

Catatan

Aturan pengalihan untuk nama domain mendukung wildcard.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
     [{
       "type": "Cookie",
       "cookieConfig": {
         "values": [
           {
             "key":"cookiekey1",
             "value":"cookievalue1"
           }
        ]
       }
      },
      {
       "type": "Method",
       "methodConfig": {
         "values": [
           "GET",
           "HEAD"
         ]
       }
      },
     {
       "type": "Host",
       "hostConfig": {
           "values": [
              "example.com",
              "*.edu" 
           ]
       }
      }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a # Nama layanan backend ini harus sesuai dengan nama dalam anotasi `conditions` agar kondisi tersebut berlaku.
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

Kasus penggunaan 3: Pengarahan berdasarkan string kueri, header, dan path

YAML berikut mendefinisikan Ingress yang hanya mengarahkan permintaan jika string kueri, header, dan path sesuai dengan kondisi yang ditentukan.

Permintaan diarahkan ke layanan service-a jika path permintaan adalah /pathvalue1, /pathvalue2, atau /test; string kueri memiliki kunci querystringkey1 dan nilai querystringvalue2; serta header permintaan berisi headerkey1 dan headerkey2. Selain itu, untuk header permintaan yang berisi headerkey1, nilainya harus headervalue1 atau headervalue2, dan untuk header permintaan yang berisi headerkey2, nilainya harus headervalue3 atau headervalue4. Jika tidak, permintaan diarahkan ke layanan service-b.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
     [{
       "type": "Path",
       "pathConfig": {
           "values": [
              "/pathvalue1",
              "/pathvalue2"
           ]
       }
      },
      {
       "type": "QueryString",
       "queryStringConfig": {
         "values": [
           {
             "key":"querystringkey1",
             "value":"querystringvalue2"
           }
        ]
       }
      },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey1",
           "values": [
              "headervalue1",
              "headervalue2"
           ]
       }
     },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey2",
           "values": [
              "headervalue3",
              "headervalue4"
           ]
       }
     }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a # Nama layanan backend ini harus sesuai dengan nama dalam anotasi `conditions` agar kondisi tersebut berlaku.
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

Aksi pengalihan

Aksi pengalihan

Ingress ALB memungkinkan Anda mengonfigurasi aksi pengalihan untuk permintaan dan respons melalui anotasi alb.ingress.kubernetes.io/actions.<service-name>. Aksi yang didukung mencakup mengembalikan respons tetap, pengalihan, menyisipkan atau menghapus header, pencerminan traffic, meneruskan ke beberapa grup server backend, dan menulis ulang permintaan. Dengan menentukan aksi pengalihan ini, Anda dapat mengelola secara fleksibel cara penanganan permintaan dan respons dalam Ingress ALB Anda.

Penting
  • Untuk anotasi alb.ingress.kubernetes.io/actions.<service-name>, pastikan nama layanan dalam anotasi sesuai dengan nama layanan di bawah backend dalam field rule.

  • Gunakan hanya satu aksi pengalihan terminal—seperti pengalihan, respons tetap, atau penerusan ke beberapa grup server—dalam satu aturan pengalihan.

  • Saat mengonfigurasi pengalihan, respons tetap, atau penerusan ke beberapa grup server, Anda harus menetapkan backend.service.port.name ke use-annotation.

Aksi pengalihan permintaan

Aksi

Deskripsi

Respons tetap

Mengirim respons tetap ke client dari Application Load Balancer (ALB). Anda dapat mengatur kode status respons, konten, dan tipe konten. Kode berikut memberikan contohnya.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
  [{
      "type": "FixedResponse",
      "FixedResponseConfig": {
          "contentType": "text/plain",
          "httpCode": "503",
          "content": "503 error text"
      }
  }]
  • type: Jenis aksi pengalihan. Tetapkan ke FixedResponse untuk aksi ini.

  • contentType: Tipe konten badan respons.

  • httpCode: Kode status respons.

  • content: Badan respons.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 1: Menetapkan respons tetap.

Pengalihan

Mengalihkan client ke alamat berbeda menggunakan kode status HTTP 3xx. Kode berikut memberikan contohnya.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
  [{
      "type": "Redirect",
      "RedirectConfig": {
          "host": "${host}",
          "path": "/test",
          "port": "443",
          "protocol": "https",
          "query": "querystring",
          "httpCode": "301"
      }
  }]
  • type: Jenis aksi pengalihan. Tetapkan ke Redirect untuk aksi ini.

  • host: Host tujuan pengalihan permintaan.

  • path: Path tujuan pengalihan permintaan.

  • port: Port tujuan pengalihan permintaan.

  • protocol: Protokol tujuan pengalihan permintaan.

  • query: String kueri permintaan yang dialihkan.

  • httpCode: Kode status yang dikembalikan setelah pengalihan.

Penting

Anda dapat mengonfigurasi parameter host, path, port, protocol, dan query untuk menggunakan nilai dari permintaan asli, tetapi setidaknya satu harus diatur ke nilai non-default. Misalnya, jika Anda menetapkan host ke ${host}, biarkan kosong ("host": ""), atau jangan sertakan parameter tersebut, nilai dari permintaan asli akan digunakan.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 2: Menggunakan pengalihan 301.

Pencerminan traffic

Menyalin permintaan dan meneruskannya ke grup server pencerminan traffic. Anda harus menentukan ID grup server tersebut. Kode berikut memberikan contohnya.

Penting
  • Aksi pengalihan pencerminan traffic hanya dapat digunakan bersama penerusan, penyisipan header, penghapusan header, dan pembatasan laju QPS. Aksi ini tidak dapat digunakan bersama rewrite, respons tetap, atau pengalihan.

  • Anda hanya dapat menyambungkan grup server pencerminan traffic dengan menentukan ServerGroupID-nya.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
      [{
          "type": "TrafficMirror",
          "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
      }]
  • type: Jenis aksi pengalihan. Tetapkan ke TrafficMirror untuk mengonfigurasi pencerminan traffic.

  • TargetType: Jenis target untuk pencerminan. Saat ini, hanya ForwardGroupMirror yang didukung, yang mencerminkan permintaan ke grup server.

  • ServerGroupID: ID grup server pencerminan traffic.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 4: Mencerminkan traffic.

Meneruskan ke beberapa grup server backend

Meneruskan permintaan ALB ke beberapa grup server backend. Anda dapat menentukan grup server backend dengan menggunakan ServerGroupID, atau membuat/menyambungkan grup server dengan menggunakan ServiceName+ServicePort. Anda juga dapat mengatur bobot penerusan untuk setiap grup server backend dan mengaktifkan persistensi sesi antar grup server.

Penting
  • Instans ALB standar dapat disambungkan ke maksimal lima grup server.

  • Jika Anda menyambungkan grup server dengan menggunakan ServerGroupID dan ServiceName+ServicePort, pencocokan memprioritaskan ServerGroupID.

  • Saat persistensi sesi diaktifkan, Ingress ALB meneruskan permintaan dari sesi yang sama ke backend yang sama.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
       [{
           "type": "ForwardGroup",
           "ForwardConfig": {
             "ServerGroups" : [{
               "ServiceName": "tea-svc",
               "Weight": 30,
               "ServicePort": 80
             },
             {
               "ServiceName": "coffee-svc",
               "Weight": 20,
               "ServicePort": 80
             },
             {
               "ServerGroupID": "sgp-71aexb9y93ypo*****",
               "Weight": 20
             },
             {
               "ServerGroupID": "sgp-slygpbvm2cydo*****",
               "Weight": 30
             }],
             "ServerGroupStickySession": {
              "Enabled": true,
              "Timeout": 80
             }
           }
       }]
  • type: Jenis aksi pengalihan. Tetapkan ke ForwardGroup untuk mengonfigurasi penerusan ke beberapa grup server backend.

  • ForwardConfig: Parameter untuk grup server backend. Jika Anda mengonfigurasi beberapa grup server, permintaan diteruskan ke setiap grup server berdasarkan bobotnya.

  • ServerGroupID: ID grup server.

  • ServiceName: Nama layanan.

  • ServicePort: Port layanan.

  • Weight: Bobot untuk meneruskan permintaan ke setiap grup server.

  • Enabled: Menentukan apakah akan mengaktifkan persistensi sesi antar grup server.

  • Timeout: Periode timeout untuk persistensi sesi antar grup server.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 5: Meneruskan ke beberapa grup server.

Rewrite

Menulis ulang permintaan sebelum meneruskannya ke backend. Application Load Balancer (ALB) dapat memodifikasi host, path, dan string kueri permintaan.

Penting
  • Aksi rewrite bertentangan dengan anotasi rewrite-target. Jangan gunakan keduanya bersamaan.

  • Aksi rewrite tidak dapat digunakan bersama aksi respons tetap atau pengalihan.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "querystring"
           }
       }]
  • type: Jenis aksi pengalihan. Tetapkan ke Rewrite untuk menggunakan fitur rewrite.

  • host: Host yang digunakan dalam permintaan yang ditulis ulang. Jika Anda menetapkannya ke ${host}, biarkan kosong ("host": ""), atau jangan sertakan parameter tersebut, nilai dari permintaan asli akan digunakan.

  • path: Path yang digunakan dalam permintaan yang ditulis ulang. Jika Anda menetapkannya ke ${path}, biarkan kosong ("path": ""), atau jangan sertakan parameter tersebut, nilai dari permintaan asli akan digunakan.

  • query: String kueri permintaan yang ditulis ulang. Jika Anda menetapkannya ke ${query}, biarkan kosong ("query": ""), atau jangan sertakan parameter tersebut, nilai dari permintaan asli akan digunakan.

Penting

Parameter host, path, dan query dapat dikonfigurasi untuk menggunakan nilai dari permintaan asli. Namun, setidaknya satu parameter ini harus diatur ke nilai selain default. Misalnya, jika Anda menetapkan host ke ${host}, biarkan kosong ("host": ""), atau jangan sertakan parameter tersebut, nilai dari permintaan asli akan digunakan.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 6: Menulis ulang permintaan.

Sisipkan header

Menetapkan nama field header dan kontennya. Ini akan menimpa header yang sudah ada dengan nama yang sama dalam permintaan. Kode berikut memberikan contohnya.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: Jenis aksi pengalihan. Tetapkan ke InsertHeader untuk menyisipkan header permintaan.

  • key: Nama field header.

  • value: Konten field header.

  • valueType: Jenis nilai.

Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 3: Menyisipkan header permintaan.

Hapus header

Menghapus header dari permintaan. Kode berikut memberikan contohnya.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type: Jenis aksi pengalihan. Tetapkan ke RemoveHeader untuk menghapus header permintaan.

key: Nama field header yang akan dihapus.

Pembatasan laju QPS

Aksi ini membatasi laju permintaan dalam permintaan per detik (QPS). Anda dapat mengonfigurasi batas keseluruhan dan batas terpisah untuk setiap IP sumber client.

Kode berikut memberikan contoh konfigurasinya:

Penting
  • Aksi pengalihan pembatasan laju QPS harus digunakan bersama penerusan ke grup server.

  • Saat header permintaan X-Forwarded-For berisi beberapa alamat IP, seperti X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …, alamat paling kiri adalah IP client sebenarnya. Untuk menggunakan pembatasan laju berdasarkan IP sumber client, Anda harus mengaktifkan pengambilan alamat IP client pada listener. Hal ini memungkinkan instans ALB mengekstrak alamat IP client dari header X-Forwarded-For. Untuk informasi selengkapnya, lihat XForwardedForConfig.

 annotations:
    alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
      [{
          "type": "TrafficLimit",
          "TrafficLimitConfig": {
              "QPS": "1000",
              "QPSPerIp": "100"
          }
      }]
  • type: Menentukan jenis aksi pengalihan. Tetapkan ke TrafficLimit untuk mengonfigurasi pembatasan laju.

  • QPS: Batas laju permintaan keseluruhan dalam permintaan per detik (QPS). Nilainya harus dalam rentang 1 hingga 1.000.000. Jika laju permintaan melebihi batas yang ditentukan, permintaan berlebih akan ditolak, dan client menerima kode status HTTP 503.

  • QPSPerIp: Batas laju permintaan untuk setiap IP sumber client, dalam QPS. Nilainya harus dalam rentang 1 hingga 1.000.000. Jika batas keseluruhan QPS dan batas per-IP QPSPerIp keduanya diatur, nilai QPSPerIp harus lebih kecil dari nilai QPS. Jika laju permintaan dari satu alamat IP melebihi batas yang ditentukan, permintaan berlebih akan ditolak, dan client menerima kode status HTTP 503.

Aksi pengalihan respons

Aksi

Deskripsi

Sisipkan header

Saat diterapkan pada aturan respons, aksi ini menetapkan field header dan nilainya dalam respons. Ini akan menimpa header respons yang sudah ada dengan nama yang sama. Kode berikut memberikan contohnya.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: Jenis aksi pengalihan. Tetapkan ke InsertHeader untuk menyisipkan header respons.

  • key: Nama field header.

  • value: Konten field header.

  • valueType: Jenis nilai.

Untuk kasus penggunaan dan contoh modifikasi header respons, lihat Kasus penggunaan 7: Memodifikasi header respons dan Kasus penggunaan 8: Memodifikasi header respons berdasarkan kode status.

Hapus header

Saat diterapkan pada aturan respons, aksi ini menghapus header dari respons. Kode berikut memberikan contohnya.

alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type: Jenis aksi pengalihan. Tetapkan ke RemoveHeader untuk menghapus header respons.

key: Nama field header yang akan dihapus.

Kasus penggunaan 1: Menetapkan respons tetap

Konsol

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Network > Ingresses.

  3. Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.

    Parameter

    Deskripsi

    Contoh

    Jenis Gateway

    Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress berdasarkan kebutuhan bisnis Anda.

    Untuk informasi selengkapnya tentang perbedaan ketiga jenis gateway tersebut, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.

    ALB Ingress

    Nama

    Nama kustom untuk ingress.

    ingress

    Kelas Ingress

    Nama Kelas Ingress terkait.

    alb

    Aturan

    Klik + Add Rule untuk menambahkan aturan routing.

    • Host: Host kustom.

    • Mappings: Konfigurasikan parameter berikut.

      • Path: mengarahkan permintaan berdasarkan path URL.

      • Match type:

        • Prefix match: mencocokkan awalan path URL permintaan.

        • Exact match: melakukan pencocokan eksak pada path URL permintaan.

        • ImplementationSpecific (Default Value): Perilaku tergantung pada implementasi controller Ingress. Untuk ALB Ingress, ini secara default menggunakan pencocokan eksak.

      • Service: Pilih layanan target, yaitu Layanan Kubernetes.

      • Port: Pilih port yang diekspos oleh layanan.

    • Ingress mendukung beberapa path di bawah host yang sama. Klik + Add untuk menambahkan path.

    • Host: Biarkan kosong.

    • Pemetaan:

      • Path: /

      • Jenis pencocokan: Pencocokan awalan

      • Layanan: response-503

      • Port: 80

    Aturan Pengalihan Kustom

    Konfigurasikan aturan pengalihan kustom untuk manajemen traffic detail halus.

    Catatan

    Aturan pengalihan dapat memiliki maksimal 10 kondisi.

    • Dari daftar drop-down Add Condition, pilih opsi.

      • Host:

        Mencocokkan host permintaan. Jika Anda menentukan beberapa host, mereka dievaluasi menggunakan logika OR. Setelah diatur, anotasi alb.ingress.kubernetes.io/conditions.host-example ditambahkan.

      • Path:

        Mencocokkan path permintaan. Jika Anda menentukan beberapa path, mereka dievaluasi menggunakan logika OR. Setelah diatur, anotasi alb.ingress.kubernetes.io/conditions.path-example ditambahkan.

      • HTTP Header:

        Mencocokkan informasi header permintaan sebagai pasangan kunci-nilai. Misalnya, atur Key ke headername dan Value ke headervalue1. Jika Anda menentukan beberapa nilai header, mereka dievaluasi menggunakan logika OR. Setelah diatur, anotasi alb.ingress.kubernetes.io/conditions.http-header-example ditambahkan.

    • Dari daftar drop-down Action, pilih opsi.

      Return Fixed Response

      Mengembalikan respons tetap ke client melalui ALB. Anda dapat mengonfigurasi kode status respons, konten, dan tipe konten. Konfigurasikan Response Status Code, Response Content Type (Optional), dan Response Content (Optional) sesuai kebutuhan.

      Tipe Konten Respons:

      • text/plain: tipe konten teks biasa.

      • text/css: tipe konten CSS.

      • text/html: tipe konten HTML.

      • application/javascript: tipe konten JavaScript.

      • application/json: tipe konten JSON.

    • Tambah Kondisi: Pilih Path. (Pertahankan nilai default)

    • Aksi: Kembalikan Respons Tetap

      • Kode Status Respons: 503

      • Tipe Konten Respons (Opsional): text/plain

      • Konten Respons (Opsional): error

    Pertahankan nilai default untuk parameter lainnya.

  4. Setelah menyelesaikan konfigurasi, klik OK.

Kubectl

YAML berikut menunjukkan contoh cara mengembalikan kode status 503 dan teks 503 error text saat permintaan dibuat ke layanan.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
      [{
          "type": "FixedResponse",
          "FixedResponseConfig": {
              "contentType": "text/plain",
              "httpCode": "503",
              "content": "503 error text"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: service-name  # Catatan: Nama layanan backend harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
                port:
                  name: use-annotation # Nama port layanan harus diatur ke use-annotation.

Kasus penggunaan 2: Menggunakan pengalihan 301

Contoh YAML berikut menunjukkan cara mengalihkan permintaan ke port HTTPS layanan.

Pengalihan

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.redirect: | # Catatan: "redirect" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "demo.domain.ingress.top",
              "path": "/test",
              "port": "443",
              "protocol": "https",
              "query": "querystring",
              "httpCode": "301"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redirect # Catatan: Nama layanan backend harus sesuai dengan "redirect" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
                port:
                  name: use-annotation # Nama port layanan harus diatur ke use-annotation.

Pengalihan ganda

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/listen-ports: |
     [{"HTTP": 8001}]
    alb.ingress.kubernetes.io/actions.redirect-1: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "demo.domain.ingress.top",
              "path": "/test",
              "port": "443",
              "protocol": "https",
              "query": "querystring",
              "httpCode": "301"
          }
      }]
    alb.ingress.kubernetes.io/actions.redirect-2: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "demo.domain.ingress.top",
              "path": "/test",
              "port": "443",
              "protocol": "https",
              "httpCode": "301"
          }
      }]
spec:
  ingressClassName: ml-test-ingressclass-rolechain-2
  rules:
    - http:
        paths:
          - path: /foo
            pathType: Prefix
            backend:
              service:
                name: redirect-1
                port:
                  name: use-annotation 
          - path: /bar
            pathType: Prefix
            backend:
              service:
                name: redirect-2
                port:
                  name: use-annotation

Kasus penggunaan 3: Menyisipkan header permintaan

Contoh YAML berikut menunjukkan cara menambahkan atau menimpa header permintaan menjadi source: alibaba.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.insert-header: | # Catatan: "insert-header" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
      [{
          "type": "InsertHeader",
          "InsertHeaderConfig": {
              "key": "source",
              "value": "alibaba",
              "valueType": "UserDefined"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: insert-header # Catatan: Nama layanan backend harus sesuai dengan "insert-header" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
                port:
                  number: 80

Kasus penggunaan 4: Mencerminkan traffic

YAML berikut menunjukkan contoh cara mencerminkan traffic ke grup server.

Masuk ke Konsol Application Load Balancer (ALB). Di panel navigasi kiri, pilih Application Load Balancer > Server Groups. Di halaman Server Groups, peroleh ID grup server.服务器组

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traffic-mirror-ingress
  annotations:
  # mirror-svc harus salah satu dari nama backend.service yang ditentukan di bawah ini.
  # Ingress ALB mencerminkan traffic yang diteruskan ke mirror-svc ke server backend yang ditentukan oleh "ServerGroupID".
  # Untuk mengonfigurasi pencerminan traffic untuk beberapa layanan, tambahkan anotasi terpisah untuk setiap layanan.
   alb.ingress.kubernetes.io/actions.mirror-svc: | # Catatan: "mirror-svc" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
       [{
           "type": "TrafficMirror",
           "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /test
        pathType: Prefix
        backend:
          service:
            name: mirror-svc # Catatan: Nama layanan backend harus sesuai dengan "mirror-svc" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
            port:
              number: 80

Kasus penggunaan 5: Meneruskan ke beberapa grup server

Konsol

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Network > Ingresses.

  3. Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.

    Parameter

    Deskripsi

    Contoh

    Jenis Gateway

    Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress berdasarkan kebutuhan bisnis Anda.

    Untuk informasi selengkapnya tentang perbedaan ketiga jenis gateway tersebut, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.

    ALB Ingress

    Nama

    Nama kustom untuk ingress.

    forward-ingress

    Kelas Ingress

    Nama Kelas Ingress terkait.

    alb

    Aturan

    Klik + Add Rule untuk menambahkan aturan routing.

    • Host: Host kustom.

    • Mappings: Konfigurasikan parameter berikut.

      • Path: mengarahkan permintaan berdasarkan path URL.

      • Match type:

        • Prefix match: mencocokkan awalan path URL permintaan.

        • Exact match: melakukan pencocokan eksak pada path URL permintaan.

        • ImplementationSpecific (Default Value): tergantung pada logika yang diimplementasikan oleh controller Ingress. ALB Ingress menggunakan logika pencocokan eksak.

      • Service: Pilih layanan target, yaitu Layanan Kubernetes.

      • Port: Pilih port yang diekspos oleh layanan.

    • Ingress mendukung beberapa path di bawah host yang sama. Klik + Add untuk menambahkan path.

    • Host: demo.domain.ingress.top

    • Pemetaan:

      • Path: /path

      • Jenis pencocokan: Pencocokan awalan

      • Layanan: Forward

      • Port: 80

    Aturan Pengalihan Kustom

    Aktifkan aturan pengalihan kustom untuk mengelola traffic masuk dengan kontrol detail halus.

    Catatan

    Aturan pengalihan dapat memiliki maksimal 10 kondisi.

    • Dari daftar drop-down Add Condition, pilih opsi.

      • Host:

        Mencocokkan host permintaan. Jika Anda menentukan beberapa host, mereka dievaluasi menggunakan logika OR. Setelah diatur, anotasi alb.ingress.kubernetes.io/conditions.host-example ditambahkan.

      • Path:

        Mencocokkan path permintaan. Jika Anda menentukan beberapa path, mereka dievaluasi menggunakan logika OR. Setelah diatur, anotasi alb.ingress.kubernetes.io/conditions.path-example ditambahkan.

      • HTTP Header:

        Mencocokkan informasi header permintaan sebagai pasangan kunci-nilai. Misalnya, atur Key ke headername dan Value ke headervalue1. Jika Anda menentukan beberapa nilai header, mereka dievaluasi menggunakan logika OR. Setelah diatur, anotasi alb.ingress.kubernetes.io/conditions.http-header-example ditambahkan.

    • Dari daftar drop-down Action, pilih opsi.

      Forward To

      Meneruskan permintaan ke beberapa grup server backend. Di field Service Name, pilih layanan target. Di field Port, pilih nomor port target. Lalu, konfigurasikan nilai bobot kustom.

      Catatan
      • Layanan ClusterIP tidak didukung untuk kluster yang menggunakan plug-in jaringan Flannel.

      • Saat Anda memilih Forward To, Anda tidak perlu mengonfigurasi pemetaan path dalam aturan.

    • Tambah Kondisi: Pilih Host. Host: demo.domain.ingress.top

    • Aksi: Teruskan Ke

      • Nama Layanan: tea-svc

      • Port: 80

      • Konfigurasikan bobot: 80

    • Tambah Layanan

      • Nama Layanan: coffee-svc

      • Port: 80

      • Konfigurasikan bobot: 20

    Pertahankan nilai default untuk parameter lainnya.

  4. Setelah menyelesaikan konfigurasi, klik OK di pojok kiri bawah halaman Create Ingress.

Kubectl

YAML berikut menunjukkan contoh cara meneruskan permintaan ke beberapa layanan dalam kluster.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: forward-ingress
  annotations:
  # Layanan dalam anotasi harus ada di kluster, dan namanya harus sesuai dengan nama layanan di bawah backend dalam field rule.
    alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
       [{
           "type": "ForwardGroup",
           "ForwardConfig": {
             "ServerGroups" : [{
               "ServiceName": "tea-svc",
               "Weight": 80,
               "ServicePort": 80
             },
             {
               "ServiceName": "coffee-svc",
               "Weight": 20,
               "ServicePort": 80
             }]
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /path
        pathType: Prefix
        backend:
          service:
            name: service-name # Catatan: Nama layanan backend harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
            port:
              name: use-annotation # Nama port layanan harus diatur ke use-annotation.

Kasus penggunaan 6: Menulis ulang permintaan

Rewrite memodifikasi URL permintaan sebelum diteruskan ke backend. Ingress ALB dapat mengubah host, path, dan string kueri, yang berguna untuk menyederhanakan URL, melakukan pengalihan transparan bagi client, dan menyembunyikan detail implementasi backend. Pada contoh berikut, rewrite dikonfigurasi menggunakan anotasi alb.ingress.kubernetes.io/actions.service-name.

Misalnya, jika client mengakses https://example.com/api/users, rewrite mengubah URL menjadi https://example.org/users tetapi mempertahankan string kueri aslinya.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/actions.service-name: | # "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "example.org", 
               "Path": "/users", 
               "Query": "${query}" # ${query} menunjukkan bahwa string kueri permintaan asli digunakan. 
           }
       }]
spec:
  ingressClassName: alb
  rules:
    - host: example.com
      http:
        paths:
          - path: /api/users
            pathType: ImplementationSpecific
            backend:
              service:
                name: service-name # Nama layanan backend harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
                port: 
                  number: 80

Kasus penggunaan 7: Memodifikasi header respons

Penting
  • Secara default, aturan pengalihan Ingress ALB berlaku untuk permintaan. Untuk menerapkan aturan pada respons, Anda harus menetapkan anotasi alb.ingress.kubernetes.io/rule-direction.<service-name> ke Response.

  • Saat membuat aturan pengalihan untuk respons, Anda harus menetapkan backend.service.port.name ke use-annotation.

Blok kode berikut mendefinisikan bahwa ketika ResponseHeader dicocokkan—artinya header berisi response-hello dengan nilai value1 atau value2—header permintaan baru source: alibaba disisipkan.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-header: Response
   alb.ingress.kubernetes.io/conditions.response-header: | # Catatan: "response-header" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan berlaku untuk layanan backend tersebut.
     [{
         "type": "ResponseHeader",
         "responseHeaderConfig": {
            "key": "response-hello",
            "values": [
               "value1",
               "value2"
            ]
         }
     }]
   alb.ingress.kubernetes.io/actions.response-header: | # Catatan: "response-header" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
     [{
         "type": "InsertHeader",
         "InsertHeaderConfig": {
             "key": "source",
             "value": "alibaba",
             "valueType": "UserDefined"
         }
     }]
  name: response-header
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-header # Catatan: Nama layanan backend harus sesuai dengan "response-header" dalam anotasi kondisi dan aksi pengalihan kustom. Kondisi dan aksi yang dikonfigurasi berlaku untuk layanan backend ini.
            port:
              name: use-annotation # Nama port layanan harus diatur ke use-annotation.

Kasus penggunaan 8: Memodifikasi header respons berdasarkan kode status

Penting
  • Secara default, aturan pengalihan Ingress ALB berlaku untuk permintaan. Untuk menerapkan aturan pada respons, Anda harus menetapkan anotasi alb.ingress.kubernetes.io/rule-direction.<service-name> ke Response.

  • Saat membuat aturan pengalihan untuk respons, Anda harus menetapkan backend.service.port.name ke use-annotation.

Contoh YAML berikut menghapus header response-hello dari respons jika kode status respons adalah 200 atau 300.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-hello: Response
   alb.ingress.kubernetes.io/conditions.response-hello: | # Catatan: "response-hello" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan berlaku untuk layanan backend tersebut.
     [{
       "type": "ResponseStatusCode",
       "responseStatusCodeConfig": {
         "values": [
             "200",
             "300"
         ]
       }
     }]
   alb.ingress.kubernetes.io/actions.response-hello: | # Catatan: "response-hello" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "response-hello"
         }
     }]
  name: response-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-hello # Catatan: Nama layanan backend harus sesuai dengan "response-hello" dalam anotasi kondisi dan aksi pengalihan kustom. Kondisi dan aksi yang dikonfigurasi berlaku untuk layanan backend ini.
            port:
              name: use-annotation # Nama port layanan harus diatur ke use-annotation.

Kondisi dan aksi pengalihan

Kasus penggunaan 1: Mengarahkan traffic berdasarkan nama domain

Bagian ini menjelaskan cara mengonfigurasi kondisi dan aksi pengalihan berdasarkan nama domain di Konsol ACK untuk mengarahkan traffic ke layanan tertentu.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Network > Ingresses.

  3. Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.

    Parameter

    Deskripsi

    Contoh

    Gateway type

    Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress berdasarkan kebutuhan bisnis Anda.

    Untuk informasi selengkapnya tentang perbedaan ketiga jenis gateway tersebut, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.

    ALB Ingress

    Name

    Nama kustom untuk ingress.

    alb_ingress

    Ingress Class

    Nama IngressClass terkait.

    alb

    Rules

    Klik + Add Rule untuk menambahkan satu atau beberapa aturan routing.

    • Domain name: Nama domain kustom.

    • Mappings: Konfigurasikan parameter berikut.

      • Path: Path URL untuk pencocokan permintaan.

      • Rule:

        • Prefix (prefix match): Mencocokkan awalan path URL permintaan.

        • Exact (exact match): Mencocokkan secara eksak path URL permintaan.

        • ImplementationSpecific (Default): Perilaku tergantung pada implementasi controller Ingress. Untuk ALB Ingress, opsi ini berfungsi sebagai pencocokan eksak.

      • Service name: Pilih layanan target, yaitu Layanan Kubernetes.

      • Port: Pilih port yang diekspos oleh layanan.

    • Ingress mendukung beberapa path di bawah nama domain yang sama. Klik + Add Path untuk menambahkan path lainnya.

    • Domain name: *.example.com

    • Mappings:

      • Path: /tes

      • Rule: ImplementationSpecific

      • Service name: tea-svc

      • Port: 80

    Custom forwarding rules

    Definisikan aturan pengalihan kustom untuk kontrol detail halus atas traffic masuk.

    Catatan

    Aturan pengalihan dapat memiliki maksimal 10 kondisi.

    • Dari daftar drop-down Condition, pilih opsi.

      • Domain name:

        Mencocokkan nama domain permintaan. Jika Anda menentukan beberapa nama domain, mereka dievaluasi menggunakan logika OR. Saat kondisi ini diatur, anotasialb.ingress.kubernetes.io/conditions.host-example ditambahkan.

      • Path:

        Mencocokkan path permintaan. Jika Anda menentukan beberapa path, mereka dievaluasi menggunakan logika OR. Saat kondisi ini diatur, anotasialb.ingress.kubernetes.io/conditions.path-example ditambahkan.

        Penting

        Saat Anda mengonfigurasi kondisi pengalihan path, konsol secara otomatis menambahkan aturan pengalihan dengan path/created-by-<ALB-ID> ke Ingress.

      • HTTP header:

        Mencocokkan pasangan kunci-nilai yang ditentukan dalam header permintaan. Misalnya, atur Key keheadername dan Value keheadervalue1. Jika Anda menentukan beberapa nilai header, mereka dievaluasi menggunakan logika OR. Saat kondisi ini diatur, anotasialb.ingress.kubernetes.io/conditions.http-header-example ditambahkan.

    • Dari daftar drop-down Action, pilih opsi.

      • Forward to

        Meneruskan permintaan ke beberapa grup server backend. Di field Service name, pilih layanan target. Di field Port, pilih port target. Lalu, konfigurasikan bobot.

        Catatan

    • Condition: Pilih Domain Name, Path, dan HTTP Header.

      • Domain name: example.com. Klik Add domain name untuk menambahkan nama domain lain, seperti test.com.

    • Action: Pilih Forward to.

      • Service name: tea-svc

      • Port: 80

      • Weight: 100

    Pertahankan nilai default untuk parameter lainnya.

  4. Konfigurasi selesai. Di pojok kiri bawah halaman Create Ingress, klik OK.