全部产品
Search
文档中心

:Fitur lanjutan layanan ALB Ingress

更新时间:Dec 13, 2025

Dalam kluster ACK, ALB Ingress menyediakan Load balancing lapisan 7 dengan mengelola objek API untuk mengekspos layanan dalam kluster ke traffic eksternal. Topik ini menjelaskan cara menggunakan ALB Ingress untuk meneruskan permintaan dari nama domain atau jalur URL yang berbeda ke grup server backend yang berbeda, mengalihkan permintaan HTTP ke HTTPS, serta mengimplementasikan fitur seperti rilis bertahap.

Indeks

Klasifikasi fitur

Contoh konfigurasi

Konfigurasi ALB Ingress

Konfigurasikan Pemeriksaan kesehatan

Konfigurasi Port/Protokol

Konfigurasi aturan pengalihan

Konfigurasi lanjutan

Teruskan permintaan berdasarkan nama domain

Anda dapat membuat Ingress sederhana untuk meneruskan permintaan berdasarkan nama domain tertentu atau nama domain kosong.

Teruskan permintaan berdasarkan nama domain standar

Contoh YAML berikut menetapkan jalur routing ke /hello. Ketika klien mengakses demo.domain.ingress.top/hello, permintaan akan diteruskan ke layanan backend.

  1. Terapkan templat berikut untuk membuat layanan, penerapan, dan Ingress. Ini meneruskan permintaan akses ke layanan menggunakan nama domain Ingress.

    Lihat 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: NodePort
    ---
    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 versi sebelum 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: NodePort
    ---
    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. Jalankan perintah berikut untuk mengakses layanan menggunakan nama domain yang ditentukan.

    Ganti <ADDRESS> dengan nama domain instans ALB. Untuk mendapatkan nama domain tersebut, jalankan kubectl get ing.

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

    Output yang diharapkan:

    {"hello":"coffee"}

Teruskan permintaan berdasarkan nama domain kosong

Contoh YAML berikut menggunakan nama domain kosong dan menetapkan jalur routing ke /hello. Ketika klien mengakses <ADDRESS>/hello, permintaan akan diteruskan ke layanan backend.

  1. Terapkan templat berikut untuk membuat Ingress.

    Lihat 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: NodePort
    ---
    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 versi sebelum 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: NodePort
    ---
    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. Jalankan perintah berikut untuk mengakses layanan menggunakan nama domain kosong.

    Ganti <ADDRESS> dengan nama domain instans ALB. Untuk mendapatkan nama domain tersebut, jalankan kubectl get ing.

    curl <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Teruskan permintaan berdasarkan jalur URL

ALB Ingress mendukung penerusan permintaan berdasarkan URL. Anda dapat menetapkan kebijakan pencocokan URL yang berbeda menggunakan bidang pathType. Bidang pathType mendukung tiga jenis pencocokan berikut.

  • Pencocokan eksak (Exact): Mencocokkan jalur URL permintaan secara persis.

  • Bawaan (ImplementationSpecific): Perilaku ditentukan oleh logika spesifik controller Ingress. Untuk Controller ALB Ingress, jenis ini berfungsi sebagai pencocokan eksak. Jika Anda tidak menentukan bidang path, ALB Ingress menggunakan / sebagai jalur bawaan.

  • Pencocokan awalan (Prefix): Mencocokkan awalan jalur URL permintaan.

Penting
  • Jika Anda menetapkan pathType ke Exact atau Prefix, Anda harus menetapkan bidang path ke jalur mutlak non-kosong. Jika tidak, sumber daya Ingress tidak dapat dibuat karena kegagalan validasi.

  • Kebijakan pencocokan URL dapat saling bertentangan. Dalam kasus ini, aturan pengalihan diurutkan berdasarkan prioritas sebelum permintaan diteruskan. Untuk informasi selengkapnya, lihat Konfigurasikan prioritas aturan pengalihan.

  • Jalur sederhana (/、/foo、/foo/)

    Jenis pencocokan

    Jalur aturan (aturan routing)

    Jalur permintaan (akses pengguna)

    Apakah cocok dengan aturan?

    Pencocokan awalan (Prefix)

    /

    / (mencocokkan semua aturan)

    Ya

    /foo

    • /foo

    • /foo/

    Ya

    /foo/

    • /foo

    • /foo/

    Ya

    /aaa

    /ccc

    Tidak, awalannya tidak cocok.

    Pencocokan eksak (Exact) atau Bawaan (ImplementationSpecific)

    /foo

    /foo

    Ya

    /bar

    Tidak

    /foo/

    Tidak

    /foo/

    /foo

    Tidak

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

    Jenis pencocokan

    Jalur aturan (aturan routing)

    Jalur permintaan (akses pengguna)

    Apakah cocok dengan aturan?

    Pencocokan awalan (Prefix)

    /aaa/bb

    /aaa/bbb

    Tidak

    /aaa/bbb

    /aaa/bbb

    Ya

    /aaa/bbb/

    /aaa/bbb

    Ya, garis miring di akhir pada jalur aturan diabaikan.

    /aaa/bbb

    /aaa/bbb/

    Ya, garis miring di akhir pada jalur permintaan dicocokkan.

    /aaa/bbb/ccc

    Ya, subjalur dari jalur permintaan dicocokkan.

  • Dua jalur aturan ditetapkan secara bersamaan

    Jenis pencocokan

    Jalur aturan (aturan routing)

    Jalur permintaan (akses pengguna)

    Apakah cocok dengan aturan?

    Pencocokan awalan (Prefix)

    • /

    • /aaa

    /aaa/ccc

    Ya, jalur permintaan mencocokkan awalan / dari jalur aturan.

    • /aaa

    • /

    /aaa/ccc

    Ya, jalur permintaan mencocokkan awalan /aaa dari jalur aturan.

    /ccc

    Ya, jalur permintaan mencocokkan awalan / dari jalur aturan.

    • /aaa

    • /bbb

    /ccc

    Tidak, awalannya tidak cocok.

Bagian berikut memberikan contoh ketiga jenis pencocokan tersebut:

Pencocokan awalan (Prefix)

Jalur URL dicocokkan berdasarkan awalan, dengan segmen dipisahkan oleh /. Pencocokan bersifat case-sensitive dan membandingkan setiap segmen jalur.

Dalam contoh YAML berikut, jika aturan routing ditetapkan ke /, semua jalur yang dimulai dengan /, seperti /hello, dapat dicocokkan dan diakses.

  1. Terapkan templat berikut untuk membuat Ingress.

    Lihat 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 versi sebelum 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. Jalankan perintah berikut untuk mengakses layanan.

    Ganti <ADDRESS> dengan nama domain instans ALB. Untuk mendapatkan nama domain tersebut, jalankan kubectl get ing.

    curl <ADDRESS>/hello
  3. Output yang diharapkan:

    {"hello":"coffee"}

Pencocokan eksak (Exact) atau Bawaan (ImplementationSpecific)

Dalam contoh YAML berikut, jika aturan routing ditetapkan ke /hello, hanya jalur /hello yang dapat dicocokkan dan diakses.

  1. Terapkan templat berikut untuk membuat Ingress.

    Lihat 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 versi sebelum 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. Jalankan perintah berikut untuk mengakses layanan.

    Ganti <ADDRESS> dengan nama domain instans ALB. Untuk mendapatkan nama domain tersebut, jalankan kubectl get ing.

    curl <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Konfigurasikan Pemeriksaan kesehatan

ALB Ingress mendukung Pemeriksaan kesehatan. Anda dapat mengonfigurasinya dengan menyetel anotasi berikut.

Lihat 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/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:
      # Konfigurasikan jalur konteks
      - path: /tea
        backend:
          service:
            name: tea-svc
            port:
              number: 80
      # Konfigurasikan jalur konteks
      - path: /coffee
        backend:
          service:
            name: coffee-svc
            port:
              number: 80

Untuk kluster versi sebelum 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:
      # Konfigurasikan jalur konteks.
      - path: /tea
        backend:
          serviceName: tea-svc
          servicePort: 80
      # Konfigurasikan jalur konteks.
      - path: /coffee
        backend:
          serviceName: coffee-svc
          servicePort: 80

Berikut adalah contoh anotasi:

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:
... ...

Parameter

Deskripsi

Nilai bawaan

alb.ingress.kubernetes.io/healthcheck-enabled

Menentukan apakah Pemeriksaan kesehatan diaktifkan untuk grup server backend.

  • true: mengaktifkan Pemeriksaan kesehatan.

  • false: menonaktifkan Pemeriksaan kesehatan.

false

alb.ingress.kubernetes.io/healthcheck-path

Jalur untuk Pemeriksaan kesehatan.

/

alb.ingress.kubernetes.io/healthcheck-protocol

Protokol untuk Pemeriksaan kesehatan.

  • HTTP: menggunakan protokol HTTP. Mengirim permintaan HEAD atau GET untuk mensimulasikan akses browser dan memeriksa apakah aplikasi server dalam kondisi sehat.

  • HTTPS: menggunakan protokol HTTPS. Mengirim permintaan HEAD atau GET untuk mensimulasikan akses browser dan memeriksa apakah aplikasi server dalam kondisi sehat.

  • TCP: menggunakan protokol TCP. Mengirim pesan jabat tangan SYN untuk memeriksa apakah port server aktif.

  • GRPC: menggunakan protokol gRPC. Mengirim permintaan POST atau GET untuk memeriksa apakah aplikasi server dalam kondisi sehat.

HTTP

alb.ingress.kubernetes.io/healthcheck-httpversion

Versi HTTP. Parameter ini berlaku ketika healthcheck-protocol diatur ke HTTP atau HTTPS.

  • HTTP1.0

  • HTTP1.1

HTTP1.1

alb.ingress.kubernetes.io/healthcheck-method

Metode untuk Pemeriksaan kesehatan.

  • HEAD

  • POST

  • GET

Penting

Jika healthcheck-protocol diatur ke GRPC, pilih POST atau GET.

HEAD

alb.ingress.kubernetes.io/healthcheck-httpcode

Kode status Pemeriksaan kesehatan. Server backend dianggap sehat hanya ketika permintaan probe berhasil dan mengembalikan kode status yang ditentukan.

Anda dapat menentukan satu atau beberapa opsi berikut. Pisahkan beberapa kode status dengan koma (,):

  • http_2xx

  • http_3xx

  • http_4xx

  • http_5xx

http_2xx

alb.ingress.kubernetes.io/healthcheck-code

Kode status Pemeriksaan kesehatan. Server backend dianggap sehat hanya ketika permintaan probe berhasil dan mengembalikan kode status yang ditentukan. Jika Anda menggunakan parameter ini bersama dengan healthcheck-httpcode, parameter ini memiliki prioritas lebih tinggi.

Opsi yang tersedia bergantung pada nilai healthcheck-protocol:

  • HTTP atau HTTPS:

    Anda dapat menentukan satu atau beberapa opsi berikut. Pisahkan beberapa kode status dengan koma (,):

    • http_2xx

    • http_3xx

    • http_4xx

    • http_5xx

  • GRPC: Nilainya harus dalam rentang [0, 99].

    Anda dapat menentukan hingga 20 rentang nilai. Pisahkan beberapa rentang dengan koma (,).

  • HTTP atau HTTPS

    Nilai bawaan: http_2xx

  • GRPC

    Nilai bawaan: 0

alb.ingress.kubernetes.io/healthcheck-timeout-seconds

Periode timeout Pemeriksaan kesehatan dalam detik (s). Rentang nilai: [1, 300].

5

alb.ingress.kubernetes.io/healthcheck-interval-seconds

Interval Pemeriksaan kesehatan dalam detik (s). Rentang nilai: [1, 50].

2

alb.ingress.kubernetes.io/healthy-threshold-count

Jumlah Pemeriksaan kesehatan berturut-turut yang berhasil yang diperlukan untuk menyatakan server backend dalam kondisi sehat. Rentang nilai: [2, 10].

3

alb.ingress.kubernetes.io/unhealthy-threshold-count

Jumlah Pemeriksaan kesehatan berturut-turut yang gagal yang diperlukan untuk menyatakan server backend dalam kondisi tidak sehat. Rentang nilai: [2, 10].

3

alb.ingress.kubernetes.io/healthcheck-connect-port

Port yang digunakan untuk Pemeriksaan kesehatan.

0

Catatan

0 menunjukkan bahwa port server backend digunakan untuk Pemeriksaan kesehatan.

Konfigurasikan Pengalihan HTTP ke HTTPS

ALB Ingress dapat mengalihkan permintaan HTTP ke Port HTTPS 443 menggunakan anotasi berikut.

Penting
  • Fitur ini hanya didukung untuk aturan pengalihan HTTP pada port listener 80.

  • Fitur ini hanya dapat digunakan bersama anotasi yang terkait dengan aksi pengalihan kustom, seperti RemoveHeader, InsertHeader, dan Cors lintas domain.

  • Untuk mengonfigurasi anotasi ini, pastikan listener HTTPS pada port 443 dikonfigurasi dalam AlbConfig. Untuk informasi selengkapnya, lihat Konfigurasikan listener ALB menggunakan AlbConfig.

Lihat contoh YAML lengkap

Untuk kluster versi 1.19 dan yang 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: NodePort
---
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

Untuk kluster versi 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: NodePort
---
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

Parameter

Deskripsi

Contoh anotasi

alb.ingress.kubernetes.io/ssl-redirect: "true"

Mengalihkan permintaan HTTP ke Port HTTPS 443.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/ssl-redirect: "true"
  name: demo-ssl
 ... ...

Dukung protokol backend HTTPS dan gRPC

ALB mendukung HTTPS dan gRPC sebagai protokol backend. Untuk menggunakannya, tambahkan anotasi berikut ke Ingress Anda.

Lihat 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 versi sebelum 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
Catatan

Setelah Ingress dibuat, protokol backend tidak dapat diubah. Untuk mengubah protokol, Anda harus menghapus lalu membuat ulang Ingress.

Parameter

Deskripsi

Contoh YAML

alb.ingress.kubernetes.io/backend-protocol

  • https: Layanan backend menggunakan protokol HTTPS.

  • grpc: Layanan backend menggunakan protokol gRPC.

    Saat Anda menggunakan Ingress untuk meneruskan layanan gRPC, Anda harus mengonfigurasi sertifikat SSL untuk nama domain yang sesuai dan berkomunikasi melalui protokol TLS.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/backend-protocol: "grpc"
  name: demo-alb-ingress
... ...

Konfigurasikan ekspresi reguler

Gunakan anotasi alb.ingress.kubernetes.io/use-regex: "true" untuk mengaktifkan mode ekspresi reguler, lalu konfigurasikan ekspresi reguler yang sesuai dalam kondisi atau aksi pengalihan kustom.

Penting

Anotasi ini hanya berlaku untuk aturan path dengan pathType: Prefix.

Lihat contoh YAML lengkap

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/use-regex: "true"  ## Mengizinkan penggunaan ekspresi reguler.
   alb.ingress.kubernetes.io/conditions.<YOUR-SVC-NAME>: | ## Ganti <YOUR-SVC-NAME> dengan nama layanan aktual. Harus sama dengan backend.service.name di bawah ini.
     [{
       "type": "Path",
       "pathConfig": {
           "values": [
              "~*/pathvalue1", ## Ekspresi reguler harus diawali dengan ~* atau ~ sebagai flag. Konten setelah ~* atau ~ adalah ekspresi reguler yang efektif. ~* menunjukkan pencocokan ekspresi reguler case-sensitive, dan ~ menunjukkan pencocokan ekspresi reguler case-insensitive.
              "/pathvalue2"    ## Pencocokan eksak tidak memerlukan awalan ~*.
           ]
       }
      }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test-path-for-alb
        pathType: Prefix
        backend:
          service:
            name: <YOUR-SVC-NAME> ## <YOUR-SVC-NAME> di sini harus sama dengan nama layanan yang ditentukan dalam anotasi kondisi pengalihan kustom untuk menunjukkan hubungan tersebut.
            port:
              number: 88

Parameter

Deskripsi

alb.ingress.kubernetes.io/use-regex: "true"

Mengaktifkan ekspresi reguler.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/use-regex: "true"  ## Mengizinkan penggunaan ekspresi reguler.
   alb.ingress.kubernetes.io/conditions.<YOUR-SVC-NAME>: | ## Ganti <YOUR-SVC-NAME> dengan nama layanan aktual. Harus sama dengan backend.service.name di bawah ini.
     [{
       "type": "Path",         ## Host juga didukung.
       "pathConfig": {
           "values": [
              "~*/pathvalue1", ## Ekspresi reguler harus diawali dengan ~* atau ~ sebagai flag. Konten setelah ~* atau ~ adalah ekspresi reguler yang efektif. ~* menunjukkan pencocokan ekspresi reguler case-sensitive, dan ~ menunjukkan pencocokan ekspresi reguler case-insensitive.
              "/pathvalue2"    ## Pencocokan eksak tidak memerlukan awalan ~*.
           ]
       }
      }]
... ...

alb.ingress.kubernetes.io/conditions.<YOUR-SVC-NAME>

Mengonfigurasi kondisi pengalihan kustom. Untuk informasi selengkapnya, lihat Kondisi pengalihan.

<YOUR-SVC-NAME> dengan nama layanan aktual. Harus sama dengan backend.service.name di bawah ini.

Aturan pencocokan ekspresi reguler:

Objek pencocokan

Awalan

Contoh aturan

Jalur klien

Cocok?

Deskripsi

Nama domain

Dimulai dengan ~

~test.example.com

test.EXAMPLE.com

Ya

Nama domain mendukung pencocokan ekspresi reguler case-insensitive.

Jalur

Dimulai dengan ~

~/api

/API

Ya

Jalur mendukung pencocokan ekspresi reguler case-insensitive.

Dimulai dengan ~*

~*/api

/Api

Tidak

Jalur mendukung pencocokan ekspresi reguler case-sensitive.

Konfigurasikan penulisan ulang

ALB Ingress mendukung fitur penulisan ulang. Setelah menerima permintaan klien, fitur ini memodifikasi jalur permintaan lalu mengirim permintaan tersebut ke layanan backend. Penulisan ulang diimplementasikan menggunakan dua anotasi berikut:

  • alb.ingress.kubernetes.io/rewrite-target: /<path>/${number}: Mengaktifkan penulisan ulang dan menentukan jalur yang ditulis ulang.

    Penting
    • Gunakan format ${number} untuk merepresentasikan variabel yang diperoleh dari jalur asli melalui ekspresi reguler. Anda dapat mengonfigurasi satu atau beberapa variabel, seperti ${1}, ${2}, atau ${3}. Anda dapat memperoleh maksimal tiga variabel dari jalur asli.

    • pathType dari Ingress harus diatur ke Prefix.

  • alb.ingress.kubernetes.io/use-regex: Menentukan apakah akan menggunakan ekspresi reguler dalam jalur. Ini diaktifkan secara bawaan setelah rewrite-target dikonfigurasi.

    • "true": Gunakan ekspresi reguler.

    • "false": Jangan gunakan ekspresi reguler. Jika jalur berisi karakter khusus seperti “%#;!()[]^,”\", sumber daya Ingress gagal dibuat.

Contoh konfigurasi

Skenario 1: Hapus awalan

Dalam contoh YAML berikut, path: /something(/|$)(.*) menggunakan ekspresi reguler untuk membagi jalur permintaan klien menjadi tiga bagian:

  • /something: Mencocokkan awalan yang akan dihapus.

  • (/|$): Grup penangkapan pertama. Mencocokkan / setelah /something atau akhir jalur ($).

  • (.*): Grup penangkapan kedua. Mencocokkan semua konten setelah /something/ dan digunakan dalam jalur yang ditulis ulang menggunakan ${2}.

Jalur yang ditulis ulang yang dikonfigurasi dalam anotasi alb.ingress.kubernetes.io/rewrite-target adalah / (awalan jalur standar) + ${2} (konten grup penangkapan kedua). Tabel berikut menunjukkan hasil penulisan ulang jalur:

Jalur klien asli

Cocok dengan ekspresi reguler jalur?

Rewritten Path

/something

Cocok. Grup penangkapan kedua kosong.

/

/something/

Cocok. Grup penangkapan kedua kosong.

/

/something/new

Cocok. Konten grup penangkapan kedua adalah new.

/new

/something-new/item

Tidak cocok. Dalam contoh ini, tidak ada aturan routing yang cocok, dan ALB Ingress mengembalikan kode status 503.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/use-regex: "true" # Mengizinkan bidang path menggunakan ekspresi reguler.
    alb.ingress.kubernetes.io/rewrite-target: /${2} # Anotasi ini mendukung penggantian ekspresi reguler.
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

Contoh berikut menangkap dan menyusun ulang beberapa bagian dari jalur /items/(.*)/(.*)/(.*). Jalur yang ditulis ulang adalah / (awalan jalur standar) + ${2} (konten grup penangkapan kedua) + ?code= + ${3} (konten grup penangkapan ketiga). Tabel berikut menunjukkan hasil penulisan ulang jalur:

Contoh ini secara eksplisit memerlukan empat segmen dalam jalur. Metode ini mengharuskan klien menggunakan format jalur tetap.

Jalur klien asli

Cocok dengan ekspresi reguler jalur?

Jalur yang ditulis ulang

/items/electronics/computers/554

Cocok. Konten grup penangkapan kedua adalah computers, dan konten grup penangkapan ketiga adalah 554.

/computers?code=554.

/items/produce/fruits/12

Cocok. Konten grup penangkapan kedua adalah fruits, dan konten grup penangkapan ketiga adalah 12.

/fruits?code=12

/items/headphones/5

Tidak cocok. Dalam contoh ini, tidak ada aturan routing yang cocok, dan ALB Ingress mengembalikan kode status 503.

/drinks/41

Tidak cocok. Dalam contoh ini, tidak ada aturan routing yang cocok, dan ALB Ingress mengembalikan kode status 503.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/use-regex: "true" # Mengizinkan bidang path menggunakan ekspresi reguler.
    alb.ingress.kubernetes.io/rewrite-target: /${2}?code=${3} # Anotasi ini mendukung penggantian ekspresi reguler.
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 beberapa jalur ke satu jalur

Contoh berikut mencocokkan beberapa jalur (/app-a(/|$)(.*) dan /app-b(/|$)(.*)) dengan ekspresi reguler dan menulis ulangnya ke satu jalur. Jalur yang ditulis ulang adalah /app-c/ + ${2} (konten grup penangkapan kedua). Tabel berikut menunjukkan hasil penulisan ulang jalur:

Jalur klien asli

Cocok dengan ekspresi reguler jalur?

Jalur yang ditulis ulang

/app-a/item1

Cocok. Konten grup penangkapan kedua adalah item1.

/app-c/item1

/app-a/item2

Cocok. Konten grup penangkapan kedua adalah item2.

/app-c/item2

/app-a atau /app-a/

Cocok. Grup penangkapan kedua kosong.

/app-c/

/drinks/41

Tidak cocok. Dalam contoh ini, tidak ada aturan routing yang cocok, dan ALB Ingress mengembalikan kode status 503.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/use-regex: "true" # Mengizinkan bidang path menggunakan ekspresi reguler.
    alb.ingress.kubernetes.io/rewrite-target: /app-c/${2} # Anotasi ini mendukung penggantian ekspresi reguler.
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 alb.ingress.kubernetes.io/rewrite-target hanya mendukung perubahan jalur. Untuk mengubah bagian lain dari URL, seperti nama domain dan parameter, Anda dapat menggunakan aturan pengalihan kustom.

Verifikasi pencocokan aturan penulisan ulang

Anda dapat menggunakan perintah sed untuk menguji apakah jalur tertentu yang digunakan klien cocok dengan ekspresi reguler yang dikonfigurasi dalam `path` dan untuk melihat jalur baru yang ditulis ulang.

Ambil jalur penangkapan /items/(.*)/(.*)/(.*) dan aturan penulisan ulang /${2}?code=${3} dari Skenario 2: Tangkap dan susun ulang beberapa bagian sebagai contoh:

  1. Simpan perintah contoh berikut ke path2.txt:

    /items/electronics/computers/554
    /items/produce/fruits/12
    /items/headphones/5
    /drinks/41
  2. Periksa apakah jalur cocok dan lihat jalur yang ditulis ulang:

    Perintah berikut menggunakan ekspresi reguler jalur (/items/(.*)/(.*)/(.*)) dan jalur yang ditulis ulang (/${2}?code=${3}) dari contoh. Dalam perintah sed, karakter khusus / harus di-escape dengan backslash \, dan sintaks untuk konten grup penangkapan diubah dari ${2} menjadi \2.
    sed -E 's#\/items\/(.*)\/(.*)\/(.*)#Matched: [&]  --->  Rewritten: [/\2?code=\3]#' path2.txt

    Output yang diharapkan adalah sebagai berikut. Dua jalur pertama cocok dengan aturan penulisan ulang dan ditulis ulang ke jalur baru. Dua jalur terakhir tidak cocok dan tidak ditulis ulang.

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

Konfigurasikan port listener kustom

ALB Ingress mendukung port listener kustom melalui anotasi. Ini memungkinkan layanan mengekspos port 80 (HTTP) dan port 443 (HTTPS) secara bersamaan.

Lihat 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 versi sebelum 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
Penting

ALB tidak mendukung pembuatan listener baru secara langsung dalam Ingress. Untuk memastikan Ingress berfungsi dengan benar, Anda harus terlebih dahulu membuat port dan protokol listener yang diperlukan dalam AlbConfig, lalu mengaitkan listener tersebut dengan layanan dalam Ingress. Untuk informasi selengkapnya tentang cara membuat listener ALB, lihat Konfigurasikan listener ALB menggunakan AlbConfig.

Parameter

Deskripsi

Contoh YAML

alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'

Memungkinkan layanan mendengarkan pada port 80 dan port 443.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
   alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
... ...

Konfigurasikan prioritas aturan pengalihan

Secara bawaan, aturan pengalihan ALB diprioritaskan sebagai berikut:

  • Ingress yang berbeda diurutkan berdasarkan urutan leksikografis namespace/name. Urutan leksikografis yang lebih kecil menunjukkan prioritas yang lebih tinggi.

    Namespace dibandingkan terlebih dahulu. Jika namespace-nya sama, nama dibandingkan karakter per karakter.
  • Dalam Ingress yang sama, aturan diurutkan berdasarkan urutannya dalam bidang rules. Aturan yang muncul lebih awal memiliki prioritas lebih tinggi.

    rules:
      - host: www.example.com
        http: ...
      - host: www.test.com
        http: ...

Jika Anda tidak ingin mengubah namespace/name dari Ingress, Anda dapat mengonfigurasi anotasi Ingress berikut untuk menentukan prioritas aturan pengalihan ALB:

Lihat 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 versi sebelum 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

Parameter

Deskripsi

Rentang nilai

Contoh YAML

alb.ingress.kubernetes.io/order

Menentukan prioritas aturan pengalihan ALB. Nilai yang lebih kecil menunjukkan prioritas yang lebih tinggi.

Prioritas aturan dalam listener yang sama harus unik.

[1,1000]

Nilai bawaan: 10

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
   alb.ingress.kubernetes.io/order: "2"
spec:
... ...

Implementasikan rilis bertahap menggunakan anotasi

ALB mendukung routing kompleks dan menyediakan kemampuan rilis bertahap berdasarkan header, cookie, dan bobot. Anda dapat mengonfigurasi anotasi berikut untuk secara fleksibel mengimplementasikan berbagai kebijakan rilis bertahap. Untuk informasi selengkapnya tentang praktik terbaik rilis bertahap, lihat Implementasikan rilis bertahap menggunakan ALB Ingress.

Parameter

Deskripsi

Catatan

alb.ingress.kubernetes.io/canary: "true"

Mengaktifkan fitur rilis bertahap

  • Traffic rilis bertahap dapat didistribusikan berdasarkan header, cookie, atau bobot.

    Urutan prioritasnya adalah: Header > Cookie > Bobot (dari tertinggi ke terendah).
  • Selama rilis bertahap, jangan hapus aturan aslinya. Jika tidak, layanan mungkin menjadi abnormal. Setelah Anda memverifikasi rilis bertahap, perbarui layanan backend dalam Ingress asli ke layanan baru, lalu hapus Ingress rilis bertahap.

  • Distribusikan traffic rilis bertahap berdasarkan header tertentu

    Parameter

    Deskripsi

    Contoh YAML

    alb.ingress.kubernetes.io/canary-by-header

    Aturan ini memungkinkan Anda menyesuaikan header permintaan dan nilai yang sesuai. Anda harus mengonfigurasi kedua anotasi tersebut.

    • Ketika header dan header-value dalam permintaan cocok dengan nilai yang ditetapkan, traffic permintaan didistribusikan ke titik akhir layanan rilis bertahap.

    • Permintaan lain yang tidak cocok didistribusikan ke layanan rilis bertahap berikutnya sesuai dengan prioritas rilis bertahap.

    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
    spec:
    ... ...

    alb.ingress.kubernetes.io/canary-by-header-value

    Jika header permintaan berisi location: hz, traffic diarahkan ke layanan rilis bertahap. Permintaan lain didistribusikan ke layanan berdasarkan kebijakan bobot yang dikonfigurasi. Berikut adalah contoh konfigurasi.

    Lihat 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 versi sebelum 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
  • Distribusikan traffic rilis bertahap berdasarkan cookie tertentu

    Parameter

    Nilai cookie

    Contoh YAML

    alb.ingress.kubernetes.io/canary-by-cookie

    • always: Semua traffic permintaan didistribusikan ke titik akhir layanan rilis bertahap.

    • never: Tidak ada traffic permintaan yang didistribusikan ke titik akhir layanan rilis bertahap.

    Rilis bertahap berbasis cookie tidak mendukung pengaturan kustom, hanya always dan never.

    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
      ... ... 

    Jika header permintaan berisi Cookie: demo=always, traffic diarahkan ke layanan rilis bertahap. Jika header permintaan berisi Cookie: demo=never, traffic tidak diarahkan ke layanan rilis bertahap. Berikut adalah contoh konfigurasi.

    Lihat 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 versi sebelum 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
  • Distribusikan traffic berdasarkan bobot

    Parameter

    Deskripsi

    Contoh YAML

    alb.ingress.kubernetes.io/canary-weight

    Menetapkan persentase permintaan yang akan dikirim ke layanan tertentu. Nilainya harus berupa bilangan bulat dari 0 hingga 100.

    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

    Contoh berikut menetapkan bobot layanan rilis bertahap ke 50%:

    Lihat 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 versi sebelum 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

Implementasikan persistensi sesi menggunakan anotasi

ALB Ingress mendukung persistensi sesi melalui anotasi berikut.

Lihat 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"   # Saat cookie kustom didukung, jenis penyisipan cookie harus Server.
    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 versi sebelum 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"  # Saat cookie kustom didukung, jenis penyisipan cookie harus Server.
    alb.ingress.kubernetes.io/cookie-timeout: "1800"
    alb.ingress.kubernetes.io/cookie: "test"
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
      #Konfigurasikan jalur konteks.
      - path: /tea2
        pathType: ImplementationSpecific
        backend:
          serviceName: tea-svc
          servicePort: 80
      #Konfigurasikan jalur konteks.
      - path: /coffee2
        pathType: ImplementationSpecific
        backend:
          serviceName: coffee-svc
          servicePort: 80

Berikut adalah contoh anotasi:

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"   # Saat cookie kustom didukung, jenis penyisipan cookie harus Server.
    alb.ingress.kubernetes.io/cookie-timeout: "1800"
    alb.ingress.kubernetes.io/cookie: "test"
spec:
... ...

Parameter

Deskripsi

Nilai bawaan

alb.ingress.kubernetes.io/sticky-session

Menentukan apakah persistensi sesi diaktifkan.

  • true: diaktifkan

  • false: dinonaktifkan

false

alb.ingress.kubernetes.io/sticky-session-type

Metode penanganan cookie.

  • Insert: Sisipkan cookie. Saat klien melakukan permintaan pertama kali, load balancer menyisipkan cookie (SERVERID) ke respons. Saat klien melakukan permintaan berikutnya dengan cookie ini, load balancer meneruskan permintaan tersebut ke server backend yang sebelumnya direkam.

  • Server: Tulis ulang cookie. Saat load balancer mendeteksi cookie kustom dari pengguna, load balancer menulis ulang cookie aslinya. Saat klien melakukan permintaan berikutnya dengan cookie baru ini, load balancer meneruskan permintaan tersebut ke server backend yang sebelumnya direkam.

Catatan

Parameter ini berlaku saat StickySessionEnabled diatur ke true untuk grup server. Untuk informasi selengkapnya tentang parameter grup server, lihat CreateServerGroup.

Insert

alb.ingress.kubernetes.io/cookie-timeout

Periode timeout cookie dalam detik. Rentang nilai: 1 hingga 86400.

Anotasi ini berlaku saat sticky-session-type diatur ke Insert.

1000

alb.ingress.kubernetes.io/cookie

Nilai cookie kustom.

Anotasi ini wajib dan tidak boleh kosong saat sticky-session-type diatur ke Server.

""

Tentukan algoritma penyeimbangan beban untuk grup server

Anda dapat menggunakan anotasi berikut dalam ALB Ingress untuk menentukan algoritma penyeimbangan beban untuk grup server. Tabel berikut menjelaskan nilai yang valid.

Lihat 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" # Anda dapat mengatur ini ke wrr, sch, atau wlc sesuai kebutuhan.
    alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test" # Parameter ini wajib hanya saat algoritma penyeimbangan beban adalah uch. Tidak diperlukan untuk algoritma wrr, sch, atau wlc.
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 versi sebelum 1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/backend-scheduler: "uch" # Anda dapat mengatur ini ke wrr, sch, atau wlc sesuai kebutuhan.
    alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test" # Parameter ini wajib hanya saat algoritma penyeimbangan beban adalah uch. Tidak diperlukan untuk algoritma wrr, sch, atau wlc.
  name: cafe-ingress
spec:
  ingressClassName: alb
  rules:
    - host: demo.alb.ingress.top
      http:
        paths:
          - backend:
              serviceName: tea-svc
              servicePort: 80
            path: /tea
            pathType: ImplementationSpecific

Parameter

Nilai

Deskripsi

alb.ingress.kubernetes.io/backend-scheduler

wrr

Weighted round-robin. Server backend dengan bobot lebih tinggi lebih mungkin dipilih. Ini adalah nilai bawaan.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    alb.ingress.kubernetes.io/backend-scheduler: "uch" # Anda dapat mengatur ini ke wrr, sch, atau wlc sesuai kebutuhan.
    alb.ingress.kubernetes.io/backend-scheduler-uch-value: "test" # Parameter ini wajib hanya saat algoritma penyeimbangan beban adalah uch. Tidak diperlukan untuk algoritma wrr, sch, atau wlc.
spec:
... ... 

wlc

Weighted least connections. Pemilihan berdasarkan bobot yang ditetapkan untuk setiap server backend dan beban aktualnya (jumlah koneksi). Jika bobotnya sama, server dengan koneksi paling sedikit diprioritaskan.

sch

Source IP hash. Permintaan didistribusikan berdasarkan hash dari alamat IP sumber klien. Permintaan dari alamat IP yang sama diteruskan ke server backend yang sama.

uch

URL parameter hash.

Gunakan anotasi alb.ingress.kubernetes.io/backend-scheduler-uch-value untuk menentukan parameter URL untuk penghashan konsisten.

Konfigurasikan akses lintas domain

ALB Ingress mendukung pengendalian perilaku lintas domain melalui parameter anotasi berikut. Anda dapat menentukan situs yang diizinkan, metode permintaan, header permintaan dan respons, penanganan kredensial, serta durasi cache preflight (OPTIONS) untuk memenuhi persyaratan akses lintas domain dalam berbagai skenario keamanan dan bisnis.

Lihat contoh YAML lengkap

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"
    alb.ingress.kubernetes.io/cors-allow-origin: "Nama domain lintas domain yang diizinkan"
spec:
  ingressClassName: alb
  rules:
  - host: demo.alb.ingress.top
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: cloud-nodeport
            port:
              number: 80

Berikut adalah contoh anotasi:

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"
    alb.ingress.kubernetes.io/cors-allow-origin: "Nama domain lintas domain yang diizinkan"
spec:
... ...

Parameter

Deskripsi

Nilai bawaan

alb.ingress.kubernetes.io/enable-cors

Mengaktifkan konfigurasi CORS lintas domain.

Nilai bawaan: "true"

alb.ingress.kubernetes.io/cors-allow-origin

Situs yang diizinkan mengakses sumber daya server melalui browser.

Pisahkan situs dengan koma (,). Nilai tunggal harus dimulai dengan http:// atau https:// diikuti nama domain yang valid atau nama domain wildcard tingkat pertama. Alamat IP tidak didukung.
  • Nilai bawaan: *

  • Contoh: alb.ingress.kubernetes.io/cors-allow-origin: "https://example.com:4443, http://aliyundoc.com, https://example.org:1199"

alb.ingress.kubernetes.io/cors-allow-methods

Metode lintas domain yang diizinkan.

Metode tidak case-sensitive. Pisahkan metode lintas domain dengan koma (,).
  • Nilai bawaan: GET, PUT, POST, DELETE, PATCH, OPTIONS

  • Contoh: alb.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"

alb.ingress.kubernetes.io/cors-allow-headers

Header permintaan yang dapat disebarkan lintas domain.

Anda dapat mengatur ini ke * atau satu atau beberapa nilai. Pisahkan beberapa nilai dengan koma (,). Nilai tunggal hanya dapat berisi huruf besar, huruf kecil, dan angka. Tidak boleh diawali atau diakhiri dengan garis bawah (_) atau tanda hubung (-). Panjang maksimum adalah 32 karakter.
  • Nilai bawaan: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization

  • Contoh: alb.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For, X-app123-XPTO"

alb.ingress.kubernetes.io/cors-expose-headers

Daftar header yang dapat diekspos.

Anda dapat mengatur ini ke * atau satu atau beberapa nilai. Pisahkan beberapa nilai dengan koma (,). Nilai tunggal hanya dapat berisi huruf besar, huruf kecil, dan angka. Tidak boleh diawali atau diakhiri dengan garis bawah (_) atau tanda hubung (-). Panjang maksimum adalah 32 karakter.
  • Nilai bawaan: ""

  • Contoh: alb.ingress.kubernetes.io/cors-expose-headers: "*,X-CustomResponseHeader"

alb.ingress.kubernetes.io/cors-allow-credentials

Menentukan apakah kredensial diizinkan dibawa selama akses lintas domain.

  • Nilai bawaan: true

  • Contoh: alb.ingress.kubernetes.io/cors-allow-credentials: "false"

alb.ingress.kubernetes.io/cors-max-age

Untuk permintaan tidak sederhana, ini menetapkan durasi cache maksimum dalam detik untuk permintaan preflight OPTIONS di browser. Nilainya harus dalam rentang [0, 172800].

Nilai bawaan: 172800

Koneksi persisten backend

Penyeimbangan beban tradisional menggunakan koneksi singkat untuk mengakses grup server backend. Setiap permintaan memerlukan pembentukan dan penghentian koneksi TCP, yang dapat menjadikan konektivitas jaringan sebagai bottleneck untuk sistem berkinerja-tinggi. Dengan menggunakan koneksi persisten backend, Anda dapat secara signifikan mengurangi konsumsi sumber daya untuk penanganan koneksi dan sangat meningkatkan kinerja pemrosesan. Berikut adalah contoh konfigurasi:

Lihat contoh YAML lengkap

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

Parameter

Deskripsi

Contoh YAML

alb.ingress.kubernetes.io/backend-keepalive: "true"

Mengaktifkan koneksi persisten backend. Saat diaktifkan, ini mengurangi kebutuhan untuk membentuk dan menghentikan koneksi TCP untuk setiap permintaan, sehingga mengurangi konsumsi sumber daya dan meningkatkan kemampuan pemrosesan sistem berkinerja-tinggi.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress
  annotations:
    alb.ingress.kubernetes.io/backend-keepalive: "true"
spec:

Dukung lampiran IPv6 untuk grup server

Untuk melampirkan Pod IPv4 dan IPv6 ke grup server yang telah Anda aktifkan lampiran IPv6-nya, Anda harus terlebih dahulu mengaktifkan fitur dual-stack untuk kluster tersebut. Untuk informasi selengkapnya, lihat Buat Kluster ACK yang dikelola.

Catatan

Berikut adalah batasan untuk mengaktifkan lampiran IPv6:

  • Jika VPC tempat grup server berada tidak memiliki IPv6 yang diaktifkan, Anda tidak dapat mengaktifkan fitur lampiran IPv6 untuk grup server tersebut.

  • Saat Anda melampirkan grup server tipe IP atau tipe Function Compute melalui aksi pengalihan kustom, Anda tidak dapat mengaktifkan fitur lampiran IPv6.

  • Untuk Ingress yang terkait dengan instans ALB tipe IPv4, Anda tidak dapat mengaktifkan fitur lampiran IPv6 untuk grup server tersebut.

Lihat contoh YAML lengkap

apiVersion: v1
kind: Service
metadata:
  name: tea-svc
  annotations:
spec:
  # Saat mengonfigurasi dual-stack, ipFamilies harus diatur ke IPv4 atau IPv6, dan ipFamilyPolicy harus diatur ke RequireDualStack atau PreferDualStack.
  ipFamilyPolicy: RequireDualStack
  ipFamilies:
  - IPv4
  - IPv6
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: tea
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tea
spec:
  replicas: 2
  selector:
    matchLabels:
      app: tea
  template:
    metadata:
      labels:
        app: tea
    spec:
      containers:
      - name: tea
        image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
        ports:
        - containerPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    alb.ingress.kubernetes.io/enable-ipv6: "true"
spec:
  ingressClassName: alb
  rules:
   - host: demo.alb.ingress.top
     http:
      paths:
      - path: /tea
        pathType: Prefix
        backend:
          service:
            name: tea-svc
            port:
              number: 80
Layanan dan ALB Ingress harus dikonfigurasi untuk mendukung dual-stack. Setelah Anda membuat instans ALB yang mendukung dual-stack, Anda dapat melampirkan server backend IPv4 dan IPv6 ke grup server tersebut.

Objek konfigurasi

Parameter konfigurasi

Nilai

Deskripsi

Contoh YAML

Layanan

ipFamilies

  • IPv4

  • IPv6

Menentukan jenis alamat IP yang tersedia untuk Layanan.

apiVersion: v1
kind: Service
metadata:
  name: tea-svc
  annotations:
spec:
  # Saat mengonfigurasi dual-stack, ipFamilies harus diatur ke IPv4 atau IPv6, dan ipFamilyPolicy harus diatur ke RequireDualStack atau PreferDualStack.
  ipFamilyPolicy: RequireDualStack
  ipFamilies:
  - IPv4
  - IPv6
... ...

ipFamilyPolicy

  • RequireDualStack

  • PreferDualStack

Menetapkan kebijakan IP untuk Layanan. Dual-stack didukung.

ALB Ingress

alb.ingress.kubernetes.io/enable-ipv6

"true"

Mengaktifkan fitur lampiran IPv6 untuk grup server.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    alb.ingress.kubernetes.io/enable-ipv6: "true"
spec:
... ...

Dukung Pembatasan kecepatan QPS

ALB mendukung Pembatasan kecepatan QPS untuk aturan pengalihan. Anda dapat mengonfigurasi anotasi berikut untuk mengimplementasikan Pembatasan kecepatan QPS.

Lihat contoh YAML lengkap

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

Deskripsi

Contoh YAML

alb.ingress.kubernetes.io/traffic-limit-qps

Menetapkan batas atas untuk Pembatasan kecepatan QPS pada aturan pengalihan. Rentang nilai: [1, 1000000]

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    alb.ingress.kubernetes.io/traffic-limit-qps: "50"
spec:
... ...

Backend mulai lambat

Setelah Pod baru ditambahkan ke backend layanan, jika ALB Ingress langsung mendistribusikan traffic ke Pod baru tersebut, hal ini dapat menyebabkan lonjakan sementara pada penggunaan CPU atau memori, yang mengakibatkan kesalahan akses. Dengan mulai lambat, ALB Ingress secara bertahap mentransfer traffic ke Pod baru tersebut, sehingga mengurangi dampak lonjakan traffic mendadak. Berikut adalah contoh konfigurasi:

Lihat 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

Parameter

Deskripsi

Contoh YAML

alb.ingress.kubernetes.io/slow-start-enabled

Menentukan apakah fitur mulai lambat diaktifkan. Secara bawaan dinonaktifkan.

  • true: mengaktifkan fitur mulai lambat.

  • false: menonaktifkan fitur mulai lambat.

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
... ...

alb.ingress.kubernetes.io/slow-start-duration

Waktu yang dibutuhkan agar traffic secara bertahap meningkat setelah mulai lambat selesai. Durasi yang lebih lama berarti peningkatan traffic yang lebih lambat. Satuannya adalah detik (s). Nilainya harus dalam rentang [30, 900]. Nilai bawaan adalah 30 detik.

Pengurasan koneksi

Saat sebuah Pod memasuki status Terminating, ALB Ingress menghapusnya dari grup server backend. Namun, koneksi yang sudah ada dari instans ALB ke Pod tersebut tidak langsung dihentikan. Hal ini dapat mencegah layanan dalam Pod dimatikan secara elegan atau dapat menyebabkan kesalahan permintaan. Untuk menghindari masalah ini, Anda dapat menggunakan fitur pengurasan koneksi ALB. Saat sebuah Pod dihapus atau gagal dalam Pemeriksaan kesehatan, ALB Ingress memungkinkan permintaan yang sudah ada untuk diselesaikan dalam periode timeout tertentu lalu menutup koneksi tersebut. Proses ini memastikan layanan offline dengan lancar. Untuk informasi selengkapnya, lihat Pastikan shutdown layanan lancar dengan pengurasan koneksi ALB.

Penting

Sebelum periode timeout pengurasan koneksi berakhir, ALB Ingress tidak dapat menjamin bahwa Pod tersebut masih berjalan. Anda dapat mengonfigurasi spec.terminationGracePeriodSeconds untuk Pod tersebut atau menggunakan preStop Hook untuk mengontrol ketersediaan Pod dalam status Terminating.

Lihat 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: 80

Parameter

Deskripsi

Contoh YAML

alb.ingress.kubernetes.io/connection-drain-enabled

Menentukan apakah pengurasan koneksi diaktifkan. Secara bawaan dinonaktifkan.

  • true: mengaktifkan pengurasan koneksi.

  • false: menonaktifkan pengurasan koneksi.

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
... ...

alb.ingress.kubernetes.io/connection-drain-timeout

Periode timeout pengurasan koneksi dalam detik (s). Nilainya harus dalam rentang [0, 900]. Nilai bawaan adalah 300 detik.

Nonaktifkan penyeimbangan beban lintas zona

Secara bawaan, ALB mengaktifkan penyeimbangan beban lintas zona. Artinya, traffic didistribusikan secara merata ke layanan backend di berbagai zona dalam wilayah yang sama. Jika Anda menonaktifkan penyeimbangan beban lintas zona untuk grup server ALB, traffic hanya didistribusikan di antara layanan backend dalam zona yang sama.

Penting

Untuk menonaktifkan penyeimbangan beban lintas zona, pastikan setiap zona memiliki layanan backend yang tersedia dan server tersebut memiliki sumber daya yang cukup. Lakukan operasi ini dengan hati-hati untuk menghindari gangguan pada layanan Anda.

Contoh berikut menunjukkan cara menonaktifkan penyeimbangan beban lintas zona:

Lihat contoh YAML lengkap

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress
  namespace: default
  annotations:
    alb.ingress.kubernetes.io/cross-zone-enabled: "false"
spec:
  ingressClassName: alb
  rules:
  - host: alb.ingress.alibaba.com
    http:
      paths:
      - path: /test
        pathType: Prefix
        backend:
          service:
            name: tea-svc
            port:
              number: 80

Parameter

Deskripsi

Contoh YAML

alb.ingress.kubernetes.io/cross-zone-enabled

Menentukan apakah akan menonaktifkan pengalihan lintas zona. Secara bawaan diaktifkan.

  • true: mengaktifkan pengalihan lintas zona.

  • false: menonaktifkan pengalihan lintas zona.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-ingress
  namespace: default
  annotations:
    alb.ingress.kubernetes.io/cross-zone-enabled: "false"
... ...