All Products
Search
Document Center

Container Compute Service:Konfigurasi ALB Ingress tingkat lanjut

Last Updated:Mar 26, 2026

Application Load Balancer (ALB) Ingress adalah objek API Kubernetes yang menyediakan load balancing lapisan 7 untuk akses eksternal ke layanan dalam kluster ACS. Topik ini mencakup konfigurasi ALB Ingress tingkat lanjut, termasuk pengalihan permintaan berbasis domain dan path, pemeriksaan kesehatan, pengalihan HTTPS, rilis canary, dan lainnya.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Referensi cepat anotasi

Semua konfigurasi ALB Ingress menggunakan anotasi Kubernetes. Tabel berikut mencantumkan anotasi yang dibahas dalam topik ini.

AnotasiTipeDefaultVersi klusterBagian
alb.ingress.kubernetes.io/healthcheck-enabled"true" | "false""false"Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthcheck-pathstring"/"Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthcheck-protocol"HTTP" | "TCP""HTTP"Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthcheck-method"HEAD" | "GET""HEAD"Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthcheck-httpcode"http_2xx" | "http_3xx" | "http_4xx" | "http_5xx""http_2xx"Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthcheck-timeout-secondsinteger, 1–3005Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthcheck-interval-secondsinteger, 1–502Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthy-threshold-countinteger, 2–103Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/unhealthy-threshold-countinteger, 2–103Konfigurasikan pemeriksaan kesehatan
alb.ingress.kubernetes.io/ssl-redirect"true" | "false"Alihkan HTTP ke HTTPS
alb.ingress.kubernetes.io/backend-protocol"https" | "grpc"Tetapkan protokol backend
alb.ingress.kubernetes.io/use-regex"true" | "false"Gunakan ekspresi reguler
alb.ingress.kubernetes.io/conditions.<service-name>JSONGunakan ekspresi reguler
alb.ingress.kubernetes.io/rewrite-targetstringKonfigurasikan aturan penulisan ulang
alb.ingress.kubernetes.io/listen-portsJSONKonfigurasikan port pendengar kustom
alb.ingress.kubernetes.io/orderinteger, 1–1.00010Tetapkan prioritas aturan pengalihan
alb.ingress.kubernetes.io/canary"true" | "false"Rilis canary
alb.ingress.kubernetes.io/canary-by-headerstringRilis canary
alb.ingress.kubernetes.io/canary-by-header-valuestringRilis canary
alb.ingress.kubernetes.io/canary-by-cookiestringRilis canary
alb.ingress.kubernetes.io/canary-weightinteger, 0–100Rilis canary
alb.ingress.kubernetes.io/sticky-session"true" | "false""false"Konfigurasikan persistensi sesi
alb.ingress.kubernetes.io/sticky-session-type"Insert" | "Server""Insert"Konfigurasikan persistensi sesi
alb.ingress.kubernetes.io/cookie-timeoutinteger, 1–86.4001000Konfigurasikan persistensi sesi
alb.ingress.kubernetes.io/backend-scheduler"wrr" | "wlc" | "sch" | "uch""wrr"1.19+Tetapkan algoritma penyeimbangan beban
alb.ingress.kubernetes.io/backend-scheduler-uch-valuestring1.19+Tetapkan algoritma penyeimbangan beban
alb.ingress.kubernetes.io/enable-cors"true" | "false"Konfigurasikan CORS
alb.ingress.kubernetes.io/cors-allow-originstring"*"Konfigurasikan CORS
alb.ingress.kubernetes.io/cors-allow-methodsstring"GET, PUT, POST, DELETE, PATCH, OPTIONS"Konfigurasikan CORS
alb.ingress.kubernetes.io/cors-allow-headersstring"DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization"Konfigurasikan CORS
alb.ingress.kubernetes.io/cors-expose-headersstringemptyKonfigurasikan CORS
alb.ingress.kubernetes.io/cors-allow-credentials"true" | "false""true"Konfigurasikan CORS
alb.ingress.kubernetes.io/cors-max-agebilangan bulat, -1–172.800172800Konfigurasikan CORS
alb.ingress.kubernetes.io/backend-keepalive"true" | "false"Aktifkan koneksi persisten backend
alb.ingress.kubernetes.io/traffic-limit-qpsinteger, 1–100.000Konfigurasikan pembatasan kecepatan QPS

Alihkan permintaan berdasarkan nama domain

ALB Ingress mengarahkan permintaan masuk ke layanan berdasarkan bidang host dalam aturan Ingress. Bagian ini menunjukkan cara mengalihkan permintaan menggunakan domain bernama dan tanpa domain.

Alihkan permintaan ke domain bernama

  1. Terapkan manifes berikut untuk membuat Penyebaran, Layanan, dan Ingress. Permintaan ke demo.domain.ingress.top dialihkan ke demo-service.

    apiVersion: v1
    kind: Service
    metadata:
      name: demo-service
      namespace: default
    spec:
      ports:
        - name: port1
          port: 80
          protocol: TCP
          targetPort: 8080
      selector:
        app: demo
      sessionAffinity: None
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: demo
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: demo
      template:
        metadata:
          labels:
            app: demo
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/alb-sample/cafe:v1
              imagePullPolicy: IfNotPresent
              name: demo
              ports:
                - containerPort: 8080
                  protocol: TCP
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: demo
      namespace: default
    spec:
      ingressClassName: alb
      rules:
        - host: demo.domain.ingress.top
          http:
            paths:
              - backend:
                  service:
                    name: demo-service
                    port:
                      number: 80
                path: /hello
                pathType: ImplementationSpecific
  2. Dapatkan alamat instans ALB dengan menjalankan kubectl get ing, lalu kirim permintaan uji. Ganti <ADDRESS> dengan nama domain instans ALB.

    curl -H "host: demo.domain.ingress.top" <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Alihkan permintaan tanpa domain

Atur host ke string kosong untuk mencocokkan permintaan apa pun terlepas dari header Host.

  1. Terapkan manifes Ingress berikut:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: demo
      namespace: default
    spec:
      ingressClassName: alb
      rules:
        - host: ""
          http:
            paths:
              - backend:
                  service:
                    name: demo-service
                    port:
                      number: 80
                path: /hello
  2. Dapatkan alamat instans ALB dengan menjalankan kubectl get ing, lalu kirim permintaan uji. Ganti <ADDRESS> dengan nama domain instans ALB.

    curl <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Alihkan permintaan berdasarkan path URL

Atur bidang pathType untuk mengontrol cara ALB Ingress mencocokkan path URL. Tiga jenis pencocokan didukung: Exact, ImplementationSpecific (default), dan Prefix.

Kebijakan pencocokan URL dapat bertentangan satu sama lain. Ketika terjadi bentrokan, permintaan dicocokkan berdasarkan urutan menurun prioritas kebijakan. Untuk detail selengkapnya, lihat Mengatur prioritas aturan pengalihan.

Perilaku pencocokan path

Mode pencocokanAturanPath URLCocok?
Prefix/(semua path)Ya
Prefix/foo/fooYa
Prefix/foo/foo/Ya
Prefix/aaa/bb/aaa/bbbTidak
Prefix/aaa/bbb/aaa/bbbYa
Prefix/aaa/bbb//aaa/bbbYa — trailing / dalam aturan diabaikan
Prefix/aaa/bbb/aaa/bbb/Ya — trailing / dalam path URL dicocokkan
Prefix/aaa/bbb/aaa/bbb/cccYa — subpath dicocokkan
Prefix/ dan /aaa/aaa/cccYa — mencocokkan awalan /aaa
Prefix/aaa dan //aaa/cccYa — mencocokkan awalan /aaa
Prefix/aaa dan //cccYa — mencocokkan awalan /
Prefix/aaa/cccTidak
Exact atau ImplementationSpecific/foo/fooYa
Exact atau ImplementationSpecific/foo/barTidak
Exact atau ImplementationSpecific/foo/foo/Tidak
Exact atau ImplementationSpecific/foo//fooTidak

Exact

Permintaan harus cocok persis dengan path tersebut.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-path
  namespace: default
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
        - path: /hello
          backend:
            service:
              name: demo-service
              port:
                number: 80
          pathType: Exact

ImplementationSpecific

Dalam ALB Ingress, ImplementationSpecific berperilaku identik dengan Exact.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-path
  namespace: default
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
        - path: /hello
          backend:
            service:
              name: demo-service
              port:
                number: 80
          pathType: ImplementationSpecific

Prefix

Prefix melakukan pencocokan case-sensitive pada elemen path yang dipisahkan oleh /. Mengatur path: / akan mencocokkan semua permintaan masuk.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-path-prefix
  namespace: default
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
        - path: /
          backend:
            service:
              name: demo-service
              port:
                number: 80
          pathType: Prefix

Untuk memverifikasi salah satu contoh di atas, jalankan kubectl get ing untuk mendapatkan <ADDRESS>, lalu:

curl <ADDRESS>/hello

Output yang diharapkan:

{"hello":"coffee"}

Konfigurasikan pemeriksaan kesehatan

Tambahkan anotasi pemeriksaan kesehatan ke Ingress agar ALB dapat memeriksa server backend dan secara otomatis menghapus server yang tidak sehat dari rotasi.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    alb.ingress.kubernetes.io/backend-scheduler: "uch"
    alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test"
spec:
  ingressClassName: alb
  rules:
  - host: demo.alb.ingress.top
    http:
      paths:
      - path: /tea
        pathType: ImplementationSpecific
        backend:
          service:
            name: tea-svc
            port:
              number: 80
AnnotationDescription
alb.ingress.kubernetes.io/healthcheck-enabled(Opsional) Aktifkan pemeriksaan kesehatan. Default: false.
alb.ingress.kubernetes.io/healthcheck-path(Opsional) Path URL untuk pemeriksaan kesehatan. Harus diawali dengan / dan terdiri dari 1–80 karakter. URL dapat berisi huruf, angka, tanda hubung (-), garis miring (/), titik (.), tanda persen (%), tanda tanya (?), tanda pagar (#), dan tanda ampersand (&). URL juga dapat berisi karakter tambahan berikut: _ ; ~ ! ( ) * [ ] @ $ ^ : ' , +. Default: /. Secara default, instans ALB mengirim permintaan HTTP HEAD ke halaman utama aplikasi default yang dikonfigurasi pada instans Elastic Compute Service (ECS) backend untuk melakukan pemeriksaan kesehatan. Instans ALB mengirim permintaan tersebut ke Alamat IP pribadi instans ECS. Jika Anda tidak ingin menggunakan halaman utama aplikasi default untuk pemeriksaan kesehatan, Anda harus menentukan path URL tertentu.
alb.ingress.kubernetes.io/healthcheck-protocol

(Opsional) Protokol untuk pemeriksaan kesehatan. HTTP (default): ALB mengirim permintaan HEAD atau GET untuk mensimulasikan akses browser. TCP: ALB mengirim paket TCP SYN untuk memeriksa ketersediaan port.

    alb.ingress.kubernetes.io/healthcheck-method

    (Opsional) Metode HTTP untuk pemeriksaan kesehatan. HEAD (default): gunakan jika backend Anda mendukung permintaan HEAD. GET: gunakan jika HEAD tidak didukung atau dinonaktifkan; tanggapan yang lebih besar dari 8 KB akan difragmentasi tetapi tidak memengaruhi hasil pemeriksaan kesehatan.

      alb.ingress.kubernetes.io/healthcheck-httpcodeKode status yang menunjukkan backend dalam kondisi sehat. Nilai yang valid: http_2xx (default), http_3xx, http_4xx, http_5xx.
      alb.ingress.kubernetes.io/healthcheck-timeout-secondsTimeout untuk satu kali pemeriksaan kesehatan. Jika backend tidak memberikan tanggapan dalam periode ini, pemeriksaan dianggap gagal. Nilai yang valid: 1–300. Default: 5. Satuan: detik.
      alb.ingress.kubernetes.io/healthcheck-interval-secondsInterval antara pemeriksaan kesehatan berturut-turut. Nilai yang valid: 1–50. Default: 2. Satuan: detik.
      alb.ingress.kubernetes.io/healthy-threshold-countJumlah pemeriksaan sukses berturut-turut yang diperlukan sebelum backend yang tidak sehat dianggap sehat. Nilai yang valid: 2–10. Default: 3.
      alb.ingress.kubernetes.io/unhealthy-threshold-countJumlah pemeriksaan gagal berturut-turut yang menyebabkan backend yang sehat dianggap tidak sehat. Nilai yang valid: 2–10. Default: 3.

      Alihkan HTTP ke HTTPS

      Atur alb.ingress.kubernetes.io/ssl-redirect: "true" untuk mengalihkan semua permintaan HTTP ke Port HTTPS 443.

      Penting

      ALB Ingress tidak dapat membuat pendengar secara langsung. Tentukan port dan protokol pendengar dalam objek AlbConfig, lalu kaitkan pendengar tersebut dengan layanan dalam Ingress. Untuk detailnya, lihat Use AlbConfigs to configure ALB listeners.

      apiVersion: v1
      kind: Service
      metadata:
        name: demo-service-ssl
        namespace: default
      spec:
        ports:
          - name: port1
            port: 80
            protocol: TCP
            targetPort: 8080
        selector:
          app: demo-ssl
        sessionAffinity: None
        type: ClusterIP
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: demo-ssl
        namespace: default
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: demo-ssl
        template:
          metadata:
            labels:
              app: demo-ssl
          spec:
            containers:
              - image: registry.cn-hangzhou.aliyuncs.com/alb-sample/cafe:v1
                imagePullPolicy: IfNotPresent
                name: demo-ssl
                ports:
                  - containerPort: 8080
                    protocol: TCP
      ---
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          alb.ingress.kubernetes.io/ssl-redirect: "true"
        name: demo-ssl
        namespace: default
      spec:
        ingressClassName: alb
        tls:
        - hosts:
          - ssl.alb.ingress.top
        rules:
          - host: ssl.alb.ingress.top
            http:
              paths:
                - backend:
                    service:
                      name: demo-service-ssl
                      port:
                        number: 80
                  path: /
                  pathType: Prefix

      Tetapkan protokol backend

      ALB mendukung HTTPS dan gRPC sebagai protokol backend. Atur anotasi alb.ingress.kubernetes.io/backend-protocol menjadi "https" atau "grpc".

      Protokol backend tidak dapat diubah setelah Ingress dibuat. Untuk mengubah protokol, hapus Ingress dan buat ulang.

      Untuk gRPC, domain harus memiliki Sertifikat SSL dan menggunakan TLS. Contoh berikut mengonfigurasi backend gRPC:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          alb.ingress.kubernetes.io/use-regex: "true"
          alb.ingress.kubernetes.io/rewrite-target: /path/${2}
        name: rewrite-ingress
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top
          http:
            paths:
            - path: /something(/|$)(.*)
              pathType: Prefix
              backend:
                service:
                  name: rewrite-svc
                  port:
                    number: 9080

      Gunakan ekspresi reguler

      Atur alb.ingress.kubernetes.io/use-regex: "true" untuk mengaktifkan pencocokan ekspresi reguler dalam bidang path. Gunakan anotasi alb.ingress.kubernetes.io/conditions.<service-name> untuk menentukan kondisi path kustom.

      Layanan yang disebutkan dalam anotasi harus ada dalam kluster dan sesuai dengan nama layanan dalam bidang backend aturan.

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
         alb.ingress.kubernetes.io/use-regex: "true"
         alb.ingress.kubernetes.io/conditions.service-a: |
           [{
             "type": "Path",
             "pathConfig": {
                 "values": [
                    "~*^/pathvalue1",
                    "/pathvalue2"
                 ]
             }
            }]
        name: ingress-example
      spec:
        ingressClassName: alb
        rules:
         - http:
            paths:
            - path: /test
              pathType: Prefix
              backend:
                service:
                  name: service-a
                  port:
                    number: 88
      Pola ekspresi reguler harus menggunakan awalan flag ~* (misalnya, ~*^/pathvalue1). Path pencocokan eksak tidak memerlukan awalan ~*.

      Konfigurasikan aturan penulisan ulang

      Gunakan alb.ingress.kubernetes.io/rewrite-target bersama dengan alb.ingress.kubernetes.io/use-regex: "true" untuk menulis ulang path permintaan sebelum mencapai backend.

      Aturan:

      • Variabel dalam format ${number} harus digunakan pada path yang pathType-nya Prefix.

      • Maksimal tiga variabel grup tangkapan didukung: ${1}, ${2}, dan ${3}.

      • path harus dimulai dengan /.

      • Secara default, * dan ? tidak diperbolehkan dalam bidang path. Aktifkan use-regex untuk menggunakannya.

      Contoh berikut menulis ulang path yang cocok dengan /something(/|$)(.*):

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          alb.ingress.kubernetes.io/use-regex: "true"
          alb.ingress.kubernetes.io/rewrite-target: /path/${2}
        name: rewrite-ingress
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top
          http:
            paths:
            - path: /something(/|$)(.*)
              pathType: Prefix
              backend:
                service:
                  name: rewrite-svc
                  port:
                    number: 9080

      Variabel ${2} menangkap segmen path setelah /something/. Backend menerima path berikut:

      Permintaan klienDiterima backend
      /something/path/
      /something//path/
      /something/new/path/new

      Untuk penulisan ulang multi-grup, pertimbangkan contoh ini: path diatur ke /sys/(.*)/(.*)/aaa dan rewrite-target diatur ke /${1}/${2}. Permintaan ke /sys/ccc/bbb/aaa cocok dengan pola — ${1} diganti dengan ccc dan ${2} dengan bbb — sehingga backend menerima /ccc/bbb.

      Konfigurasikan port pendengar kustom

      Atur alb.ingress.kubernetes.io/listen-ports untuk mengekspos layanan pada beberapa port secara bersamaan — misalnya, HTTP pada port 80 dan HTTPS pada port 443.

      Penting

      ALB Ingress tidak dapat membuat pendengar secara langsung. Tentukan port dan protokol pendengar dalam objek AlbConfig, lalu kaitkan pendengar tersebut dengan layanan dalam Ingress. Untuk detailnya, lihat Use AlbConfigs to configure ALB listeners.

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: cafe-ingress
        annotations:
         alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
      spec:
        ingressClassName: alb
        tls:
        - hosts:
          - demo.alb.ingress.top
        rules:
        - host: demo.alb.ingress.top
          http:
            paths:
            - path: /tea
              pathType: ImplementationSpecific
              backend:
                service:
                  name: tea-svc
                  port:
                    number: 80

      Tetapkan prioritas aturan pengalihan

      Secara default, ALB Ingress memprioritaskan aturan pengalihan sebagai berikut:

      • Ingress diberi peringkat berdasarkan urutan leksikografis namespace/nama. Nilai yang lebih rendah berarti prioritas lebih tinggi.

      • Dalam Ingress yang sama, aturan dicocokkan dari atas ke bawah sesuai urutan kemunculannya dalam bidang rules.

      Untuk mengganti peringkat default tanpa mengganti nama Ingress, gunakan anotasi alb.ingress.kubernetes.io/order.

      Prioritas harus unik dalam pendengar yang sama. Nilainya harus berupa bilangan bulat dari 1 hingga 1.000. Nilai yang lebih rendah berarti prioritas lebih tinggi. Default-nya adalah 10.
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: cafe-ingress
        annotations:
         alb.ingress.kubernetes.io/order: "2"
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top
          http:
            paths:
            - path: /tea
              pathType: ImplementationSpecific
              backend:
                service:
                  name: tea-svc
                  port:
                    number: 80

      Rilis canary

      ALB Ingress mendukung rilis canary yang mengarahkan sebagian kecil trafik ke versi baru layanan Anda. Tiga metode pemisahan trafik tersedia: berbasis header, berbasis cookie, dan berbasis bobot.

      Aktifkan rilis canary pada Ingress dengan mengatur alb.ingress.kubernetes.io/canary: "true", lalu tambahkan anotasi pengarahan yang sesuai.

      Canary rule priority: berbasis header > berbasis cookie > berbasis bobot.

      Selama pengujian canary, jangan ubah aturan Ingress asli — hal ini dapat mengganggu trafik. Setelah versi baru lolos pengujian, perbarui layanan backend dalam Ingress asli dan hapus Ingress canary.

      Canary berbasis header

      canary-by-header menentukan nama header permintaan yang akan dicocokkan. canary-by-header-value menentukan nilai header yang diperlukan dan harus digunakan bersama dengan canary-by-header. Permintaan yang header-nya cocok akan diarahkan ke layanan canary; semua permintaan lainnya akan dilanjutkan ke aturan canary berikutnya berdasarkan prioritas.

      Dalam contoh berikut, permintaan dengan header location: hz diarahkan ke layanan canary:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          alb.ingress.kubernetes.io/order: "1"
          alb.ingress.kubernetes.io/canary: "true"
          alb.ingress.kubernetes.io/canary-by-header: "location"
          alb.ingress.kubernetes.io/canary-by-header-value: "hz"
        name: demo-canary
        namespace: default
      spec:
        ingressClassName: alb
        rules:
          - http:
              paths:
                - backend:
                    service:
                      name: demo-service-hello
                      port:
                        number: 80
                  path: /hello
                  pathType: ImplementationSpecific

      Canary berbasis cookie

      canary-by-cookie membagi trafik berdasarkan nama cookie. Atur cookie ke always untuk mengarahkan permintaan ke layanan canary, atau never untuk mengecualikannya.

      Hanya always dan never yang didukung. Nilai cookie kustom tidak didukung.

      Dalam contoh berikut, permintaan dengan cookie demo=always diarahkan ke layanan canary:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          alb.ingress.kubernetes.io/order: "2"
          alb.ingress.kubernetes.io/canary: "true"
          alb.ingress.kubernetes.io/canary-by-cookie: "demo"
        name: demo-canary-cookie
        namespace: default
      spec:
        ingressClassName: alb
        rules:
          - http:
              paths:
                - backend:
                    service:
                      name: demo-service-hello
                      port:
                        number: 80
                  path: /hello
                  pathType: ImplementationSpecific

      Canary berbasis bobot

      canary-weight menetapkan persentase permintaan yang diarahkan ke layanan canary. Nilainya harus berupa bilangan bulat dari 0 hingga 100.

      Dalam contoh berikut, 50% permintaan diarahkan ke layanan canary:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          alb.ingress.kubernetes.io/order: "3"
          alb.ingress.kubernetes.io/canary: "true"
          alb.ingress.kubernetes.io/canary-weight: "50"
        name: demo-canary-weight
        namespace: default
      spec:
        ingressClassName: alb
        rules:
          - http:
              paths:
                - backend:
                    service:
                      name: demo-service-hello
                      port:
                        number: 80
                  path: /hello
                  pathType: ImplementationSpecific

      Konfigurasikan persistensi sesi

      ALB Ingress mengarahkan permintaan dari klien yang sama ke server backend yang sama melalui beberapa koneksi. Konfigurasikan persistensi sesi menggunakan anotasi berikut:

      AnotasiDeskripsi
      alb.ingress.kubernetes.io/sticky-sessionAktifkan persistensi sesi. Nilai yang valid: true, false. Default: false.
      alb.ingress.kubernetes.io/sticky-session-typeMetode penanganan cookie. Insert (default): Server Load Balancer menyisipkan cookie SERVERID ke respons dan menggunakannya untuk mengarahkan permintaan selanjutnya ke backend yang sama. Server: Server Load Balancer menulis ulang cookie yang ditentukan pengguna untuk tujuan yang sama. Berlaku hanya ketika StickySessionEnabled bernilai true untuk grup server.
      alb.ingress.kubernetes.io/cookie-timeoutTimeout cookie dalam detik. Nilai yang valid: 1–86.400. Default: 1000.
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: cafe-ingress-v3
        annotations:
          alb.ingress.kubernetes.io/sticky-session: "true"
          alb.ingress.kubernetes.io/sticky-session-type: "Insert"
          alb.ingress.kubernetes.io/cookie-timeout: "1800"
      spec:
        ingressClassName: alb
        rules:
        - http:
            paths:
            - path: /tea2
              backend:
                service:
                  name: tea-svc
                  port:
                    number: 80
            - path: /coffee2
              backend:
                service:
                  name: coffee-svc
                  port:
                    number: 80

      Tetapkan algoritma penyeimbangan beban

      Gunakan alb.ingress.kubernetes.io/backend-scheduler untuk menetapkan algoritma penyeimbangan beban untuk grup server backend. Versi kluster harus 1.19 atau lebih baru.

      Empat algoritma didukung:

      NilaiAlgoritmaCara kerja
      wrr (default)Weighted round robinMendistribusikan permintaan secara proporsional sesuai bobot masing-masing server.
      wlcWeighted least connectionsMendistribusikan permintaan ke server backend berdasarkan bobot dan jumlah koneksi yang ada. Jika server backend memiliki bobot yang sama, server dengan koneksi paling sedikit yang dipilih.
      schSource IP hashingMengarahkan permintaan dari IP sumber yang sama ke server backend yang sama.
      uchURL-based consistent hashingMengarahkan permintaan dengan parameter URL yang sama ke server backend yang sama. Memerlukan alb.ingress.kubernetes.io/backend-scheduler-uch-value untuk menentukan nama parameter.
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: cafe-ingress
        annotations:
          alb.ingress.kubernetes.io/backend-scheduler: "uch"
          alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test"
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top
          http:
            paths:
            - path: /tea
              pathType: ImplementationSpecific
              backend:
                service:
                  name: tea-svc
                  port:
                    number: 80

      Konfigurasikan CORS

      Atur alb.ingress.kubernetes.io/enable-cors: "true" untuk mengaktifkan Cross-Origin Resource Sharing (CORS) pada ALB Ingress.

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: alb-ingress
        annotations:
          alb.ingress.kubernetes.io/enable-cors: "true"
          alb.ingress.kubernetes.io/cors-expose-headers: ""
          alb.ingress.kubernetes.io/cors-allow-methods: "GET,POST"
          alb.ingress.kubernetes.io/cors-allow-credentials: "true"
          alb.ingress.kubernetes.io/cors-max-age: "600"
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: cloud-nodeport
                  port:
                    number: 80
      AnotasiDeskripsiDefault
      alb.ingress.kubernetes.io/cors-allow-originURL yang diizinkan mengakses resource melalui browser. Setiap URL harus dimulai dengan http:// atau https:// dan menggunakan domain valid atau wildcard tingkat atas. Pisahkan beberapa URL dengan koma. Contoh: "https://example.com:4443, http://aliyundoc.com".*
      alb.ingress.kubernetes.io/cors-allow-methodsMetode HTTP yang diizinkan untuk permintaan CORS. Nilai tidak case-sensitive. Pisahkan beberapa metode dengan koma. Contoh: "PUT, GET, POST, OPTIONS".GET, PUT, POST, DELETE, PATCH, OPTIONS
      alb.ingress.kubernetes.io/cors-allow-headersHeader permintaan yang diizinkan dalam permintaan CORS. Header dapat berisi huruf, angka, garis bawah, dan tanda hubung. Pisahkan beberapa header dengan koma. Contoh: "X-Forwarded-For, X-app123-XPTO".DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
      alb.ingress.kubernetes.io/cors-expose-headersHeader yang dapat diakses klien dalam respons. Header dapat berisi huruf, angka, garis bawah, tanda hubung, dan tanda bintang. Pisahkan beberapa header dengan koma. Contoh: "*, X-CustomResponseHeader".empty
      alb.ingress.kubernetes.io/cors-allow-credentialsApakah kredensial disertakan dalam permintaan CORS.true
      alb.ingress.kubernetes.io/cors-max-ageDurasi cache maksimum untuk hasil permintaan preflight OPTIONS. Nilai yang valid: -1 hingga 172.800. Satuan: detik.172800

      Aktifkan koneksi persisten backend

      Secara default, ALB menggunakan koneksi singkat ke grup server backend — setiap permintaan membuka lalu menutup koneksi TCP. Koneksi persisten menggunakan kembali koneksi TCP yang ada untuk beberapa permintaan, mengurangi overhead koneksi dan meningkatkan throughput di bawah beban tinggi.

      Atur alb.ingress.kubernetes.io/backend-keepalive: "true" untuk mengaktifkan fitur ini:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: alb-ingress
        annotations:
          alb.ingress.kubernetes.io/backend-keepalive: "true"
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: cloud-nodeport
                  port:
                    number: 80

      Konfigurasikan pembatasan kecepatan QPS

      Atur alb.ingress.kubernetes.io/traffic-limit-qps untuk membatasi jumlah permintaan per detik (QPS) untuk aturan pengalihan. Nilainya harus berupa bilangan bulat dari 1 hingga 100.000.

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: cafe-ingress
        annotations:
          alb.ingress.kubernetes.io/traffic-limit-qps: "50"
      spec:
        ingressClassName: alb
        rules:
         - host: demo.alb.ingress.top
           http:
            paths:
            - path: /tea
              pathType: ImplementationSpecific
              backend:
                service:
                  name: tea-svc
                  port:
                    number: 80
            - path: /coffee
              pathType: ImplementationSpecific
              backend:
                service:
                  name: coffee-svc
                  port:
                    number: 80

      Langkah selanjutnya