全部产品
Search
文档中心

Container Service for Kubernetes:Penggunaan lanjutan layanan ALB Ingress

更新时间:Jan 01, 2026

Dalam kluster ACK, ALB Ingress menyediakan Load balancing lapisan 7 untuk layanan dengan mengelola objek API yang dapat diakses secara eksternal. Topik ini menjelaskan cara menggunakan ALB Ingress untuk meneruskan permintaan dari nama domain atau jalur URL yang berbeda ke kelompok 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 standar tertentu atau nama domain kosong. Bagian berikut menyediakan contoh.

Teruskan permintaan berdasarkan nama domain standar

Pada contoh YAML berikut, jalur routing diatur ke /hello. Permintaan ke demo.domain.ingress.top/hello diteruskan ke layanan backend.

  1. Terapkan templat berikut untuk membuat Service, deployment, dan Ingress. Permintaan diteruskan ke Service melalui nama domain yang ditentukan 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 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: 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. Jalankan perintah berikut untuk mengakses layanan menggunakan nama domain standar yang ditentukan.

    Ganti ADDRESS dengan nama domain instans ALB. Anda dapat menjalankan kubectl get ing untuk mendapatkan nama domain tersebut.

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

    Output yang diharapkan:

    {"hello":"coffee"}

Teruskan permintaan berdasarkan nama domain kosong

Pada contoh YAML berikut, nama domain dikosongkan dan jalur routing diatur ke /hello. Permintaan ke <ADDRESS>/hello diteruskan 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 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: 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. Jalankan perintah berikut untuk mengakses layanan menggunakan nama domain kosong.

    Ganti ADDRESS dengan nama domain instans ALB. Anda dapat menjalankan kubectl get ing untuk mendapatkan nama domain tersebut.

    curl <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Teruskan permintaan berdasarkan jalur URL

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

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

  • Bawaan (ImplementationSpecific): Logika spesifik ditentukan oleh controller Ingress. Pada ALB Ingress Controller, ini merupakan pencocokan eksak (Exact). Jika bidang path tidak ditentukan, ALB Ingress menggunakan / sebagai jalur bawaan.

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

Penting
  • Jika pathType diatur ke Exact atau Prefix, Anda harus mengatur 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 aturan cocok?

    Pencocokan awalan (Prefix)

    /

    / (mencocokkan semua aturan)

    Ya

    /foo

    • /foo

    • /foo/

    Ya

    /foo/

    • /foo

    • /foo/

    Ya

    /aaa

    /ccc

    Tidak, awalan 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 aturan cocok?

    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.

  • Mengatur dua jalur aturan sekaligus

    Jenis pencocokan

    Jalur aturan (aturan routing)

    Jalur permintaan (akses pengguna)

    Apakah aturan cocok?

    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, awalan tidak cocok.

Bagian berikut menyediakan contoh ketiga jenis pencocokan tersebut:

Pencocokan awalan (Prefix)

Jalur URL menggunakan metode pencocokan awalan di mana segmen jalur dipisahkan oleh /. Pencocokan bersifat case-sensitive dan membandingkan setiap elemen dalam segmen jalur secara berurutan.

Pada contoh YAML berikut, aturan routing dikonfigurasi sebagai /. Semua jalur yang dimulai dengan /, seperti /hello, akan 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-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. Anda dapat menjalankan kubectl get ing untuk mendapatkan nama domain tersebut.

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

    {"hello":"coffee"}

Pencocokan eksak (Exact) atau Bawaan (ImplementationSpecific)

Pada contoh YAML berikut, aturan routing dikonfigurasi sebagai /hello. Hanya jalur /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 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. Anda dapat menjalankan kubectl get ing untuk mendapatkan nama domain tersebut.

    curl <ADDRESS>/hello

    Output yang diharapkan:

    {"hello":"coffee"}

Konfigurasikan pemeriksaan kesehatan

ALB Ingress mendukung pemeriksaan kesehatan. Anda dapat mengonfigurasi pemeriksaan kesehatan dengan mengatur anotasi berikut.

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

Blok kode berikut menunjukkan 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 kelompok server backend.

  • true: Mengaktifkan pemeriksaan kesehatan.

  • false: Menonaktifkan pemeriksaan kesehatan.

false

alb.ingress.kubernetes.io/healthcheck-path

Jalur pemeriksaan kesehatan.

/

alb.ingress.kubernetes.io/healthcheck-protocol

Protokol yang digunakan 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 protokol HTTP. Parameter ini berlaku saat healthcheck-protocol diatur ke HTTP atau HTTPS.

  • HTTP1.0

  • HTTP1.1

HTTP1.1

alb.ingress.kubernetes.io/healthcheck-method

Metode 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 jika permintaan probe berhasil dan mengembalikan kode status yang ditentukan.

Anda dapat memasukkan 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 jika 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 memasukkan satu atau beberapa opsi berikut. Pisahkan beberapa kode status dengan koma (,).

    • http_2xx

    • http_3xx

    • http_4xx

    • http_5xx

  • GRPC: Rentang nilai adalah [0, 99].

    Anda dapat memasukkan rentang nilai. Anda dapat memasukkan hingga 20 rentang. 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 adalah [1, 300].

5

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

Interval pemeriksaan kesehatan dalam detik (s). Rentang nilai adalah [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 adalah [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 adalah [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 menggunakan anotasi berikut untuk mengalihkan permintaan HTTP ke Port HTTPS 443.

Penting
  • Fitur ini hanya dapat dikonfigurasi pada aturan pengalihan HTTP yang menggunakan port listener 80.

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

  • Untuk mengonfigurasi anotasi ini, Anda harus memastikan bahwa listener HTTPS untuk port 443 telah dikonfigurasi dalam AlbConfig. Untuk informasi selengkapnya, lihat Konfigurasikan listener ALB melalui AlbConfig.

Perluas untuk melihat 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
 ... ...

Dukungan protokol HTTPS dan gRPC untuk backend

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

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 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 Ingress dan membuat yang baru.

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, konfigurasikan sertifikat SSL untuk nama domain dan gunakan protokol TLS untuk komunikasi.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/backend-protocol: "grpc"
  name: demo-alb-ingress
... ...

Konfigurasikan ekspresi reguler

Anda dapat menggunakan anotasi alb.ingress.kubernetes.io/use-regex: "true" untuk mengaktifkan mode ekspresi reguler. Kemudian, Anda dapat mengonfigurasi ekspresi reguler dalam kondisi atau aksi pengalihan kustom.

Penting

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

Perluas untuk melihat 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 Service yang sebenarnya. Harus sama dengan backend.service.name di bawah ini.
     [{
       "type": "Path",
       "pathConfig": {
           "values": [
              "~*/pathvalue1", ## Tambahkan ~* atau ~ sebelum ekspresi reguler sebagai flag. Konten setelah ~* atau ~ adalah ekspresi reguler yang efektif. ~* menunjukkan pencocokan ekspresi reguler case-sensitive, dan ~ menunjukkan pencocokan ekspresi reguler case-insensitive.
              "/pathvalue2"    ## Tidak perlu ~* 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> ## <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 Service yang sebenarnya. Harus sama dengan backend.service.name di bawah ini.
     [{
       "type": "Path",         ## Mendukung Host
       "pathConfig": {
           "values": [
              "~*/pathvalue1", ## Tambahkan ~* atau ~ sebelum ekspresi reguler sebagai flag. Konten setelah ~* atau ~ adalah ekspresi reguler yang efektif. ~* menunjukkan pencocokan ekspresi reguler case-sensitive, dan ~ menunjukkan pencocokan ekspresi reguler case-insensitive.
              "/pathvalue2"    ## Tidak perlu ~* untuk pencocokan eksak.
           ]
       }
      }]
... ...

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

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

<YOUR-SVC-NAME> dengan nama Service yang sebenarnya. 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 (rewrite)

ALB Ingress mendukung fitur penulisan ulang (rewrite). Setelah ALB Ingress menerima permintaan klien, ia memodifikasi jalur permintaan tersebut lalu mengirimkan permintaan ke Service 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 menggunakan 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 Anda mengonfigurasi rewrite-target.

    • "true": Gunakan ekspresi reguler.

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

Contoh konfigurasi

Skenario 1: Hapus awalan

Pada 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, yang mencocokkan karakter / atau akhir jalur ($) yang mengikuti /something.

  • (.*): Grup penangkapan kedua, yang mencocokkan semua konten yang mengikuti /something/. Digunakan dalam jalur yang ditulis ulang sebagai ${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 menjelaskan efek penulisan ulang jalur.

Jalur klien asli

Apakah cocok dengan ekspresi reguler jalur?

Jalur yang ditulis ulang

/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/(.*)/(.*)/(.*). Ini juga mengubah format URL menjadi format yang mirip dengan permintaan POST tanpa sepengetahuan pengguna. Jalur yang ditulis ulang adalah / (awalan jalur standar) + ${2} (konten grup penangkapan kedua) + ?code= + ${3} (konten grup penangkapan ketiga). Tabel berikut menjelaskan efek penulisan ulang jalur.

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

Jalur klien asli

Apakah cocok dengan ekspresi reguler jalur?

Rewritten Path

/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 menulis ulang beberapa jalur ke satu jalur dengan mencocokkan beberapa jalur (/app-a(/|$)(.*) dan /app-b(/|$)(.*)) menggunakan ekspresi reguler. Jalur yang ditulis ulang adalah /app-c/ + ${2} (konten grup penangkapan kedua). Tabel berikut menjelaskan efek penulisan ulang jalur.

Jalur klien asli

Apakah 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 terlebih dahulu apakah jalur tertentu yang digunakan klien cocok dengan ekspresi reguler yang dikonfigurasi dalam jalur dan untuk melihat jalur baru yang ditulis ulang.

Bagian ini menggunakan 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:

    Dalam perintah berikut, ekspresi reguler jalur (/items/(.*)/(.*)/(.*)) dan jalur yang ditulis ulang (/${2}?code=${3}) dari contoh dimodifikasi. Dalam perintah sed, karakter khusus / harus di-escape dengan karakter escape \, dan konten grup penangkapan ditulis sebagai \2 bukan ${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 dengan aturan penulisan ulang 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 untuk mengekspos port 80 (HTTP) dan port 443 (HTTPS) secara bersamaan.

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 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 sebagaimana mestinya, Anda harus terlebih dahulu membuat port dan protokol listener yang diperlukan dalam AlbConfig. Kemudian, Anda dapat mengaitkan listener tersebut dengan layanan dalam Ingress. Untuk informasi tentang cara membuat listener ALB, lihat Konfigurasikan listener ALB melalui 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, prioritas aturan pengalihan ALB diurutkan 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 sama, nama dibandingkan karakter per karakter.
  • Dalam Ingress yang sama, aturan diurutkan berdasarkan urutannya dalam bidang rule. Aturan yang dikonfigurasi lebih awal memiliki prioritas lebih tinggi.

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

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

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 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 melalui ALB Ingress.

Parameter

Deskripsi

Deskripsi

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

Mengaktifkan kemampuan rilis bertahap.

  • Traffic canary dapat dialokasikan berdasarkan header, cookie, atau bobot.

    Prioritas alokasi adalah: Header > Cookie > Bobot (dari tertinggi ke terendah).
  • Jangan menghapus aturan asli selama proses rilis bertahap. Hal ini dapat menyebabkan gangguan layanan. Setelah rilis bertahap diverifikasi, perbarui Service backend dalam Ingress asli ke Service baru, lalu hapus Ingress canary.

  • Alokasikan traffic canary 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.

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

    • Permintaan lain yang tidak cocok dialokasikan ke layanan canary berikutnya sesuai dengan prioritas canary.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        alb.ingress.kubernetes.io/order: "1"
        alb.ingress.kubernetes.io/canary: "true"
        alb.ingress.kubernetes.io/canary-by-header: "location"
        alb.ingress.kubernetes.io/canary-by-header-value: "hz"
      name: demo-canary
    spec:
    ... ...

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

    Jika header permintaan berisi location: hz, traffic diarahkan ke layanan canary. Permintaan lain dialokasikan ke layanan canary berdasarkan kebijakan bobot canary. Berikut adalah contoh konfigurasi.

    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 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
  • Alokasikan traffic canary berdasarkan cookie tertentu

    Parameter

    Nilai cookie

    Contoh YAML

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

    • always: Semua traffic permintaan dialokasikan ke titik akhir layanan canary.

    • never: Traffic permintaan tidak dialokasikan ke titik akhir layanan canary.

    Rilis canary 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 canary. Jika header permintaan berisi Cookie: demo=never, traffic tidak diarahkan ke layanan canary. Berikut adalah contoh konfigurasi.

    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 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
  • Alokasikan traffic berdasarkan bobot

    Parameter

    Deskripsi

    Contoh YAML

    alb.ingress.kubernetes.io/canary-weight

    Menetapkan persentase permintaan ke layanan yang ditentukan. Nilainya adalah 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 mengonfigurasi bobot layanan canary menjadi 50%:

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

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"   # Saat menggunakan cookie kustom, tipe 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 menggunakan cookie kustom, tipe 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

Blok kode berikut menunjukkan 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 menggunakan cookie kustom, tipe 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: Instans dimatikan.

false

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

Metode penanganan cookie.

  • Insert: Menyisipkan cookie. Saat klien mengakses layanan untuk pertama kalinya, Server Load Balancer menyisipkan cookie (SERVERID) ke respons HTTP atau HTTPS. Saat klien mengakses layanan lagi dengan cookie ini, Server Load Balancer meneruskan permintaan ke server backend yang sebelumnya direkam.

  • Server: Menulis ulang cookie. Jika Server Load Balancer mendeteksi cookie kustom, ia menulis ulang cookie asli. Saat klien mengakses layanan lagi dengan cookie baru, Server Load Balancer meneruskan permintaan ke server backend yang sebelumnya direkam.

Catatan

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

Insert

alb.ingress.kubernetes.io/cookie-timeout

Periode timeout cookie dalam detik. Rentang nilai adalah [1, 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 kelompok server backend

ALB Ingress dapat menentukan algoritma penyeimbangan beban untuk kelompok server backend menggunakan anotasi berikut. Nilai yang mungkin dan deskripsinya ditunjukkan dalam tabel berikut.

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

wlc

Pemilihan berdasarkan nilai bobot yang ditetapkan untuk setiap server backend dan beban aktual (jumlah koneksi) server backend. Jika bobot sama, server dengan koneksi lebih sedikit diprioritaskan.

sch

Penghashan konsisten IP sumber. Permintaan didistribusikan berdasarkan hash dari IP sumber klien. Permintaan dari alamat IP yang sama dialokasikan ke server backend yang sama.

uch

Penghashan konsisten parameter URL.

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

Konfigurasi lintas domain

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

Perluas untuk melihat 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: "Allowed-cross-domain-name"
spec:
  ingressClassName: alb
  rules:
  - host: demo.alb.ingress.top
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: cloud-nodeport
            port:
              number: 80

Blok kode berikut menunjukkan 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: "Allowed-cross-domain-name"
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 mengonfigurasi satu atau beberapa nilai. Pisahkan beberapa nilai dengan koma (,). Nilai tunggal hanya boleh berisi huruf besar, huruf kecil, dan angka. Tidak boleh dimulai 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 mengonfigurasi satu atau beberapa nilai. Pisahkan beberapa nilai dengan koma (,). Nilai tunggal hanya boleh berisi huruf besar, huruf kecil, dan angka. Tidak boleh dimulai 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 mengatur waktu cache maksimum dalam detik untuk permintaan preflight OPTIONS di browser. Rentang nilai adalah [0, 172800].

Nilai bawaan: 172800

Koneksi persisten backend

Load balancing tradisional menggunakan koneksi singkat untuk mengakses kelompok server backend. Setiap permintaan memerlukan koneksi TCP yang dibuat dan dihentikan. Hal ini menjadikan konektivitas jaringan sebagai bottleneck untuk sistem berkinerja-tinggi. Dengan dukungan koneksi persisten backend dari load balancer, konsumsi sumber daya untuk menangani lapisan koneksi sangat berkurang, yang secara signifikan meningkatkan kinerja pemrosesan. Blok kode berikut menunjukkan contoh konfigurasi:

Perluas untuk melihat 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. Ini mengurangi pembuatan dan penghentian koneksi TCP untuk setiap permintaan, menurunkan 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:

Dukungan untuk memasang IPv6 ke kelompok server backend

Setelah Anda mengaktifkan pemasangan IPv6 untuk kelompok server, untuk memasang Pod IPv4 dan IPv6 ke kelompok server tersebut, Anda harus memastikan bahwa kluster telah mengaktifkan kemampuan dual-stack. Untuk informasi selengkapnya, lihat Buat Kluster ACK yang dikelola.

Catatan

Batasan berikut berlaku saat Anda mengaktifkan pemasangan IPv6:

  • Jika VPC tempat kelompok server berada tidak memiliki IPv6 yang diaktifkan, Anda tidak dapat mengaktifkan pemasangan IPv6 untuk kelompok server tersebut.

  • Saat Anda memasang kelompok server tipe IP atau tipe Function Compute menggunakan aksi pengalihan kustom, pemasangan IPv6 tidak didukung.

  • Untuk Ingress yang dikaitkan dengan instans ALB tipe IPv4, pemasangan IPv6 untuk kelompok server tidak didukung.

Perluas untuk melihat 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
Service dan ALB Ingress harus dikonfigurasi sesuai persyaratan untuk dual-stack. Setelah Anda membuat instans ALB dual-stack, kelompok server dapat memasang server backend IPv4 dan IPv6.

Objek konfigurasi

Parameter konfigurasi

Nilai

Deskripsi

Contoh YAML

Service

ipFamilies

  • IPv4

  • IPv6

Menentukan jenis alamat IP yang tersedia untuk Service.

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 Service, mendukung dual-stack.

ALB Ingress

alb.ingress.kubernetes.io/enable-ipv6

"true"

Mengaktifkan pemasangan IPv6 untuk kelompok server.

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

Dukungan pembatasan kecepatan QPS

ALB mendukung pembatasan kecepatan Queries Per Second (QPS) untuk aturan pengalihan. Anda dapat mengonfigurasi pembatasan kecepatan QPS dengan mengatur anotasi berikut.

Perluas untuk melihat 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 pembatasan kecepatan QPS untuk aturan pengalihan. Rentang nilai adalah [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 Service, jika ALB Ingress langsung mengalokasikan traffic ke Pod baru tersebut, hal ini dapat menyebabkan tekanan CPU atau memori tinggi sementara, yang mengakibatkan gangguan akses. Dengan menggunakan mulai lambat, ALB Ingress dapat secara bertahap mentransfer traffic ke Pod baru tersebut, sehingga mengurangi dampak lonjakan traffic mendadak. Blok kode berikut menunjukkan contoh konfigurasi:

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

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

Semakin lama waktu bagi traffic untuk meningkat secara bertahap setelah mulai lambat selesai, semakin lambat laju peningkatan traffic. Parameter ini dalam satuan detik (s). Rentang nilai adalah [30, 900], dan nilai bawaan adalah 30 detik.

Connection draining

Saat sebuah Pod memasuki status Terminating, ALB Ingress menghapusnya dari kelompok server backend. Koneksi yang sudah terbentuk antara ALB dan Pod tersebut tidak langsung terputus. Akses klien terus meneruskan permintaan ke server backend tersebut. Hal ini dapat menyebabkan bisnis dalam Pod tidak dapat offline dalam waktu lama atau menyebabkan error permintaan. Untuk menghindari masalah ini, Anda dapat menggunakan fitur pengurasan koneksi ALB. Saat sebuah Pod dihapus atau pemeriksaan kesehatan abnormal, ALB Ingress mempertahankan transmisi normal untuk periode waktu tertentu lalu secara aktif memutus koneksi setelah waktu interupsi tercapai. Hal ini memastikan proses offline bisnis yang lancar. Untuk informasi selengkapnya, lihat Capai offline bisnis yang lancar melalui pengurasan koneksi ALB.

Penting

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

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: 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). Rentang nilai adalah [0, 900], dan nilai bawaan adalah 300 detik.

Nonaktifkan penyeimbangan beban cross-zone

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

Penting

Untuk menonaktifkan penyeimbangan beban cross-zone, Anda harus memastikan bahwa ALB memiliki layanan backend yang tersedia di setiap zona dan server tersebut memiliki sumber daya yang cukup. Untuk menghindari dampak pada bisnis Anda, lakukan operasi ini dengan hati-hati.

Anda dapat merujuk pada contoh berikut untuk menonaktifkan penyeimbangan beban cross-zone:

Perluas untuk melihat 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 cross-zone. Secara bawaan diaktifkan.

  • true: Mengaktifkan pengalihan cross-zone.

  • false: Menonaktifkan pengalihan cross-zone.

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