All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasi ALB Ingress tingkat lanjut

Last Updated:Jun 16, 2026

Konfigurasikan anotasi ALB Ingress untuk pengalihan rute, pengalihan HTTPS, pemeriksaan kesehatan, dan rilis canary.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Referensi cepat anotasi

Fitur ALB Ingress dikonfigurasi melalui anotasi pada bidang metadata.annotations. Tabel berikut mencantumkan anotasi yang didukung berdasarkan kategori.

Kategori Anotasi Deskripsi
Pemeriksaan kesehatan alb.ingress.kubernetes.io/healthcheck-enabled Aktifkan atau nonaktifkan pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthcheck-path Jalur pemeriksaan kesehatan
alb.ingress.kubernetes.io/healthcheck-protocol Protokol: HTTP, HTTPS, TCP, GRPC
alb.ingress.kubernetes.io/healthcheck-httpversion Versi HTTP: HTTP1.0, HTTP1.1
alb.ingress.kubernetes.io/healthcheck-method Metode: HEAD, POST, GET
alb.ingress.kubernetes.io/healthcheck-code Kode status yang diharapkan (mengambil prioritas lebih tinggi daripada healthcheck-httpcode)
alb.ingress.kubernetes.io/healthcheck-httpcode Kode status HTTP yang diharapkan (untuk kluster sebelum versi 1.19)
alb.ingress.kubernetes.io/healthcheck-timeout-seconds Timeout dalam detik (1–300)
alb.ingress.kubernetes.io/healthcheck-interval-seconds Interval pemeriksaan dalam detik (1–50)
alb.ingress.kubernetes.io/healthy-threshold-count Jumlah keberhasilan berturut-turut untuk menandai sebagai sehat (2–10)
alb.ingress.kubernetes.io/unhealthy-threshold-count Jumlah kegagalan berturut-turut untuk menandai sebagai tidak sehat (2–10)
alb.ingress.kubernetes.io/healthcheck-connect-port Port untuk pemeriksaan kesehatan (0 = port backend)
TLS / HTTPS alb.ingress.kubernetes.io/ssl-redirect Alihkan Port HTTP 80 ke Port HTTPS 443
Protokol backend alb.ingress.kubernetes.io/backend-protocol Protokol backend: https, grpc
Pencocokan jalur alb.ingress.kubernetes.io/use-regex Aktifkan ekspresi reguler dalam aturan jalur
Penulisan ulang alb.ingress.kubernetes.io/rewrite-target Tulis ulang jalur permintaan sebelum dialihkan
Port pendengar alb.ingress.kubernetes.io/listen-ports Port pendengar kustom, contoh: [{"HTTP": 80},{"HTTPS": 443}]
Prioritas pengalihan alb.ingress.kubernetes.io/order Prioritas aturan pengalihan (1–1000; angka lebih kecil = prioritas lebih tinggi)
Canary Release alb.ingress.kubernetes.io/canary Aktifkan perutean canary
alb.ingress.kubernetes.io/canary-by-header Rute berdasarkan nama header permintaan
alb.ingress.kubernetes.io/canary-by-header-value Rute berdasarkan nilai header yang tepat
alb.ingress.kubernetes.io/canary-by-cookie Rute berdasarkan nama cookie (always atau never)
alb.ingress.kubernetes.io/canary-weight Persentase trafik yang dialihkan ke canary (0–100)
Persistensi sesi alb.ingress.kubernetes.io/sticky-session Aktifkan persistensi sesi
alb.ingress.kubernetes.io/sticky-session-type Mode cookie: Insert atau Server
alb.ingress.kubernetes.io/cookie-timeout Timeout cookie dalam detik (1–86400)
alb.ingress.kubernetes.io/cookie Nama cookie kustom (wajib saat tipe adalah Server)
Algoritma penyeimbangan beban alb.ingress.kubernetes.io/backend-scheduler Algoritma: wrr, wlc, sch, uch
alb.ingress.kubernetes.io/backend-scheduler-uch-value Nama parameter URL untuk penghashan uch
CORS alb.ingress.kubernetes.io/enable-cors Aktifkan Berbagi Sumber Daya Lintas Asal (CORS)
alb.ingress.kubernetes.io/cors-allow-origin Asal yang diizinkan
alb.ingress.kubernetes.io/cors-allow-methods Metode HTTP yang diizinkan
alb.ingress.kubernetes.io/cors-allow-headers Header permintaan yang diizinkan
alb.ingress.kubernetes.io/cors-expose-headers Header yang diekspos ke browser
alb.ingress.kubernetes.io/cors-allow-credentials Apakah kredensial diizinkan
alb.ingress.kubernetes.io/cors-max-age Durasi cache preflight dalam detik (−1–172800)
Koneksi backend alb.ingress.kubernetes.io/backend-keepalive Aktifkan koneksi backend persisten
Pembatasan laju alb.ingress.kubernetes.io/traffic-limit-qps Batas QPS per aturan pengalihan (1–100.000)
Mulai lambat alb.ingress.kubernetes.io/slow-start-enabled Aktifkan mulai lambat untuk Pod baru
alb.ingress.kubernetes.io/slow-start-duration Durasi peningkatan bertahap dalam detik (30–900)
Pengurasan koneksi alb.ingress.kubernetes.io/connection-drain-enabled Aktifkan pengurasan koneksi
alb.ingress.kubernetes.io/connection-drain-timeout Timeout pengurasan dalam detik (0–900)

Alihkan permintaan berdasarkan nama domain

Buat Ingress untuk mengalihkan permintaan berdasarkan nama domain. ALB Ingress mendukung nama domain standar maupun kosong.

Alihkan permintaan berdasarkan nama domain standar

Contoh berikut menetapkan jalur perutean ke /hello. Permintaan ke demo.domain.ingress.top/hello dialihkan ke layanan backend.

  1. Terapkan templat berikut untuk membuat Service, Penyebaran, dan Ingress. Permintaan dialihkan ke Service melalui nama domain dalam Ingress.

    Perluas untuk melihat contoh YAML

    Untuk kluster versi 1.19 dan yang lebih baru

    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

    Untuk kluster sebelum versi 1.19

    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/v1beta1
    kind: Ingress
    metadata:
      name: demo
      namespace: default
    spec:
      ingressClassName: alb
      rules:
        - host: demo.domain.ingress.top
          http:
            paths:
              - backend:
                  serviceName: demo-service
                  servicePort: 80
                path: /hello
                pathType: ImplementationSpecific
  2. Uji perutean. Ganti ADDRESS dengan nama domain instans ALB (kubectl get ing untuk mengambilnya).

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

    Output yang diharapkan:

    {"hello":"coffee"}

Alihkan permintaan berdasarkan nama domain kosong

Saat bidang host kosong, Ingress mencocokkan semua permintaan tanpa memperhatikan domain. Contoh berikut mengarahkan permintaan ke <ADDRESS>/hello ke layanan backend.

  1. Terapkan templat berikut untuk membuat Ingress.

    Perluas untuk melihat contoh YAML

    Untuk kluster versi 1.19 dan yang lebih baru

    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: ""
          http:
            paths:
              - backend:
                  service:
                    name: demo-service
                    port:
                      number: 80
                path: /hello
                pathType: ImplementationSpecific

    Untuk kluster sebelum versi 1.19

    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/v1beta1
    kind: Ingress
    metadata:
      name: demo
      namespace: default
    spec:
      ingressClassName: alb
      rules:
        - host: ""
          http:
            paths:
              - backend:
                  serviceName: demo-service
                  servicePort: 80
                path: /hello
                pathType: ImplementationSpecific
  2. Uji perutean. Ganti ADDRESS dengan nama domain instans ALB.

    curl <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Alihkan permintaan berdasarkan jalur URL

ALB Ingress mengalihkan permintaan berdasarkan jalur URL menggunakan bidang pathType. Tiga jenis pencocokan didukung:

pathType Perilaku
Prefix Mencocokkan awalan jalur, segmen demi segmen, peka huruf besar/kecil
Exact Hanya cocok jika persis sama
ImplementationSpecific Ditangani sebagai pencocokan eksak (Exact) oleh pengontrol ALB Ingress. Jika path tidak ditetapkan, ALB menggunakan / sebagai nilai default
Penting

Jika pathType diatur ke Exact atau Prefix, path harus berupa jalur mutlak yang tidak kosong. Jika tidak, pembuatan Ingress gagal dengan error validasi. Saat beberapa aturan pencocokan URL bentrok, ALB mengevaluasinya berdasarkan prioritas aturan pengalihan.

Referensi pencocokan jalur

Jalur sederhana (`/`, `/foo`, `/foo/`)

Jenis pencocokan Jalur aturan Jalur permintaan Cocok?
Prefix / / (mencocokkan semua) Ya
Prefix /foo /foo Ya
Prefix /foo /foo/ Ya
Prefix /foo/ /foo Ya
Prefix /foo/ /foo/ Ya
Prefix /aaa /ccc Tidak — awalan tidak cocok
Exact atau ImplementationSpecific /foo /foo Ya
Exact atau ImplementationSpecific /foo /bar Tidak
Exact atau ImplementationSpecific /foo /foo/ Tidak
Exact atau ImplementationSpecific /foo/ /foo Tidak

Jalur hierarkis (`/aaa/bb`, `/aaa/bbb`, `/aaa/bbb/`)

Jenis pencocokan Jalur aturan Jalur permintaan Cocok?
Prefix /aaa/bb /aaa/bbb Tidak
Prefix /aaa/bbb /aaa/bbb Ya
Prefix /aaa/bbb/ /aaa/bbb Ya — garis miring di akhir aturan diabaikan
Prefix /aaa/bbb /aaa/bbb/ Ya — garis miring di akhir permintaan dicocokkan
Prefix /aaa/bbb /aaa/bbb/ccc Ya — subjalur dicocokkan

Banyak jalur aturan

Jenis pencocokan Jalur aturan Jalur permintaan Cocok?
Prefix /, /aaa /aaa/ccc Ya — mencocokkan awalan /
Prefix /aaa, / /aaa/ccc Ya — mencocokkan awalan /aaa
Prefix /aaa, / /ccc Ya — mencocokkan awalan /
Prefix /aaa, /bbb /ccc Tidak — awalan tidak cocok

Pencocokan awalan (Prefix)

Pencocokan awalan membandingkan segmen jalur yang dipisahkan oleh /, peka huruf besar/kecil. Contoh berikut menetapkan jalur aturan ke /, yang mencocokkan semua jalur termasuk /hello.

  1. Terapkan templat berikut untuk membuat Ingress.

    Perluas untuk melihat contoh YAML

    Untuk kluster versi 1.19 dan yang lebih baru

    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 kluster sebelum versi 1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: demo-path-prefix
      namespace: default
    spec:
      ingressClassName: alb
      rules:
        - http:
            paths:
            - path: /
              backend:
                serviceName: demo-service
                servicePort: 80
              pathType: Prefix
  2. Uji perutean. Ganti ADDRESS dengan nama domain instans ALB.

    curl <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Pencocokan eksak (Exact atau ImplementationSpecific)

Contoh berikut menetapkan jalur aturan ke /hello. Hanya jalur persis /hello yang dicocokkan.

  1. Terapkan templat berikut untuk membuat Ingress.

    Perluas untuk melihat contoh YAML

    Untuk kluster versi 1.19 dan yang lebih baru

    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

    Untuk kluster sebelum versi 1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: demo-path
      namespace: default
    spec:
      ingressClassName: alb
      rules:
        - http:
            paths:
            - path: /hello
              backend:
                serviceName: demo-service
                servicePort: 80
              pathType: Exact
  2. Uji perutean. Ganti ADDRESS dengan nama domain instans ALB.

    curl <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Alihkan HTTP ke HTTPS

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

Penting

Anotasi ini hanya berlaku untuk aturan pengalihan HTTP pada port pendengar 80. Fitur ini hanya berfungsi dengan anotasi RemoveHeader, InsertHeader, dan CORS lintas domain. Sebelum menambahkan anotasi ini, konfigurasikan pendengar HTTPS pada port 443 di AlbConfig.

Kluster yang menjalankan Kubernetes 1.19 atau lebih baru

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

Kluster yang menjalankan versi Kubernetes sebelum 1.19

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/v1beta1
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:
              serviceName: demo-service-ssl
              servicePort: 80
            path: /
            pathType: Prefix

Konfigurasi pemeriksaan kesehatan

Konfigurasikan pemeriksaan kesehatan untuk grup server backend menggunakan anotasi berikut.

Perluas untuk melihat contoh YAML lengkap

Tambahkan anotasi berikut untuk mengaktifkan dan mengonfigurasi pemeriksaan kesehatan untuk grup server backend.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    alb.ingress.kubernetes.io/healthcheck-enabled: "true"
    alb.ingress.kubernetes.io/healthcheck-path: "/"
    alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
    alb.ingress.kubernetes.io/healthcheck-httpversion: "HTTP1.1"
    alb.ingress.kubernetes.io/healthcheck-method: "HEAD"
    alb.ingress.kubernetes.io/healthcheck-code: "http_2xx"
    alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
    alb.ingress.kubernetes.io/healthcheck-interval-seconds: "2"
    alb.ingress.kubernetes.io/healthy-threshold-count: "3"
    alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
spec:
  ingressClassName: alb
  rules:
  - 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

Untuk kluster versi 1.19 dan yang lebih baru

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    alb.ingress.kubernetes.io/healthcheck-enabled: "true"
    alb.ingress.kubernetes.io/healthcheck-path: "/"
    alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
    alb.ingress.kubernetes.io/healthcheck-httpversion: "HTTP1.1"
    alb.ingress.kubernetes.io/healthcheck-method: "HEAD"
    alb.ingress.kubernetes.io/healthcheck-code: "http_2xx"
    alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
    alb.ingress.kubernetes.io/healthcheck-interval-seconds: "2"
    alb.ingress.kubernetes.io/healthy-threshold-count: "3"
    alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
spec:
  ingressClassName: alb
  rules:
  - 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

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    alb.ingress.kubernetes.io/healthcheck-enabled: "true"
    alb.ingress.kubernetes.io/healthcheck-path: "/"
    alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
    alb.ingress.kubernetes.io/healthcheck-method: "HEAD"
    alb.ingress.kubernetes.io/healthcheck-httpcode: "http_2xx"
    alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
    alb.ingress.kubernetes.io/healthcheck-interval-seconds: "2"
    alb.ingress.kubernetes.io/healthy-threshold-count: "3"
    alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
      - path: /tea
        backend:
          serviceName: tea-svc
          servicePort: 80
      - path: /coffee
        backend:
          serviceName: coffee-svc
          servicePort: 80

Referensi anotasi:

Anotasi Deskripsi Default
alb.ingress.kubernetes.io/healthcheck-enabled Aktifkan pemeriksaan kesehatan: true atau false false
alb.ingress.kubernetes.io/healthcheck-path Jalur pemeriksaan kesehatan /
alb.ingress.kubernetes.io/healthcheck-protocol Protokol: HTTP, HTTPS, TCP, atau GRPC. HTTP/HTTPS menggunakan HEAD atau GET; TCP menggunakan SYN; gRPC menggunakan POST atau GET HTTP
alb.ingress.kubernetes.io/healthcheck-httpversion Versi HTTP: HTTP1.0 atau HTTP1.1. Berlaku untuk protokol HTTP dan HTTPS HTTP1.1
alb.ingress.kubernetes.io/healthcheck-method Metode permintaan: HEAD, POST, atau GET. Gunakan POST atau GET saat protokol adalah GRPC HEAD
alb.ingress.kubernetes.io/healthcheck-code Kode status yang diharapkan. Mengambil prioritas lebih tinggi daripada healthcheck-httpcode. Untuk HTTP/HTTPS: http_2xx, http_3xx, http_4xx, http_5xx (dipisahkan koma). Untuk gRPC: rentang bilangan bulat dalam [0, 99] (maksimal 20 rentang, dipisahkan koma) HTTP/HTTPS: http_2xx; gRPC: 0
alb.ingress.kubernetes.io/healthcheck-httpcode Kode status yang diharapkan untuk kluster sebelum versi 1.19. Opsi: http_2xx, http_3xx, http_4xx, http_5xx (dipisahkan koma) http_2xx
alb.ingress.kubernetes.io/healthcheck-timeout-seconds Timeout dalam detik. Rentang: [1, 300] 5
alb.ingress.kubernetes.io/healthcheck-interval-seconds Interval pemeriksaan dalam detik. Rentang: [1, 50] 2
alb.ingress.kubernetes.io/healthy-threshold-count Jumlah keberhasilan berturut-turut yang diperlukan untuk menandai server backend sebagai sehat. Rentang: [2, 10] 3
alb.ingress.kubernetes.io/unhealthy-threshold-count Jumlah kegagalan berturut-turut yang diperlukan untuk menandai server backend sebagai tidak sehat. Rentang: [2, 10] 3
alb.ingress.kubernetes.io/healthcheck-connect-port Port pemeriksaan kesehatan. 0 menggunakan port server backend 0

Gunakan HTTPS dan gRPC sebagai protokol backend

Tambahkan anotasi alb.ingress.kubernetes.io/backend-protocol untuk menggunakan HTTPS atau gRPC sebagai protokol backend.

Setelah Ingress dibuat, protokol backend tidak dapat diubah. Untuk mengganti protokol, hapus Ingress tersebut dan buat yang baru.
Penting

Saat mengalihkan trafik gRPC melalui Ingress, konfigurasikan sertifikat TLS untuk nama domain dan gunakan TLS untuk komunikasi.

Perluas untuk melihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang lebih baru

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/backend-protocol: "grpc"
  name: demo-alb-ingress
spec:
  ingressClassName: alb
  tls:
  - hosts:
    - demo.alb.ingress.top
  rules:
  - host: demo.alb.ingress.top
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: grpc-demo-svc
            port:
              number: 9080

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/backend-protocol: "grpc"
  name: demo-alb-ingress
spec:
  ingressClassName: alb
  tls:
  - hosts:
    - demo.alb.ingress.top
  rules:
    - host: demo.alb.ingress.top
      http:
        paths:
          - backend:
              serviceName: grpc-demo-svc
              servicePort: 9080
            path: /
            pathType: Prefix
Anotasi Nilai Deskripsi
alb.ingress.kubernetes.io/backend-protocol https Layanan backend menggunakan HTTPS
grpc Layanan backend menggunakan gRPC. Memerlukan konfigurasi TLS pada nama domain

Konfigurasi ekspresi reguler

Gunakan anotasi alb.ingress.kubernetes.io/use-regex: "true" untuk mengaktifkan pencocokan ekspresi reguler dalam aturan jalur. Anotasi ini hanya berlaku untuk aturan jalur dengan pathType: Prefix.

Anotasi Deskripsi
alb.ingress.kubernetes.io/use-regex: "true" Mengaktifkan ekspresi reguler dalam aturan jalur
alb.ingress.kubernetes.io/conditions.<YOUR-SVC-NAME> Mengonfigurasi kondisi pengalihan kustom. Ganti <YOUR-SVC-NAME> dengan nama Service yang sebenarnya, yang harus sesuai dengan backend.service.name

Aturan pencocokan ekspresi reguler:

Target Awalan Contoh aturan Jalur klien Cocok? Catatan
Nama domain Diawali dengan ~ ~test.example.com test.EXAMPLE.com Ya Nama domain mendukung pencocokan tidak peka huruf besar/kecil
Jalur Diawali dengan ~ ~/api /API Ya Pencocokan tidak peka huruf besar/kecil
Jalur Diawali dengan ~* ~*/api /Api Tidak Pencocokan peka huruf besar/kecil

Perluas untuk melihat contoh YAML lengkap

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/use-regex: "true"  # Mengaktifkan pencocokan ekspresi reguler
   alb.ingress.kubernetes.io/conditions.<YOUR-SVC-NAME>: | # Ganti <YOUR-SVC-NAME> dengan nama Service — harus sesuai dengan backend.service.name
     [{
       "type": "Path",
       "pathConfig": {
           "values": [
              "~*/pathvalue1", # ~* = regex peka huruf besar/kecil; ~ = regex tidak peka huruf besar/kecil
              "/pathvalue2"    # Tidak perlu awalan untuk pencocokan eksak
           ]
       }
      }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test-path-for-alb
        pathType: Prefix
        backend:
          service:
            name: <YOUR-SVC-NAME> # Harus sesuai dengan nama service dalam anotasi di atas
            port:
              number: 88

Konfigurasi penulisan ulang

ALB Ingress menulis ulang jalur permintaan sebelum mengalihkan. Dua anotasi mengontrol perilaku penulisan ulang:

  • alb.ingress.kubernetes.io/rewrite-target: /<path>/${number} — mengaktifkan penulisan ulang dan menetapkan jalur target. Gunakan format ${number} untuk mereferensikan grup penangkapan dari jalur asli (maksimal tiga grup: ${1}, ${2}, ${3}). pathType harus Prefix.

  • alb.ingress.kubernetes.io/use-regex — menentukan apakah akan menggunakan ekspresi reguler dalam jalur. Secara otomatis diaktifkan saat rewrite-target dikonfigurasi. Atur ke "false" untuk menonaktifkan; perhatikan bahwa jalur dengan karakter khusus (%#;!()[]^,"\") tidak dapat dibuat saat regex dinonaktifkan.

Skenario 1: Hapus awalan

Jalur path: /something(/|$)(.*) menggunakan tiga grup penangkapan:

  • /something — mencocokkan awalan yang akan dihapus

  • (/|$) — grup pertama: mencocokkan / atau akhir jalur

  • (.*) — grup kedua: menangkap semua yang ada setelah /something/, direferensikan sebagai ${2} dalam target penulisan ulang

Target penulisan ulang / + ${2} menghapus awalan /something:

Jalur asli Cocok? Jalur hasil penulisan ulang
/something Ya (grup kedua kosong) /
/something/ Ya (grup kedua kosong) /
/something/new Ya (grup kedua: new) /new
/something-new/item Tidak 503
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/use-regex: "true"
    alb.ingress.kubernetes.io/rewrite-target: /${2}
spec:
  ingressClassName: alb
  rules:
  - host: demo.alb.ingress.top
    http:
      paths:
      - path: /something(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rewrite-svc
            port:
              number: 9080

Skenario 2: Tangkap dan susun ulang beberapa bagian

Jalur /items/(.*)/(.*)/(.*) menangkap tiga segmen. Target penulisan ulang /${2}?code=${3} menyusun ulang URL menggunakan grup kedua dan ketiga.

Pola ini memerlukan tepat empat segmen jalur. Klien harus menggunakan format jalur tetap.
Jalur asli Cocok? Rewritten Path
/items/electronics/computers/554 Ya (grup 2: computers, grup 3: 554) /computers?code=554
/items/produce/fruits/12 Ya (grup 2: fruits, grup 3: 12) /fruits?code=12
/items/headphones/5 Tidak 503
/drinks/41 Tidak 503
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/use-regex: "true"
    alb.ingress.kubernetes.io/rewrite-target: /${2}?code=${3}
spec:
  ingressClassName: alb
  rules:
  - host: demo.alb.ingress.top
    http:
      paths:
      - path: /items/(.*)/(.*)/(.*)
        pathType: Prefix
        backend:
          service:
            name: rewrite-svc
            port:
              number: 9080

Skenario 3: Tulis ulang banyak jalur ke satu jalur

Contoh berikut mengarahkan /app-a dan /app-b ke /app-c dengan mendefinisikan dua aturan jalur yang memiliki target penulisan ulang yang sama /${2} → /app-c/${2}.

Jalur asli Cocok? Jalur Tulis Ulang
/app-a/item1 Ya (grup 2: item1) /app-c/item1
/app-a/item2 Ya (grup 2: item2) /app-c/item2
/app-a atau /app-a/ Ya (grup 2 kosong) /app-c/
/drinks/41 Tidak 503
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/use-regex: "true"
    alb.ingress.kubernetes.io/rewrite-target: /app-c/${2}
spec:
  ingressClassName: alb
  rules:
  - host: demo.alb.ingress.top
    http:
      paths:
      - path: /app-a(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rewrite-svc
            port:
              number: 9080
      - path: /app-b(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rewrite-svc
            port:
              number: 9080

Skenario 4: Tulis ulang nama domain

Anotasi rewrite-target hanya mengubah jalur. Untuk menulis ulang bagian lain dari URL seperti nama domain atau parameter kueri, gunakan aturan pengalihan kustom.

Verifikasi aturan penulisan ulang secara lokal

Gunakan sed untuk menguji kecocokan regex jalur dan melihat pratinjau hasil penulisan ulang sebelum menerapkan.

Contoh berikut menguji regex jalur /items/(.*)/(.*)/(.*) dan aturan penulisan ulang /${2}?code=${3} dari Skenario 2.

  1. Simpan jalur uji ke path2.txt:

    /items/electronics/computers/554
    /items/produce/fruits/12
    /items/headphones/5
    /drinks/41
  2. Simulasikan penulisan ulang dengan sed. Escape / menjadi \/ dalam regex jalur, dan gunakan \2 alih-alih ${2} untuk grup penangkapan:

    sed -E 's#\/items\/(.*)\/(.*)\/(.*)#Matched: [&]  --->  Rewritten: [/\2?code=\3]#' path2.txt

    Output yang diharapkan — dua jalur pertama cocok dengan aturan penulisan ulang; dua terakhir tidak:

    Matched: [/items/electronics/computers/554]  --->  Rewritten: [/computers?code=554]
    Matched: [/items/produce/fruits/12]  --->  Rewritten: [/fruits?code=12]
    /items/headphones/5
    /drinks/41

Konfigurasi port pendengar kustom

Gunakan anotasi alb.ingress.kubernetes.io/listen-ports untuk mengekspos layanan pada beberapa port, seperti HTTP 80 dan HTTPS 443.

Penting

ALB tidak membuat pendengar dari Ingress. Buat port dan protokol pendengar yang diperlukan di AlbConfig terlebih dahulu, lalu kaitkan dengan Ingress.

Perluas untuk melihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang lebih baru

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

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
  name: cafe-ingress
spec:
  ingressClassName: alb
  tls:
  - hosts:
    - demo.alb.ingress.top
  rules:
    - host: demo.alb.ingress.top
      http:
        paths:
          - backend:
              serviceName: tea-svc
              servicePort: 80
            path: /tea
            pathType: ImplementationSpecific
Anotasi Deskripsi
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]' Mengonfigurasi layanan untuk mendengarkan pada port 80 dan port 443

Konfigurasi prioritas aturan pengalihan

Secara default, ALB mengurutkan aturan pengalihan dalam urutan berikut:

  • Antar Ingress: diurutkan secara leksikografis berdasarkan namespace/name. Nilai lebih kecil memiliki prioritas lebih tinggi. Namespace dibandingkan terlebih dahulu, lalu nama.

  • Dalam Ingress yang sama: diurutkan berdasarkan urutan dalam bidang rules. Aturan yang tercantum lebih awal memiliki prioritas lebih tinggi.

    rules:
      - host: www.example.com   # Prioritas lebih tinggi
        http: ...
      - host: www.test.com      # Prioritas lebih rendah
        http: ...

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

Penting

Prioritas dalam pendengar yang sama harus unik.

Perluas untuk melihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang lebih baru

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

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/order: "2"
  name: cafe-ingress
spec:
  ingressClassName: alb
  rules:
    - host: demo.alb.ingress.top
      http:
        paths:
          - backend:
              serviceName: tea-svc
              servicePort: 80
            path: /tea
            pathType: ImplementationSpecific
Anotasi Rentang Default Deskripsi
alb.ingress.kubernetes.io/order [1, 1000] 10 Prioritas aturan pengalihan. Nilai lebih rendah memiliki prioritas lebih tinggi

Implementasikan rilis canary menggunakan anotasi

ALB mendukung rilis canary berdasarkan header permintaan, cookie, dan bobot trafik. Buat Ingress canary terpisah bersama Ingress produksi.

Canary routing priority: Header > Cookie > Bobot (dari tertinggi ke terendah).

Penting

Jangan hapus Ingress produksi selama rilis canary. Setelah rilis canary divalidasi, perbarui layanan backend di Ingress produksi agar mengarah ke versi baru, lalu hapus Ingress canary.

Lihat Implementasikan rilis bertahap melalui ALB Ingress.

Rute berdasarkan header

Gunakan canary-by-header dan canary-by-header-value bersama-sama untuk mengarahkan permintaan yang cocok dengan nilai header tertentu ke layanan canary. Permintaan yang tidak cocok akan dilanjutkan ke aturan canary berikutnya (cookie atau bobot).

Perluas untuk melihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang lebih baru

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

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
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:
              serviceName: demo-service-hello
              servicePort: 80
            path: /hello
            pathType: ImplementationSpecific

Dengan konfigurasi ini, permintaan dengan location: hz diarahkan ke layanan canary. Semua permintaan lain dilanjutkan ke aturan canary berikutnya.

Anotasi Deskripsi
alb.ingress.kubernetes.io/canary-by-header Nama header permintaan yang dicocokkan
alb.ingress.kubernetes.io/canary-by-header-value Nilai header yang tepat untuk dicocokkan. Kedua anotasi harus dikonfigurasi bersama

Rute berdasarkan cookie

Gunakan canary-by-cookie untuk mengarahkan permintaan berdasarkan nama cookie. Atur nilai cookie ke always untuk selalu mengarahkan ke layanan canary, atau never untuk selalu mengecualikannya.

Perluas untuk melihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang lebih baru

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

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
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:
              serviceName: demo-service-hello
              servicePort: 80
            path: /hello
            pathType: ImplementationSpecific

Dengan konfigurasi ini, permintaan dengan Cookie: demo=always diarahkan ke layanan canary. Permintaan dengan Cookie: demo=never sepenuhnya melewati layanan canary.

Anotasi Nilai Deskripsi
alb.ingress.kubernetes.io/canary-by-cookie always Semua permintaan diarahkan ke layanan canary
never Tidak ada permintaan yang diarahkan ke layanan canary

Perutean canary berbasis cookie hanya mendukung always dan never. Nilai cookie kustom tidak didukung.

Rute berdasarkan bobot

Gunakan canary-weight untuk mengirim persentase trafik ke layanan canary. Contoh berikut mengarahkan 50% trafik ke canary:

Perluas untuk melihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang lebih baru

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

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
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:
              serviceName: demo-service-hello
              servicePort: 80
            path: /hello
            pathType: ImplementationSpecific
Anotasi Rentang Deskripsi
alb.ingress.kubernetes.io/canary-weight 0–100 Persentase permintaan yang diarahkan ke layanan canary

Implementasikan persistensi sesi menggunakan anotasi

ALB Ingress mendukung persistensi sesi berbasis cookie. Tambahkan anotasi berikut untuk mengaktifkan dan mengonfigurasinya.

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"   # Gunakan "Server" untuk cookie kustom
    alb.ingress.kubernetes.io/cookie-timeout: "1800"
    alb.ingress.kubernetes.io/cookie: "test"
spec:
  ...

Perluas untuk melihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang lebih baru

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"   # Gunakan "Server" untuk cookie kustom
    alb.ingress.kubernetes.io/cookie-timeout: "1800"
    alb.ingress.kubernetes.io/cookie: "test"
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
      - backend:
          service:
            name: tea-svc
            port:
              number: 80
        path: /tea2
        pathType: ImplementationSpecific
      - backend:
          service:
            name: coffee-svc
            port:
              number: 80
        path: /coffee2
        pathType: ImplementationSpecific

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: cafe-ingress-v3
  annotations:
    alb.ingress.kubernetes.io/sticky-session: "true"
    alb.ingress.kubernetes.io/sticky-session-type: "Insert"  # Gunakan "Server" untuk cookie kustom
    alb.ingress.kubernetes.io/cookie-timeout: "1800"
    alb.ingress.kubernetes.io/cookie: "test"
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
      - path: /tea2
        pathType: ImplementationSpecific
        backend:
          serviceName: tea-svc
          servicePort: 80
      - path: /coffee2
        pathType: ImplementationSpecific
        backend:
          serviceName: coffee-svc
          servicePort: 80
Anotasi Deskripsi Default
alb.ingress.kubernetes.io/sticky-session Aktifkan persistensi sesi: true atau false false
alb.ingress.kubernetes.io/sticky-session-type Mode penanganan cookie. Insert: ALB menyisipkan cookie SERVERID untuk mengarahkan permintaan berikutnya ke backend yang sama. Server: ALB menulis ulang cookie kustom untuk perutean. Memerlukan StickySessionEnabled diatur ke true pada grup server. Lihat Buat grup server Insert
alb.ingress.kubernetes.io/cookie-timeout Timeout cookie dalam detik. Rentang: [1, 86400]. Berlaku saat sticky-session-type adalah Insert 1000
alb.ingress.kubernetes.io/cookie Nama cookie kustom. Wajib dan tidak boleh kosong saat sticky-session-type adalah Server ""

Tentukan algoritma penyeimbangan beban

Gunakan anotasi alb.ingress.kubernetes.io/backend-scheduler untuk menetapkan algoritma penyeimbangan beban untuk grup server backend.

Perluas untuk melihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang lebih baru

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" # Wajib hanya untuk uch
spec:
  ingressClassName: alb
  rules:
  - host: demo.alb.ingress.top
    http:
      paths:
      - path: /tea
        pathType: ImplementationSpecific
        backend:
          service:
            name: tea-svc
            port:
              number: 80

Untuk kluster sebelum versi 1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/backend-scheduler: "uch"
    alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test" # Wajib hanya untuk uch
  name: cafe-ingress
spec:
  ingressClassName: alb
  rules:
    - host: demo.alb.ingress.top
      http:
        paths:
          - backend:
              serviceName: tea-svc
              servicePort: 80
            path: /tea
            pathType: ImplementationSpecific
Nilai Algoritma Deskripsi
wrr Round-robin berbobot Server backend dengan bobot lebih tinggi menerima lebih banyak permintaan. Algoritma default
wlc Koneksi terkecil berbobot Mengarahkan ke server dengan koneksi aktif paling sedikit, dibobot berdasarkan bobot server
sch Penghashan konsisten berdasarkan IP sumber Mengarahkan permintaan dari IP klien yang sama ke server backend yang sama
uch Penghashan konsisten berdasarkan parameter URL Mengarahkan berdasarkan hash parameter URL. Tetapkan nama parameter dengan alb.ingress.kubernetes.io/backend-scheduler-uch-value

Konfigurasi berbagi sumber daya lintas asal

Tambahkan anotasi CORS untuk mengizinkan browser membuat permintaan lintas asal ke layanan.

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
Anotasi Deskripsi Default
alb.ingress.kubernetes.io/cors-allow-origin Asal yang diizinkan. Harus diawali dengan http:// atau https://, diikuti domain yang valid atau domain wildcard tingkat atas. Pisahkan beberapa asal dengan koma. Contoh: "https://example.com:4443, http://aliyundoc.com, https://example.org:1199" *
alb.ingress.kubernetes.io/cors-allow-methods Metode lintas asal yang diizinkan. Tidak peka huruf besar/kecil. Pisahkan beberapa metode dengan koma. Contoh: "PUT, GET, POST, OPTIONS" GET, PUT, POST, DELETE, PATCH, OPTIONS
alb.ingress.kubernetes.io/cors-allow-headers Header permintaan yang diizinkan. 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-headers Header yang diekspos ke browser. Dapat berisi huruf, angka, garis bawah (_), tanda hubung (-), dan tanda bintang (*). Pisahkan beberapa header dengan koma. Contoh: "*, X-CustomResponseHeader" Kosong
alb.ingress.kubernetes.io/cors-allow-credentials Apakah kredensial diizinkan dalam permintaan lintas asal. Contoh: "false" true
alb.ingress.kubernetes.io/cors-max-age Durasi cache maksimum dalam detik untuk respons preflight OPTIONS. Rentang: [−1, 172800] 172800

Aktifkan koneksi backend persisten

Koneksi backend persisten menggunakan kembali koneksi TCP ke server backend, mengurangi overhead membuka dan menutup koneksi per permintaan.

Tambahkan anotasi 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

Tetapkan batas laju QPS

Tambahkan anotasi alb.ingress.kubernetes.io/traffic-limit-qps untuk menetapkan pembatasan kecepatan QPS pada tingkat aturan pengalihan:

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
Anotasi Rentang Deskripsi
alb.ingress.kubernetes.io/traffic-limit-qps [1, 100.000] QPS maksimum untuk aturan pengalihan

Konfigurasi mulai lambat untuk Pod baru

Mulai lambat secara bertahap meningkatkan trafik ke Pod baru selama durasi yang dikonfigurasi, mencegah lonjakan CPU atau memori sementara akibat trafik penuh yang mengenai Pod dingin.

Anotasi Deskripsi Default
alb.ingress.kubernetes.io/slow-start-enabled Aktifkan mulai lambat: true atau false false
alb.ingress.kubernetes.io/slow-start-duration Durasi peningkatan bertahap dalam detik. Durasi lebih lama memperlambat peningkatan trafik. Rentang: [30, 900] 30

Perluas untuk melihat contoh YAML lengkap

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/slow-start-enabled: "true"
    alb.ingress.kubernetes.io/slow-start-duration: "100"
  name: alb-ingress
spec:
  ingressClassName: alb
  rules:
  - host: alb.ingress.alibaba.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: tea-svc
            port:
              number: 80

Konfigurasi pengurasan koneksi

Saat sebuah Pod memasuki status Terminating, ALB menghapusnya dari grup server backend. Tanpa pengurasan koneksi, permintaan yang sedang berlangsung pada koneksi yang ada mungkin gagal.

Pengurasan koneksi menjaga koneksi aktif tetap terbuka selama periode yang dikonfigurasi, memungkinkan permintaan yang sedang berlangsung selesai sebelum Pod offline.

Penting

Sebelum timeout pengurasan berakhir, ALB tidak dapat menjamin Pod tetap sehat. Konfigurasikan spec.terminationGracePeriodSeconds pada Pod atau gunakan panggilan balik preStop untuk mengontrol ketersediaan Pod selama status Terminating.

Lihat Capai offline bisnis yang lancar melalui pengurasan koneksi ALB.

Anotasi Deskripsi Default
alb.ingress.kubernetes.io/connection-drain-enabled Aktifkan pengurasan koneksi: true atau false false
alb.ingress.kubernetes.io/connection-drain-timeout Waktu maksimum dalam detik yang ditunggu ALB sebelum menutup koneksi setelah Pod dihapus atau gagal pemeriksaan kesehatan. Rentang: [0, 900] 300

Perluas untuk melihat contoh YAML lengkap

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/connection-drain-enabled: "true"
    alb.ingress.kubernetes.io/connection-drain-timeout: "199"
  name: alb-ingress
spec:
  ingressClassName: alb
  rules:
  - host: alb.ingress.alibaba.com
    http:
      paths:
      - path: /test
        pathType: Prefix
        backend:
          service:
            name: tea-svc
            port:
              number: