全部产品
Search
文档中心

Container Service for Kubernetes:Menyesuaikan aturan pengalihan untuk Ingress ALB menggunakan konsol atau anotasi

更新时间:Nov 11, 2025

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 dapat menentukan aksi pengalihan seperti mengembalikan respons tetap, melakukan pengalihan, menyisipkan atau menghapus header permintaan, mencerminkan lalu lintas, meneruskan permintaan ke beberapa kelompok server backend, atau menulis ulang permintaan. Aturan pengalihan kustom ini dapat dikonfigurasi melalui konsol atau dengan menambahkan anotasi ke sumber daya Ingress.

Indeks skenario

Aturan kustom

Skenario

Kondisi pengalihan

Aksi pengalihan

Praktik dengan kondisi dan aksi pengalihan

Skema 1: Meneruskan lalu lintas ke layanan tertentu berdasarkan kondisi dan aksi nama domain

Prasyarat

Komponen ALB Ingress Controller telah diinstal dengan versi minimal v2.5.0. Untuk informasi selengkapnya, lihat Mengelola komponen.

Kondisi pengalihan

Penting
  • Satu aturan pengalihan dapat memiliki maksimal 10 kondisi.

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

Pengantar kondisi pengalihan

Anda dapat mengonfigurasi kondisi penerusan dalam anotasi alb.ingress.kubernetes.io/conditions.<service-name> untuk ALB Ingress. Blok-blok kondisi yang berbeda digabungkan menggunakan operator logika AND, sedangkan nilai-nilai dalam satu blok kondisi yang sama digabungkan menggunakan operator logika OR. Sebagai contoh, jika Anda mengonfigurasi dua blok kondisi Header yang berbeda, keduanya digabungkan dengan operator logika AND. Namun, nilai-nilai yang ditentukan dalam satu blok kondisi Header digabungkan dengan operator logika OR. Tabel berikut menjelaskan kondisi penerusan tersebut.

Kondisi pengalihan

Deskripsi

Nama domain

Mencocokkan nama domain permintaan. Hanya permintaan dengan nama domain yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.

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

  • HostConfig: Nama domain spesifik untuk dicocokkan. Jika Anda menentukan beberapa nama domain, hubungan antar nama tersebut adalah OR.

Path

Mencocokkan path permintaan. Hanya permintaan dengan path yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.

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

  • pathConfig: Path spesifik untuk dicocokkan. Jika Anda menentukan beberapa path, hubungan antar path tersebut adalah OR.

Header

Mencocokkan header permintaan. Hanya permintaan dengan header yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.

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

  • headerConfig: Pasangan kunci-nilai header. Jika Anda menentukan beberapa nilai header, hubungan antar nilai tersebut adalah OR.

String kueri

Mencocokkan string kueri. Hanya permintaan yang berisi string kueri yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.

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

  • queryStringConfig: Pasangan kunci-nilai string kueri. Kunci dapat memiliki panjang 1 hingga 100 karakter. Nilai dapat memiliki panjang 1 hingga 100 karakter. Kunci dan nilai dapat berisi huruf kecil, karakter terlihat, serta karakter wildcard tanda bintang (*) dan tanda tanya (?). Kunci dan nilai tidak boleh berisi spasi atau karakter berikut: #[]{}\|<>&. Jika Anda menentukan beberapa string kueri, hubungan antar string tersebut adalah OR.

Metode permintaan

Mencocokkan metode permintaan. Hanya permintaan dengan metode yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.

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

  • methodConfig: Metode permintaan spesifik. Nilai yang valid adalah GET, POST, PUT, DELETE, HEAD, OPTIONS, dan PATCH. Jika Anda menentukan beberapa metode permintaan, hubungan antar metode tersebut adalah OR.

Cookie

Mencocokkan cookie. Hanya permintaan yang berisi cookie yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.

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

  • cookieConfig: Pasangan kunci-nilai cookie. Kunci dapat memiliki panjang 1 hingga 100 karakter. Nilai dapat memiliki panjang 1 hingga 100 karakter. Kunci dan nilai dapat berisi huruf kecil, karakter terlihat, serta karakter wildcard tanda bintang (*) dan tanda tanya (?). Kunci dan nilai tidak boleh berisi spasi atau karakter berikut: #[]{}\|<>&. Jika Anda menentukan beberapa cookie, hubungan antar cookie tersebut adalah OR.

IP sumber

Mencocokkan alamat IP sumber permintaan. Hanya permintaan dari alamat IP sumber yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.

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

  • sourceIpConfig: Alamat IP permintaan. Jika Anda menentukan beberapa alamat IP, hubungan antar alamat tersebut adalah OR.

ResponseHeader

Mencocokkan header respons. Aksi pengalihan hanya dilakukan pada respons yang membawa header yang cocok. Perhatikan bahwa ini harus digunakan bersama aksi pengalihan respons dan anotasi alb.ingress.kubernetes.io/rule-direction.<service-name>: Response. Kode berikut memberikan contoh.

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

  • headerConfig: Pasangan kunci-nilai header. Jika Anda menentukan beberapa nilai header, hubungan antar nilai tersebut adalah OR.

ResponseStatusCode

Mencocokkan kode status respons. Hanya respons yang mengembalikan kode status yang cocok yang dapat mengakses layanan. Perhatikan bahwa ini harus digunakan bersama aksi pengalihan respons dan anotasi alb.ingress.kubernetes.io/rule-direction.<service-name>: Response. Kode berikut memberikan contoh.

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

  • responseStatusCodeConfig: Kode status respons spesifik. Jika Anda menentukan beberapa kode status respons, hubungan antar kode tersebut adalah OR.

Skema 1: Mendistribusikan lalu lintas berdasarkan IP sumber dan header

Penting

Anda dapat menentukan maksimal lima alamat IP sumber untuk kondisi kustom aturan pengalihan.

Blok kode berikut menentukan aturan yang meneruskan lalu lintas ke target hanya jika IP sumber, header, dan path permintaan sesuai konfigurasi.

Jika alamat IP sumber permintaan berada dalam blok CIDR 192.168.0.0/16 atau 172.16.0.0/16, header permintaan berisi gray-hello dengan nilai value1 atau value2, dan path permintaan adalah /hello, permintaan diteruskan ke layanan gray-hello-svc. Jika tidak, permintaan diteruskan 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: | # Catatan: "gray-hello-svc" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
       "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 # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "gray-hello-svc" dalam anotasi kondisi pengalihan kustom. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
            port:
              number: 88

alb.ingress.kubernetes.io/order: Menentukan prioritas Ingress. Angka yang lebih kecil menunjukkan prioritas yang lebih tinggi.

Skema 2: Mendistribusikan lalu lintas berdasarkan nama domain, metode permintaan, dan cookie

Blok kode berikut menentukan aturan yang meneruskan lalu lintas ke target hanya jika nama domain, metode permintaan, dan cookie permintaan sesuai konfigurasi.

Jika metode permintaan adalah GET atau HEAD, nama domain permintaan adalah example.com atau *.edu, cookie permintaan memiliki kunci cookiekey1 dengan nilai cookievalue1, dan path permintaan adalah /test, permintaan diteruskan ke layanan service-a. Jika tidak, permintaan diteruskan ke layanan service-b.

Catatan

Aturan pengalihan berdasarkan nama domain mendukung nama domain wildcard.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: | # Catatan: "service-a" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
       "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 # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "service-a" dalam anotasi kondisi pengalihan kustom. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

Skema 3: Mendistribusikan lalu lintas berdasarkan string kueri, beberapa header, dan beberapa path

Blok kode berikut menentukan aturan yang meneruskan lalu lintas ke target hanya jika string kueri, header, dan path permintaan sesuai konfigurasi.

Jika path permintaan adalah /pathvalue1, /pathvalue2, atau /test, string kueri memiliki kunci querystringkey1 dengan nilai querystringvalue2, header permintaan berisi kedua header headerkey1 dan headerkey2, header headerkey1 memiliki nilai headervalue1 atau headervalue2, dan header headerkey2 memiliki nilai headervalue3 atau headervalue4, permintaan diteruskan ke layanan service-a. Jika tidak, permintaan diteruskan ke layanan service-b.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: | # Catatan: "service-a" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
       "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 # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "service-a" dalam anotasi kondisi pengalihan kustom. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

Aksi pengalihan

Pengantar aksi pengalihan

Anda dapat mengonfigurasi aksi pengalihan untuk permintaan dan respons menggunakan anotasi alb.ingress.kubernetes.io/actions.<service-name>. Aksi yang didukung mencakup mengembalikan respons tetap, melakukan pengalihan, menyisipkan atau menghapus header permintaan, mencerminkan lalu lintas, meneruskan permintaan ke beberapa kelompok server backend, serta menulis ulang permintaan.

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

  • Dalam satu aturan pengalihan, hanya satu aksi pengalihan terminal—seperti pengalihan, respons tetap, atau penerusan ke beberapa kelompok server—yang dapat digunakan.

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

Aksi pengalihan permintaan

Aksi pengalihan

Deskripsi

Respons tetap

Mengembalikan respons tetap kepada klien melalui ALB. Anda dapat mengatur kode status respons, konten, dan tipe konten. Kode berikut memberikan contoh.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
  [{
      "type": "FixedResponse",
      "FixedResponseConfig": {
          "contentType": "text/plain",
          "httpCode": "503",
          "content": "503 error text"
      }
  }]
  • type: Jenis aksi pengalihan. Tetapkan ke FixedResponse untuk mengonfigurasi respons tetap.

  • contentType: Tipe konten badan respons.

  • httpCode: Kode status respons.

  • content: Badan respons.

Pengalihan

Menggunakan kode status HTTP 3xx untuk mengarahkan klien ke alamat lain untuk mengakses layanan. Kode berikut memberikan contoh.

Penting

Kecuali untuk httpCode, parameter pengalihan lainnya tidak boleh semuanya diatur ke nilai default.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
  [{
      "type": "Redirect",
      "RedirectConfig": {
          "host": "${host}",
          "path": "${path}",
          "port": "443",
          "protocol": "${protocol}",
          "query": "${query}",
          "httpCode": "301"
      }
  }]
  • type: Jenis aksi pengalihan. Tetapkan ke Redirect untuk mengonfigurasi pengalihan.

  • host: Nama domain tujuan pengalihan permintaan.

  • path: Path tujuan pengalihan permintaan.

  • port: Port tujuan pengalihan permintaan.

  • protocol: Protokol tujuan pengalihan permintaan.

  • query: String kueri tujuan pengalihan permintaan.

  • httpCode: Kode status.

Pencerminan lalu lintas

Menyetel ID kelompok server untuk pencerminan lalu lintas. Ini menyalin permintaan dan meneruskannya ke kelompok server pencerminan lalu lintas. Kode berikut memberikan contoh.

Penting
  • Aksi pencerminan lalu lintas hanya dapat digunakan bersama penerusan, penyisipan header, penghapusan header, dan pembatasan lalu lintas. Aksi ini tidak dapat digunakan bersama penulisan ulang, respons tetap, atau pengalihan.

  • Kelompok server pencerminan lalu lintas hanya dapat disambungkan menggunakan ServerGroupID.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
      [{
          "type": "TrafficMirror",
          "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
      }]
  • type: Jenis aksi pengalihan. Tetapkan ke TrafficMirror untuk mengonfigurasi pencerminan lalu lintas.

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

  • ServerGroupID: ID kelompok server pencerminan lalu lintas.

Meneruskan ke beberapa kelompok server backend

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

Penting
  • Instans ALB Edisi Standar dapat disambungkan ke maksimal lima kelompok server.

  • Jika Anda menyambungkan kelompok server menggunakan ServerGroupID dan ServiceName+ServicePort, kelompok server backend dicocokkan berdasarkan ServerGroupID dengan prioritas.

  • Setelah Anda mengaktifkan persistensi sesi antar kelompok server, ALB Ingress 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
       [{
           "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 kelompok server backend.

  • ForwardConfig: Parameter spesifik untuk kelompok server backend penerusan. Jika Anda menyetel beberapa kelompok server, permintaan diteruskan ke setiap kelompok server berdasarkan bobotnya.

  • ServerGroupID: ID kelompok server.

  • ServiceName: Nama layanan.

  • ServicePort: Port layanan.

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

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

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

Menulis ulang

Mengaktifkan fitur penulisan ulang untuk ALB, yang menimpa nama domain, path, dan string kueri permintaan. Kode berikut memberikan contoh.

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

  • Aksi penulisan ulang tidak dapat digunakan bersama aksi pengalihan 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "querystring"
           }
       }]
  • type: Jenis aksi pengalihan. Ketika diatur ke Rewrite, ini menunjukkan bahwa ALB saat ini mendukung fitur penulisan ulang.

  • RewriteConfig: Parameter spesifik untuk penulisan ulang.

  • Host: Nama domain spesifik untuk dicocokkan dalam penulisan ulang.

  • Path: Path spesifik untuk dicocokkan dalam penulisan ulang.

  • Query: String kueri spesifik untuk dicocokkan dalam penulisan ulang.

Untuk informasi selengkapnya tentang aturan penulisan ulang, lihat Dukungan untuk penulisan ulang.

Menyisipkan header permintaan

Menyetel nama bidang header dan kontennya. Ini menimpa variabel header yang ada dalam permintaan. Kode berikut memberikan contoh.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: Jenis aksi pengalihan. Tetapkan ke InsertHeader untuk mengonfigurasi penyisipan header permintaan.

  • key: Nama bidang header permintaan.

  • value: Konten bidang header permintaan.

  • valueType: Jenis nilai.

Menghapus header permintaan

Menghapus nama bidang header dan kontennya. Kode berikut memberikan contoh.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

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

key: Nama bidang header permintaan.

Pembatasan QPS

Saat menyetel aturan pengalihan untuk ALB, Anda dapat mengonfigurasi batas laju permintaan keseluruhan dan batas laju permintaan berdasarkan IP sumber klien.

Kode berikut memberikan contoh konfigurasi:

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

  • Saat header permintaan X-Forwarded-For berisi beberapa alamat IP, seperti X-Forwarded-For: <alamat-ip-klien>, <proxy1>, <proxy2>, ..., alamat paling kiri adalah IP klien sebenarnya. Untuk menggunakan pembatasan berdasarkan IP sumber klien, Anda harus mengaktifkan fitur untuk menemukan IP sumber klien sebenarnya pada pendengar. Hal ini memungkinkan ALB menemukan IP sumber klien sebenarnya dari bidang 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
      [{
          "type": "TrafficLimit",
          "TrafficLimitConfig": {
              "QPS": "1000",
              "QPSPerIp": "100"
          }
      }]
  • type: Menentukan jenis aksi pengalihan. Di sini, diatur ke TrafficLimit, yang menunjukkan konfigurasi pembatasan.

  • QPS: Batas laju permintaan keseluruhan, yaitu jumlah permintaan yang dapat diproses per detik. Nilainya harus berada dalam rentang [1, 1000000]. Jika laju permintaan melebihi batas yang ditentukan, permintaan koneksi baru yang melebihi batas akan ditolak, dan klien menerima kode status HTTP 503.

  • QPSPerIp: Batas laju permintaan berdasarkan setiap IP sumber klien. Nilainya harus berada dalam rentang [1, 1000000]. Jika QPS (batas keseluruhan) dan QPSPerIp (batas berdasarkan IP sumber klien) keduanya diatur, nilai yang terakhir harus lebih kecil daripada yang pertama. Jika laju permintaan melebihi batas yang ditentukan, permintaan yang melebihi batas akan ditolak, dan klien menerima kode status HTTP 503.

Aksi pengalihan respons

Aksi pengalihan

Deskripsi

Menyisipkan header permintaan

Menyetel nama bidang header dan kontennya. Ini menimpa variabel header yang ada dalam permintaan. Kode berikut memberikan contoh.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: Jenis aksi pengalihan. Tetapkan ke InsertHeader untuk mengonfigurasi penyisipan header permintaan.

  • key: Nama bidang header permintaan.

  • value: Konten bidang header permintaan.

  • valueType: Jenis nilai.

Menghapus header permintaan

Menghapus nama bidang header dan kontennya. Kode berikut memberikan contoh.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

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

key: Nama bidang header permintaan.

Skema 1: Mengatur respons tetap dengan kode status 503 dan konten

Konsol

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

  2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Network > Ingresses.

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

    Item konfigurasi

    Deskripsi

    Contoh

    Jenis Gerbang

    Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress.

    Untuk informasi selengkapnya tentang perbedaan antara jenis gerbang ini, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.

    ALB

    Nama

    Nama kustom Ingress.

    ingress

    Kelas Ingress

    alb

    Aturan

    • Nama Domain: Biarkan kosong

    • Path Mapping:

      • Path: /

      • Aturan Pencocokan: ImplementationSpecific (Prefix)

      • Nama Layanan: response-503

      • Port: 80

    Aturan Pengalihan Kustom

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

    Catatan

    Sebuah aturan pengalihan dapat memiliki maksimal 10 kondisi.

    • Dari daftar drop-down Forwarding Condition, pilih salah satu berikut:

      • Domain Name:

        Mencocokkan nama domain permintaan. Jika Anda menentukan beberapa nama domain, hubungan antar nama tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.host-example ditambahkan.

      • Path:

        Mencocokkan path permintaan. Jika Anda menentukan beberapa path, hubungan antar path tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.path-example ditambahkan.

      • HTTP Header:

        Mencocokkan informasi header permintaan dalam format pasangan kunci-nilai. Misalnya, Key Is: headername dan Value Is: headervalue1. Jika Anda menentukan beberapa nilai header, hubungan antar nilai tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.http-header-example ditambahkan.

    • Dari daftar drop-down Forwarding Action, pilih berikut:

      Return Fixed Response

      Mengembalikan respons tetap kepada klien melalui ALB. Anda dapat mengatur 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: Menunjukkan konten CSS.

      • text/html: Tipe konten HTML.

      • application/javascript: Tipe konten JavaScript.

      • application/json: Tipe konten JSON.

    • Kondisi Pengalihan: Pilih Path. (Pertahankan default)

    • Aksi Pengalihan: Kembalikan Respons Tetap

      • Kode Status Respons: 503

      • Tipe Konten Respons (Opsional): text/plain

      • Konten Respons (Opsional): error

    Pertahankan nilai default untuk konfigurasi lainnya.

  4. Setelah konfigurasi selesai, klik OK.

kubectl

Blok kode 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
      [{
          "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 yang dikonfigurasi di sini harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.service-name. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
                port:
                  name: use-annotation # Nama servicePort harus use-annotation.

Skema 2: Menggunakan kode status HTTP 301 untuk mengalihkan ke port HTTPS

Blok kode berikut menunjukkan contoh 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "${host}",
              "path": "${path}",
              "port": "443",
              "protocol": "https",
              "query": "${query}",
              "httpCode": "301"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redirect # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "redirect" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.redirect. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
                port:
                  name: use-annotation # Nama servicePort harus use-annotation.

Pengalihan ganda

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.redirect-1: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "${host}",
              "path": "${path}",
              "port": "443",
              "protocol": "https",
              "query": "${query}",
              "httpCode": "301"
          }
      }]
    alb.ingress.kubernetes.io/actions.redirect-2: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
          "host": "${host}",
          "path": "${path}",
          "port": "443",
          "protocol": "https",
          "httpCode": "301"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redirect
                port:
                  name: use-annotation # Nama servicePort harus use-annotation.

Skema 3: Menyisipkan header permintaan source: alibaba

Blok kode berikut menunjukkan contoh cara menimpa header permintaan asli dengan source: alibaba saat permintaan dibuat ke layanan.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
      [{
          "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 yang dikonfigurasi di sini harus sesuai dengan "insert-header" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.insert-header. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
                port:
                  number: 80

Skema 4: Mencerminkan lalu lintas ke kelompok server

Blok kode berikut menunjukkan contoh cara mencerminkan permintaan ke kelompok server pencerminan lalu lintas.

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

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traffic-mirror-ingress
  annotations:
  # mirror-svc harus menjadi salah satu backend.services yang dimasukkan di bawah ini.
  # ALB Ingress mencerminkan lalu lintas yang diteruskan ke mirror-svc ke server backend yang ditentukan dalam "ServerGroupID".
  # Untuk mengonfigurasi pencerminan lalu lintas 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
       [{
           "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 yang dikonfigurasi di sini harus sesuai dengan "mirror-svc" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.mirror-svc. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
            port:
              number: 80

Skema 5: Meneruskan permintaan ke beberapa kelompok server backend

Konsol

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

  2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Network > Ingresses.

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

    Item konfigurasi

    Deskripsi

    Contoh

    Jenis Gerbang

    Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress.

    Untuk informasi selengkapnya tentang perbedaan antara jenis gerbang ini, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.

    Application Load Balancer (ALB)

    Nama

    Nama kustom Ingress.

    forward-ingress

    Kelas Ingress

    alb

    Aturan

    • Nama Domain: demo.domain.ingress.top

    • Path Mapping:

      • Path: /path

      • Aturan pencocokan: Pencocokan prefix (default)

      • Nama Layanan: forward

      • Port: 80

    Aturan Pengalihan Kustom

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

    Catatan

    Sebuah aturan pengalihan dapat memiliki maksimal 10 kondisi.

    • Dari daftar drop-down Forwarding Condition, pilih salah satu berikut:

      • Domain Name:

        Mencocokkan nama domain permintaan. Jika Anda menentukan beberapa nama domain, hubungan antar nama tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.host-example ditambahkan.

      • Path:

        Mencocokkan path permintaan. Jika Anda menentukan beberapa path, hubungan antar path tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.path-example ditambahkan.

      • HTTP Header:

        Mencocokkan informasi header permintaan dalam format pasangan kunci-nilai. Misalnya, Key Is: headername dan Value Is: headervalue1. Jika Anda menentukan beberapa nilai header, hubungan antar nilai tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.http-header-example ditambahkan.

    • Dari daftar drop-down Forwarding Action, pilih berikut:

      Forward To

      Meneruskan ke beberapa kelompok server backend. Di Service Name, pilih layanan target. Di Port, pilih nomor port target. Kemudian, konfigurasikan nilai bobot kustom.

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

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

    • Kondisi Pengalihan: Pilih Nama Domain. Nama Domain: demo.domain.ingress.top

    • Aksi Pengalihan: Teruskan ke

      • Nama Layanan: tea-svc

      • Port: 80

      • Konfigurasikan bobot: 80

    • Tambahkan Layanan

      • Nama Layanan: coffee-svc

      • Port: 80

      • Konfigurasikan bobot: 20

    Pertahankan nilai default untuk konfigurasi lainnya.

kubectl

Blok kode 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 bidang 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
       [{
           "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 yang dikonfigurasi di sini harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.service-name. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
            port:
              name: use-annotation # Nama servicePort harus use-annotation.

Skema 6: Menulis ulang konfigurasi permintaan

Blok kode berikut menunjukkan contoh cara menulis ulang nama domain, path, dan string kueri permintaan.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: rewrite-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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "querystring"
           }
       }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: service-name # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.service-name. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
                port: 
                  number: 80

Skema 7: Memodifikasi header permintaan dalam respons berdasarkan ResponseHeader

Penting
  • Secara default, aturan pengalihan Ingress ALB kustom berlaku untuk permintaan. Untuk membuat aturan pengalihan untuk respons, Anda harus menyetel anotasi alb.ingress.kubernetes.io/rule-direction.<service-name> ke Response. Nilai defaultnya adalah Request.

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

Blok kode berikut menunjukkan contoh cara menyisipkan header permintaan baru (source: alibaba) jika kondisi ResponseHeader terpenuhi. Kondisi ini terpenuhi jika header berisi response-hello dengan nilai value1 atau value2.

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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
         "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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
         "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 yang dikonfigurasi di sini harus sesuai dengan "response-header" dalam anotasi kondisi/aksi pengalihan kustom. Kondisi/aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
            port:
              name: use-annotation # Nama servicePort harus use-annotation.

Skema 8: Memodifikasi header permintaan dalam respons berdasarkan kode status respons

Penting
  • Secara default, aturan pengalihan Ingress ALB kustom berlaku untuk permintaan. Untuk membuat aturan pengalihan untuk respons, Anda harus menyetel anotasi alb.ingress.kubernetes.io/rule-direction.<service-name> ke Response. Nilai defaultnya adalah Request.

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

Blok kode berikut menunjukkan contoh cara menghapus header response-hello dari header permintaan 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
       "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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
     [{
         "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 yang dikonfigurasi di sini harus sesuai dengan "response-hello" dalam anotasi kondisi/aksi pengalihan kustom. Kondisi/aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
            port:
              name: use-annotation # Nama servicePort harus use-annotation.

Praktik dengan kondisi dan aksi pengalihan

Skema 1: Meneruskan lalu lintas ke layanan tertentu berdasarkan kondisi dan aksi nama domain

Bagian ini menjelaskan cara meneruskan lalu lintas ke layanan tertentu dengan mengonfigurasi kondisi pengalihan berbasis nama domain dan aksi pengalihan yang sesuai di konsol ACK.

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

  2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Network > Ingresses.

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

    Item konfigurasi

    Deskripsi

    Contoh

    Gateway Type

    Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress.

    Untuk informasi selengkapnya tentang perbedaan antara jenis gerbang ini, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.

    Application Load Balancer (ALB)

    Name

    Nama kustom Ingress.

    alb_ingress

    Ingress Class

    alb

    Rule

    • Domain Name: *.example.com

    • Path Mapping:

      • Path: /tes

      • Match Rule: ImplementationSpecific

      • Service Name: tea-svc

      • Port: 80

    Custom Forwarding Rule

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

    Catatan

    Sebuah aturan pengalihan dapat memiliki maksimal 10 kondisi.

    • Dari daftar drop-down Forwarding Condition, pilih salah satu berikut:

      • Domain Name:

        Mencocokkan nama domain permintaan. Jika Anda menentukan beberapa nama domain, hubungan antar nama tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.host-example ditambahkan.

      • Path:

        Mencocokkan path permintaan. Jika Anda menentukan beberapa path, hubungan antar path tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.path-example ditambahkan.

        Penting

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

      • HTTP Header:

        Mencocokkan informasi header permintaan dalam format pasangan kunci-nilai. Misalnya, Key Is: headername dan Value Is: headervalue1. Jika Anda menentukan beberapa nilai header, hubungan antar nilai tersebut adalah OR. Setelah menyetel ini, anotasi alb.ingress.kubernetes.io/conditions.http-header-example ditambahkan.

    • Dari daftar drop-down Forwarding Action, pilih berikut:

      • Forward To

        Meneruskan ke beberapa kelompok server backend. Di Service Name, pilih layanan target. Di Port, pilih nomor port target. Kemudian, konfigurasikan nilai bobot kustom.

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

        • Saat Anda memilih Forward To, Anda tidak perlu mengonfigurasi Pemetaan Path di aturan.

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

      • Domain Name: adalah example.com. Klik Add Domain Name, atau test.com.

    • Forwarding Action: Pilih Forward To.

      • Service Name: tea-svc

      • Port: 80

      • Weight: 100

    Pertahankan nilai default untuk konfigurasi lainnya.