全部产品
Search
文档中心

Container Service for Kubernetes:Sesuaikan aturan routing ALB Ingress di konsol ACK atau dengan mengonfigurasi anotasi

更新时间:Jul 06, 2025

Application Load Balancer (ALB) Ingress memungkinkan Anda mengonfigurasi aturan routing kustom. Aturan routing terdiri dari kondisi dan tindakan. Anda dapat menambahkan kondisi untuk mencocokkan nama domain, jalur, header permintaan, string kueri, metode permintaan, cookie, atau alamat IP sumber dalam permintaan. Selain itu, Anda dapat menambahkan tindakan untuk mengembalikan respons tetap, mengarahkan ulang permintaan, menyisipkan atau menghapus header permintaan, mencerminkan lalu lintas, meneruskan permintaan ke beberapa grup server backend, atau menulis ulang permintaan. Aturan routing ALB Ingress dapat disesuaikan melalui konsol Container Service for Kubernetes (ACK) atau dengan mengonfigurasi parameter Anotasi pada Ingress.

Daftar isi

Aturan kustom

Skenario

Kondisi routing

Tindakan routing

Praktik untuk mengonfigurasi kondisi dan tindakan routing

Skenario 1: Konfigurasikan kondisi dan tindakan routing berbasis nama domain untuk mengarahkan lalu lintas ke Layanan tertentu

Prasyarat

Kontroler ALB Ingress versi 2.5.0 atau lebih baru telah diinstal di kluster Anda. Untuk informasi lebih lanjut, lihat Kelola komponen.

Kondisi routing

Penting
  • Anda dapat menambahkan hingga 10 kondisi routing ke satu aturan routing.

  • Kondisi routing ResponseHeader dan ResponseStatusCode hanya berlaku untuk aturan routing keluar kustom.

Pengenalan kondisi routing

ALB Ingress memungkinkan Anda mengonfigurasi kondisi routing menggunakan anotasi alb.ingress.kubernetes.io/conditions.<Service name>. Hubungan logis antara blok aturan yang berbeda adalah DAN. Jika beberapa nilai ditentukan dalam satu blok aturan, hubungan logis antar nilai tersebut adalah ATAU. Sebagai contoh, jika Anda mengonfigurasi dua blok aturan header, hubungan logis antara kedua blok tersebut adalah DAN. Namun, jika Anda mengonfigurasi beberapa header dalam satu blok aturan header, hubungan logis antar header tersebut adalah ATAU. Tabel berikut menjelaskan kondisi routing yang dapat dikonfigurasi untuk ALB Ingress.

Kondisi routing

Deskripsi

Nama domain

Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang ditujukan ke nama domain yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.host-example: |
  [{
      "type": "Host",
      "hostConfig": {
        "values": [
          "anno.example.com"
        ]
      }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan nama domain, atur nilainya menjadi Host.

  • HostConfig: nama domain yang digunakan untuk mencocokkan permintaan. Jika Anda menentukan beberapa nama domain, hubungan logis di antara nama domain tersebut adalah ATAU.

Jalur

Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang dikirim ke jalur yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.path-example: |
  [{
    "type": "Path",
    "pathConfig": {
      "values": [
        "/pathvalue1",
        "/pathvalue2"
      ]
    }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan jalur, atur nilainya menjadi Path.

  • pathConfig: jalur yang digunakan untuk mencocokkan permintaan. Jika Anda menentukan beberapa jalur, hubungan logis di antara jalur-jalur tersebut adalah ATAU.

Header

Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang berisi header yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.http-header-example: |
  [{
    "type": "Header",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan header, atur nilainya menjadi Header.

  • headerConfig: pasangan kunci-nilai yang digunakan untuk mencocokkan permintaan. Jika Anda menentukan beberapa nilai header, hubungan logis antara nilai-nilai header tersebut adalah ATAU.

String kueri

Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang berisi string kueri yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.query-string-example: |
  [{
    "type": "QueryString",
    "queryStringConfig": {
      "values": [
        {
           "key":"querystringkey1",
           "value":"querystringvalue2"
        }
      ]
    }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan string kueri, atur nilainya menjadi QueryString.

  • queryStringConfig: pasangan kunci-nilai yang digunakan untuk mencocokkan permintaan. Kunci dan nilai harus memiliki panjang 1 hingga 100 karakter, dan dapat berisi huruf kecil, karakter terlihat, tanda bintang (*), dan tanda tanya (?). Kunci dan nilai tidak boleh mengandung karakter spasi atau karakter khusus berikut: # [] {} \ | <> &. Jika Anda menentukan beberapa string kueri, hubungan logis di antara string kueri tersebut adalah ATAU.

Metode permintaan

Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang menggunakan metode permintaan yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.http-method-example: |
  [{
    "type": "Method",
    "methodConfig": {
      "values": [
        "GET",
        "HEAD"
      ]
    }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan metode permintaan, atur nilainya menjadi Method.

  • methodConfig: metode permintaan yang digunakan untuk mencocokkan permintaan. Metode yang didukung adalah GET, POST, PUT, DELETE, HEAD, OPTIONS, dan PATCH. Jika Anda menentukan beberapa metode permintaan, hubungan logis di antara metode permintaan tersebut adalah ATAU.

Cookie

Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang berisi cookie yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.http-cookie-example: |
  [{
    "type": "Cookie",
    "cookieConfig": {
      "values": [
        {
           "key":"cookiekey1",
           "value":"cookievalue2"
        }
      ]
     }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan cookie, atur nilainya menjadi Cookie.

  • cookieConfig: pasangan kunci-nilai yang digunakan untuk mencocokkan permintaan. Kunci dan nilai harus memiliki panjang 1 hingga 100 karakter, dan dapat berisi huruf kecil, karakter terlihat, tanda bintang (*), dan tanda tanya (?). Kunci dan nilai tidak boleh mengandung karakter spasi atau karakter khusus berikut: # [] {} \ | <> &. Jika Anda menentukan beberapa cookie, hubungan logis di antara cookie tersebut adalah ATAU.

SourceIP

Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan dari alamat IP yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.source-ip-example: |
  [{
    "type": "SourceIp",
    "sourceIpConfig": {
      "values": [
        "192.168.0.0/16",
        "172.16.0.0/16"
      ]
    }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan alamat IP sumber, atur nilainya menjadi SourceIP.

  • sourceIpConfig: alamat IP sumber yang digunakan untuk mencocokkan permintaan. Jika Anda menentukan beberapa alamat IP sumber, hubungan logis di antara alamat IP sumber tersebut adalah ATAU.

ResponseHeader

Anda dapat menambahkan kondisi ini untuk hanya merutekan respons yang berisi header respons yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.response-header-example: |
  [{
    "type": "ResponseHeader",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan header respons, atur nilainya menjadi ResponseHeader.

  • headerConfig: pasangan kunci-nilai yang digunakan untuk mencocokkan respons. Jika Anda menentukan beberapa nilai header, hubungan logis antara nilai-nilai header tersebut adalah ATAU.

ResponseStatusCode

Anda dapat menambahkan kondisi ini untuk hanya merutekan permintaan yang mengembalikan kode status yang ditentukan. Contoh kode:

alb.ingress.kubernetes.io/conditions.response-code-example: |
  [{
    "type": "ResponseStatusCode",
    "responseStatusCodeConfig": {
      "values": [
        "statuscode1",
        "statuscode2"
      ]
    }
  }]
  • type: jenis kondisi pencocokan. Untuk mencocokkan permintaan berdasarkan kode status respons, atur nilainya menjadi ResponseStatusCode.

  • responseStatusCodeConfig: kode status respons yang ditentukan. Jika Anda menentukan beberapa kode status respons, hubungan logis di antara kode-kode tersebut adalah ATAU.

Skenario 1: Mendistribusikan lalu lintas berdasarkan alamat IP sumber dan header permintaan

Penting

Anda dapat menambahkan maksimal lima alamat IP sumber ke kondisi kustom untuk satu aturan routing.

Blok kode berikut digunakan untuk merutekan paket berdasarkan alamat IP sumber, header permintaan, dan jalur.

Dalam blok kode ini, alamat IP sumber diatur ke 192.168.0.0/16 dan 172.16.0.0/16, kunci header diatur ke gray-hello, nilai header diatur ke value1 dan value2, serta jalur diatur ke /hello. Hanya permintaan yang alamat IP sumber, header, dan jalurnya cocok dengan semua kondisi sebelumnya yang dirutekan ke layanan gray-hello. Permintaan lainnya akan dirutekan ke layanan lain.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/order: "1"
   alb.ingress.kubernetes.io/conditions.gray-hello: |
     [{
       "type": "Header",
       "headerConfig": {
          "key":"gray-hello",
           "values": [
              "value1",
              "value2"
           ]
       }
      },
      {
         "type": "SourceIp",
         "sourceIpConfig": {
           "values": [
             "192.168.0.0/16",
             "172.16.0.0/16"
           ]
         }
     }]
  name: gray-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /hello
        pathType: ImplementationSpecific
        backend:
          service:
            name: gray-hello
            port:
              number: 88

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

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

Blok kode berikut digunakan untuk merutekan paket berdasarkan nama domain, metode permintaan, dan cookie.

Dalam blok kode ini, metode permintaan diatur ke GET dan HEAD, nama domain diatur ke example.com dan *.edu, kunci cookie diatur ke cookiekey1, nilai cookie diatur ke cookievalue1, serta jalur diatur ke /test. Hanya permintaan yang nama domain, metode permintaan, cookie, dan jalurnya cocok dengan semua kondisi sebelumnya yang dirutekan ke layanan-a Service. Permintaan lainnya akan dirutekan ke layanan-b Service.

Catatan

Aturan pengalihan berbasis nama domain mendukung pencocokan nama domain wildcard.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: |
     [{
       "type": "Cookie",
       "cookieConfig": {
         "values": [
           {
             "key":"cookiekey1",
             "value":"cookievalue1"
           }
        ]
       }
      },
      {
       "type": "Method",
       "methodConfig": {
         "values": [
           "GET",
           "HEAD"
         ]
       }
      },
     {
       "type": "Host",
       "hostConfig": {
           "values": [
              "example.com",
              "*.edu" 
           ]
       }
      }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

Skenario 3: Merutekan lalu lintas berdasarkan string kueri, beberapa header permintaan, dan beberapa jalur.

Blok kode berikut digunakan untuk merutekan paket berdasarkan string kueri, beberapa header permintaan, dan beberapa jalur.

Dalam blok kode ini, jalur diatur ke /pathvalue1, /pathvalue2, dan /test, kunci string kueri diatur ke querystringkey1, serta nilai string kueri diatur ke querystringvalue2. Blok kode ini juga menentukan bahwa permintaan harus berisi headerkey1 dan headerkey2. Nilai header untuk headerkey1 harus headervalue1 atau headervalue2, sedangkan nilai header untuk headervalue2 harus headervalue3 atau headervalue4. Hanya permintaan yang string kueri, header permintaan, dan jalurnya cocok dengan semua kondisi sebelumnya yang dirutekan ke layanan-a service. Permintaan lainnya akan dirutekan ke layanan-b service.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: |
     [{
       "type": "Path",
       "pathConfig": {
           "values": [
              "/pathvalue1",
              "/pathvalue2"
           ]
       }
      },
      {
       "type": "QueryString",
       "queryStringConfig": {
         "values": [
           {
             "key":"querystringkey1",
             "value":"querystringvalue2"
           }
        ]
       }
      },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey1",
           "values": [
              "headervalue1",
              "headervalue2"
           ]
       }
     },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey2",
           "values": [
              "headervalue3",
              "headervalue4"
           ]
       }
     }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

Tindakan routing

Pengenalan

ALB Ingress memungkinkan Anda mengonfigurasi tindakan routing untuk aturan routing masuk dan keluar menggunakan anotasi alb.ingress.kubernetes.io/actions.<Service name>. Anda dapat menambahkan tindakan untuk mengembalikan respons tetap, mengarahkan ulang permintaan, menyisipkan atau menghapus header permintaan, mencerminkan lalu lintas, meneruskan permintaan ke beberapa grup server backend, atau menulis ulang permintaan. ALB Ingress memungkinkan Anda mendefinisikan tindakan routing yang berbeda untuk memproses permintaan dan respons sesuai kebutuhan.

Penting
  • Nama Layanan dalam anotasi alb.ingress.kubernetes.io/actions.<Service name> harus sama dengan nama Layanan yang ditentukan di backend pada bidang rule.

  • Pastikan hanya satu dari tindakan terminasi seperti pengalihan, respons tetap, atau penerusan ke beberapa grup server digunakan dalam aturan pengalihan yang sama.

  • Saat menambahkan tindakan routing untuk mengembalikan respons tetap, mengalihkan permintaan, atau meneruskan permintaan ke beberapa grup server backend, nama Port Layanan yang ditentukan di backend pada bidang rule harus use-annotation.

Tindakan routing untuk aturan routing masuk

Tindakan routing

Deskripsi

Respons tetap

Menentukan bahwa konten tetap dikembalikan ke klien menggunakan ALB Ingress. Anda dapat menentukan kode status, konten, dan jenis konten yang dikembalikan ke klien. Contoh kode:

alb.ingress.kubernetes.io/actions.response-503: |
  [{
      "type": "FixedResponse",
      "FixedResponseConfig": {
          "contentType": "text/plain",
          "httpCode": "503",
          "content": "503 error text"
      }
  }]
  • type: jenis tindakan routing. Untuk mengembalikan respons tetap, atur nilainya menjadi FixedResponse.

  • contentType: jenis konten yang akan dikembalikan.

  • httpCode: kode status yang akan dikembalikan.

  • content: konten yang akan dikembalikan.

Mengalihkan permintaan

Anda dapat menggunakan kode status HTTP 3XX untuk mengalihkan permintaan ke alamat Layanan lain. Contoh kode:

Penting

Anda tidak dapat mempertahankan semua pengaturan default untuk semua parameter pengalihan secara bersamaan, kecuali httpCode.

alb.ingress.kubernetes.io/actions.redirect: |
  [{
      "type": "Redirect",
      "RedirectConfig": {
          "host": "${host}",
          "path": "${path}",
          "port": "443",
          "protocol": "${protocol}",
          "query": "${query}",
          "httpCode": "301"
      }
  }]
  • type: jenis tindakan routing. Untuk mengalihkan permintaan, atur nilainya menjadi Redirect.

  • host: nama domain ke mana permintaan dialihkan.

  • path: jalur ke mana permintaan dialihkan.

  • port: port ke mana permintaan dialihkan.

  • protocol: protokol dari permintaan yang dialihkan.

  • query: string kueri dari permintaan yang dialihkan.

  • httpCode: kode status dari permintaan yang dialihkan.

Cermin lalu lintas

Anda dapat menentukan ID grup server untuk mencerminkan lalu lintas ke grup server yang ditentukan. Contoh kode:

Penting
  • Tindakan pencerminkan lalu lintas hanya dapat digunakan bersama dengan tindakan yang digunakan untuk meneruskan permintaan, menulis header, menghapus header, dan membatasi laju lalu lintas. Tindakan ini saling eksklusif dengan tindakan yang digunakan untuk menulis ulang permintaan, mengembalikan respons tetap, dan mengalihkan permintaan.

  • Anda hanya dapat menggunakan parameter ServerGroupID untuk menentukan grup server ke mana lalu lintas dicerminkan.

alb.ingress.kubernetes.io/actions.traffic-mirror: |
      [{
          "type": "TrafficMirror",
          "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
      }]
  • type: jenis tindakan. Untuk mencerminkan lalu lintas, atur nilainya menjadi TrafficMirror.

  • TargetType: jenis pencerminkan lalu lintas. Atur nilainya menjadi ForwardGroupMirror, yang mencerminkan lalu lintas ke grup server yang ditentukan.

  • ServerGroupID: ID grup server ke mana lalu lintas dicerminkan.

Teruskan permintaan ke beberapa grup server backend

Untuk meneruskan permintaan ke beberapa grup server backend, Anda perlu mengatur bidang ServerGroupID untuk menentukan ID grup server atau mengatur bidang ServiceName dan ServicePort untuk membuat atau mengaitkan grup server. Anda juga dapat menentukan bobot setiap grup server backend dan mengaktifkan persistensi sesi untuk grup server tersebut.

Penting
  • Anda dapat mengaitkan maksimal lima grup server backend dengan instance ALB standar.

  • Jika Anda mengatur bidang ServerGroupID, ServiceName, dan ServicePort secara bersamaan untuk mengaitkan grup server backend, bidang ServerGroupID memiliki prioritas lebih tinggi.

  • Setelah Anda mengaktifkan persistensi sesi, ALB Ingress akan meneruskan permintaan yang termasuk dalam sesi yang sama ke grup server backend yang sama.

alb.ingress.kubernetes.io/actions.forward: |
       [{
           "type": "ForwardGroup",
           "ForwardConfig": {
             "ServerGroups" : [{
               "ServiceName": "tea-svc",
               "Weight": 30,
               "ServicePort": 80
             },
             {
               "ServiceName": "coffee-svc",
               "Weight": 20,
               "ServicePort": 80
             },
             {
               "ServerGroupID": "sgp-71aexb9y93ypo*****",
               "Weight": 20
             },
             {
               "ServerGroupID": "sgp-slygpbvm2cydo*****",
               "Weight": 30
             }]
             "ServerGroupStickySession": {
              "Enabled": true,
              "Timeout": 80
             }
           }
       }]
  • type: jenis tindakan. Untuk meneruskan permintaan ke beberapa grup server backend, atur nilainya menjadi ForwardGroup.

  • ForwardConfig: konfigurasi grup server backend. Permintaan diteruskan ke beberapa grup server berdasarkan bobotnya.

  • ServerGroupId: ID grup server.

  • ServiceName: nama Layanan yang diekspos menggunakan instance ALB.

  • ServicePort: port Layanan.

  • Weight: bobot grup server.

  • Enabled: mengaktifkan persistensi sesi untuk grup server.

  • Timeout: periode timeout untuk persistensi sesi.

Tulis ulang permintaan

Setelah Anda mengonfigurasi aturan penulisan ulang untuk instance ALB, nama domain, jalur, dan string kueri permintaan akan ditulis ulang. Contoh kode:

Penting
  • Tindakan penulisan ulang bertentangan dengan anotasi rewrite-target. Jangan tentukan anotasi rewrite-target saat Anda mengonfigurasi tindakan penulisan ulang.

  • Anda tidak dapat menulis ulang permintaan dan mengembalikan respons tetap pada saat yang bersamaan. Anda tidak dapat menulis ulang permintaan dan mengalihkan permintaan pada saat yang bersamaan.

alb.ingress.kubernetes.io/actions.rewrite: |
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "querystring"
           }
       }]
  • type: jenis tindakan. Untuk menulis ulang permintaan, atur nilainya menjadi Rewrite.

  • RewriteConfig: konfigurasi aturan penulisan ulang.

  • Host: menulis ulang nama domain yang cocok.

  • Path: menulis ulang jalur yang cocok.

  • Query: menulis ulang string kueri yang cocok.

Untuk informasi lebih lanjut tentang aturan penulisan ulang, lihat Konfigurasikan aturan penulisan ulang.

Sisipkan header permintaan

Anda dapat menentukan nama dan nilai bidang header untuk menimpa variabel header yang ada dalam permintaan. Contoh kode:

alb.ingress.kubernetes.io/actions.insert-header: |
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: jenis tindakan routing. Untuk menyisipkan header permintaan, atur nilainya menjadi InsertHeader.

  • key: nama bidang header yang akan disisipkan.

  • value: nilai bidang header yang akan disisipkan.

  • valueType: jenis nilai.

Hapus header permintaan

Anda dapat menghapus kunci dan nilai header permintaan. Contoh kode:

alb.ingress.kubernetes.io/actions.remove-header: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type: jenis tindakan perutean. Untuk menghapus header permintaan, atur nilai menjadi RemoveHeader.

key: nama bidang header yang akan dihapus.

Pembatasan QPS

Saat Anda mengonfigurasi aturan pengalihan untuk instance ALB, Anda dapat mengatur batas laju permintaan global dan batas laju permintaan berdasarkan alamat IP klien.

Contoh kode:

Penting
  • Tindakan pembatasan queries per second (QPS) harus digunakan bersama dengan tindakan meneruskan permintaan ke grup server.

  • Jika Header X-Forwarded-For berisi beberapa alamat IP, seperti X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, ..., alamat paling kiri adalah alamat IP klien. Jika Anda ingin mengonfigurasi batas laju permintaan berdasarkan alamat IP klien, Anda perlu mengaktifkan saklar untuk mengambil alamat IP klien di halaman detail pendengar. Dengan cara ini, Anda dapat menggunakan Header X-Forwarded-For untuk melestarikan alamat IP klien. Untuk informasi lebih lanjut, lihat XForwardedForConfig.

 annotations:
    alb.ingress.kubernetes.io/actions.traffic-limit: |
      [{
          "type": "TrafficLimit",
          "TrafficLimitConfig": {
              "QPS": "1000",
              "QPSPerIp": "100"
          }
      }]
  • type: jenis tindakan routing. Dalam contoh ini, nilainya diatur ke TrafficLimit, yang menunjukkan pembatasan laju.

  • QPS: batas laju permintaan global, yang menunjukkan jumlah maksimum permintaan yang dapat diproses per detik. Nilai valid: 1 hingga 1000000. Saat laju permintaan melebihi nilai yang ditentukan, permintaan koneksi baru ditolak dan klien menerima kode status HTTP 503.

  • QPSPerIp: batas laju permintaan berdasarkan alamat IP klien. Nilai valid: 1 hingga 1000000. Jika baik QPS (batas laju global) maupun QPSPerIp (batas laju berdasarkan alamat IP klien) diatur, nilai QPSPerIp harus lebih kecil daripada nilai QPS. Saat laju permintaan melebihi nilai yang ditentukan, permintaan koneksi baru ditolak dan klien menerima kode status HTTP 503.

Tindakan routing untuk aturan routing keluar

Tindakan routing

Deskripsi

Sisipkan header permintaan

Anda dapat menentukan nama dan nilai bidang header untuk menimpa variabel header yang ada dalam permintaan. Contoh kode:

alb.ingress.kubernetes.io/actions.insert-header: |
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: jenis tindakan routing. Untuk menyisipkan header permintaan, atur nilainya menjadi InsertHeader.

  • key: nama bidang header yang akan disisipkan.

  • value: nilai bidang header yang akan disisipkan.

  • valueType: jenis nilai.

Hapus header permintaan

Anda dapat menghapus kunci dan nilai header permintaan. Contoh kode:

alb.ingress.kubernetes.io/actions.remove-header: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type: jenis tindakan routing. Untuk menghapus header permintaan, atur nilainya menjadi RemoveHeader.

key: nama bidang header yang akan dihapus.

Skenario 1: Kembalikan kode status 503 dan konten tetap

Gunakan konsol ACK

  1. Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

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

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

    Parameter

    Deskripsi

    Contoh

    Jenis Gateway

    Anda dapat memilih ALB Ingress, MSE Ingressy, atau Nginx Ingress berdasarkan kebutuhan Anda.

    Untuk informasi lebih lanjut tentang perbedaan di antara ketiga jenis gateway, lihat Perbandingan antara Nginx Ingresses, ALB Ingresses, dan MSE Ingresses.

    ALB

    Nama

    Tentukan nama Ingress.

    ingress

    Kelas Ingress

    Tentukan kelas Ingress yang terkait dengan AlbConfig.

    alb

    Aturan

    Klik +Add Rule untuk menambahkan aturan Ingress.

    • Domain Name: Tentukan nama domain kustom.

    • Mappings: Konfigurasikan parameter berikut:

      • Path: Tentukan jalur URL dari Layanan backend.

      • Rule:

        • Prefix (Prefix-based Match): mencocokkan awalan dari jalur URL yang diminta.

        • Exact (Exact Match): mencocokkan secara eksak jalur URL yang diminta.

        • ImplementationSpecific (Default Value): bergantung pada logikayang diimplementasikan oleh kontroler ALB Ingress.

        Untuk informasi lebih lanjut, lihat Teruskan permintaan berdasarkan jalur URL.

      • Service: Pilih Layanan backend.

      • Port: Tentukan port Layanan yang ingin Anda ekspos.

    • Anda dapat mengonfigurasi beberapa jalur untuk satu nama domain. Klik + Add untuk menambahkan jalur.

    • Nama Domain: Biarkan parameter ini kosong.

    • Pemetaan:

      • Jalur: /.

      • Aturan: Awalan (Pencocokan Berbasis Awalan) dipilih secara default.

      • Layanan: response-503.

      • Port: 80.

    Aturan Pengalihan Kustom

    Anda dapat mengaktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk secara lebih rinci.

    Catatan

    Anda dapat menambahkan hingga 10 kondisi ke aturan pengalihan.

    • Jenis kondisi berikut tersedia dalam daftar drop-down Add Condition:

      • Domain Name:

        Menentukan bahwa hanya permintaan yang berisi nama domain tertentu yang dirutekan. Hubungan logis antara beberapa nama domain adalah ATAU. Setelah Anda menentukan nama domain, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.host-example.

      • Path:

        Menentukan bahwa hanya permintaan yang berisi satu atau lebih jalur tertentu yang dirutekan. Beberapa jalur diperlakukan dengan hubungan ATAU. Setelah Anda menentukan jalur, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.path-example.

      • HTTP Header:

        Menentukan bahwa hanya permintaan yang berisi header HTTP tertentu yang dirutekan. Setiap header permintaan HTTP adalah pasangan kunci-nilai. Sebagai contoh, Anda dapat mengatur key menjadi headername dan value menjadi headervalue1. Jika Anda menentukan beberapa nilai header, hubungan logis antara nilai-nilai header tersebut adalah ATAU. Setelah Anda menentukan header, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.http-header-example.

    • Tindakan berikut tersedia dalam daftar drop-down Action:

      Return Fixed Response

      Menentukan bahwa konten tetap dikembalikan ke klien menggunakan ALB Ingress. Anda dapat menentukan kode status, jenis konten, dan konten yang dikembalikan ke klien. Konfigurasikan parameter Response Status Code, Response Content Type (Optional), dan Response Content (Optional) berdasarkan kebutuhan bisnis Anda.

      Nilai valid untuk parameter Jenis Konten Respons:

      • text/plain: menunjukkan bahwa kontennya dalam teks biasa.

      • text/css: menunjukkan bahwa kontennya dalam format XML.

      • text/html: menunjukkan bahwa kontennya dalam format HTML.

      • application/javascript: menunjukkan bahwa kontennya dalam format JavaScript.

      • application/json: menunjukkan bahwa kontennya dalam format JSON.

    • Dalam daftar drop-down Tambah Kondisi, Jalur dipilih secara default. (pertahankan pengaturan default)

    • Dalam daftar drop-down Tindakan, Kembalikan Respons Tetap dipilih.

      • Kode Status Respons: 503.

      • Jenis Konten Respons (Opsional): text/plain.

      • Konten Respons (Opsional): error.

    Gunakan pengaturan default untuk parameter lainnya.

  4. Setelah konfigurasi selesai, klik OK.

Gunakan kubectl

Blok kode berikut digunakan untuk mengembalikan kode status 503 dan 503 error text:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.response-503: |
      [{
          "type": "FixedResponse",
          "FixedResponseConfig": {
              "contentType": "text/plain",
              "httpCode": "503",
              "content": "503 error text"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: response-503
                port:
                  name: use-annotation # Nama port Layanan harus use-annotation.

Skenario 2: Gunakan pengalihan 301 untuk mengarahkan permintaan ke port HTTPS

Blok kode berikut digunakan untuk mengarahkan permintaan ke port HTTPS:

Arahkan ulang permintaan

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

Pengalihan ganda

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

Skenario 3: Sisipkan header sumber: alibaba ke permintaan

Blok kode berikut digunakan untuk menimpa header yang ada dalam permintaan dengan header sumber: alibaba:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
  # Layanan yang ditentukan dalam anotasi harus merupakan Layanan yang ada di kluster, dan nama Layanan harus sama dengan nama Layanan yang ditentukan dalam parameter backend bidang rule.
    alb.ingress.kubernetes.io/actions.insert-header: |
      [{
          "type": "InsertHeader",
          "InsertHeaderConfig": {
              "key": "source",
              "value": "alibaba",
              "valueType": "UserDefined"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: insert-header
                port:
                  number: 80

Skenario 4: Cermin lalu lintas ke grup server

Blok kode berikut digunakan untuk mencerminkan lalu lintas ke grup server yang ditentukan:

Masuk ke konsol Server Load Balancer (SLB). Di panel navigasi di sebelah kiri, pilih ALB > Server Groups. Di halaman Server Groups, Anda dapat melihat ID grup server.服务器组

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traffic-mirror-ingress
  annotations:
  # mirror-svc harus salah satu layanan backend yang ditentukan di bawah ini.
  # ALB Ingress mencerminkan lalu lintas yang diteruskan ke mirror-svc ke server backend yang ditentukan dalam bidang ServerGroupID.
  # Jika Anda ingin mengonfigurasi pencerminkan lalu lintas untuk beberapa Layanan, tambahkan anotasi ke setiap Layanan.
   alb.ingress.kubernetes.io/actions.mirror-svc: |
       [{
           "type": "TrafficMirror",
           "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /test
        pathType: Prefix
        backend:
          service:
            name: mirror-svc
            port:
              number: 80

Skenario 5: Teruskan permintaan ke beberapa grup server backend

Gunakan konsol ACK

  1. Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

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

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

    Parameter

    Deskripsi

    Contoh

    Jenis Gateway

    Anda dapat memilih ALB Ingress, MSE Ingressy, atau Nginx Ingress berdasarkan kebutuhan Anda.

    Untuk informasi lebih lanjut tentang perbedaan di antara ketiga jenis gateway, lihat Perbandingan antara Nginx Ingresses, ALB Ingresses, dan MSE Ingresses.

    ALB

    Nama

    Tentukan nama Ingress.

    forward-ingress

    Kelas Ingress

    Tentukan kelas Ingress yang terkait dengan AlbConfig.

    alb

    Aturan

    Klik +Add Rule untuk menambahkan aturan Ingress.

    • Domain Name: Tentukan nama domain kustom.

    • Mappings: Konfigurasikan parameter berikut:

      • Path: Tentukan jalur URL dari Layanan backend.

      • Rule:

        • Prefix (Prefix-based Match): mencocokkan awalan dari jalur URL yang diminta.

        • Exact (Exact Match): mencocokkan secara eksak jalur URL yang diminta.

        • ImplementationSpecific (Default Value): bergantung pada logika yang diimplementasikan oleh kontroler ALB Ingress.

        Untuk informasi lebih lanjut, lihat Teruskan permintaan berdasarkan jalur URL.

      • Service: Pilih Layanan backend.

      • Port: Tentukan port Layanan yang ingin Anda ekspos.

    • Anda dapat mengonfigurasi beberapa jalur untuk satu nama domain. Klik + Add untuk menambahkan jalur.

    • Nama Domain: demo.domain.ingress.top.

    • Pemetaan:

      • Jalur: /path.

      • Aturan: Awalan (Pencocokan Berbasis Awalan) dipilih secara default.

      • Layanan: forward.

      • Port: 80

    Aturan Pengalihan Kustom

    Anda dapat mengaktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk secara lebih rinci.

    Catatan

    Anda dapat menambahkan hingga 10 kondisi ke aturan pengalihan.

    • Jenis kondisi berikut tersedia dalam daftar drop-down Add Condition:

      • Domain Name:

        Menentukan bahwa hanya permintaan yang berisi nama domain tertentu yang dirutekan. Hubungan logis antara beberapa nama domain adalah ATAU. Setelah Anda menentukan nama domain, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.host-example.

      • Path:

        Menentukan bahwa hanya permintaan yang berisi satu atau lebih jalur tertentu yang dirutekan. Beberapa jalur diperlakukan dengan hubungan ATAU. Setelah Anda menentukan jalur, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.path-example.

      • HTTP Header:

        Menentukan bahwa hanya permintaan yang berisi header HTTP tertentu yang dirutekan. Setiap header permintaan HTTP adalah pasangan kunci-nilai. Sebagai contoh, Anda dapat mengatur key menjadi headername dan value menjadi headervalue1. Jika Anda menentukan beberapa nilai header, hubungan logis antara nilai-nilai header tersebut adalah ATAU. Setelah Anda menentukan header, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.http-header-example.

    • Tindakan berikut tersedia dalam daftar drop-down Action:

      Forward To

      Meneruskan lalu lintas masuk ke beberapa grup server backend. Pilih Layanan yang ingin Anda akses dari daftar drop-down Service Name. Dari daftar drop-down Port, pilih port yang digunakan untuk terhubung ke Layanan. Tentukan bobot kustom untuk setiap grup server backend.

      Catatan
      • Jika Anda menggunakan komponen Flannel untuk kluster, Layanan ClusterIP tidak didukung.

      • Jika Anda memilih Teruskan Ke dari daftar drop-down Tindakan, Anda tidak perlu mengonfigurasi parameter Pemetaan untuk aturan tersebut.

    • Dalam daftar drop-down Tambah Kondisi, Nama Domain dipilih. Nama Domain: demo.domain.ingress.top

    • Dalam daftar drop-down Tindakan, Teruskan Ke dipilih.

      • Layanan: tea-svc.

      • Port: 80

      • Bobot: 80.

    • Tambah Layanan

      • Layanan: coffee-svc.

      • Port: 80

      • Bobot: 20.

    Gunakan pengaturan default untuk parameter lainnya.

  4. Setelah konfigurasi selesai, klik OK di pojok kiri bawah panel Create Ingress.

Gunakan kubectl

Blok kode berikut mendefinisikan Ingress yang meneruskan permintaan ke beberapa Layanan di dalam kluster:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: forward-ingress
  annotations:
  # Layanan yang ditentukan dalam anotasi harus merupakan Layanan yang ada di dalam kluster, dan nama Layanan harus sama dengan nama Layanan yang ditentukan dalam parameter backend bidang rule.
    alb.ingress.kubernetes.io/actions.forward: |
       [{
           "type": "ForwardGroup",
           "ForwardConfig": {
             "ServerGroups" : [{
               "ServiceName": "tea-svc",
               "Weight": 80,
               "ServicePort": 80
             },
             {
               "ServiceName": "coffee-svc",
               "Weight": 20,
               "ServicePort": 80
             }]
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /path
        pathType: Prefix
        backend:
          service:
            name: forward
            port:
              name: use-annotation # Nama port Layanan harus use-annotation.

Skenario 6: Tulis ulang permintaan

Blok kode berikut mendefinisikan Ingress yang menulis ulang nama domain, jalur, dan string kueri permintaan.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/actions.rewrite: |
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "querystring"
           }
       }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: rewrite
                port: 
                  number: 80

Skenario 7: Ubah header respons berdasarkan ResponseHeader

Penting
  • Secara default, aturan routing kustom berlaku untuk arah masuk. Untuk mengaktifkan aturan routing kustom agar berlaku untuk arah keluar, atur anotasi alb.ingress.kubernetes.io/rule-direction.<Service name> menjadi Response. Anotasi ini diatur ke Request secara default.

  • Saat membuat aturan routing keluar kustom, nama Service port dalam bidang ingressSpec.rules.backend harus use-annotation.

Blok kode berikut mendefinisikan bahwa saat response header cocok (header berisi response-hello dan nilainya harus value1 atau value2), header permintaan baru source: alibaba akan disisipkan ke dalam header.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-header: Response
   alb.ingress.kubernetes.io/conditions.response-header: |
     [{
         "type": "ResponseHeader",
         "responseHeaderConfig": {
            "key": "response-hello",
            "values": [
               "value1",
               "value2"
            ]
         }
     }]
   alb.ingress.kubernetes.io/actions.response-header: |
     [{
         "type": "InsertHeader",
         "InsertHeaderConfig": {
             "key": "source",
             "value": "alibaba",
             "valueType": "UserDefined"
         }
     }]
  name: response-header
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-header
            port:
              name: use-annotation # Nama port Service harus use-annotation.

Skenario 8: Modifikasi header respons berdasarkan kode status respons

Penting
  • Secara default, aturan routing kustom berlaku untuk arah masuk. Untuk mengaktifkan aturan routing kustom agar berlaku untuk arah keluar, atur Anotasi alb.ingress.kubernetes.io/rule-direction.<Service name> menjadi Response. Secara default, Anotasi ini diatur ke Request.

  • Saat Anda membuat aturan routing keluar kustom, nama Service port di dalam bidang ingressSpec.rules.backend harus use-annotation.

Blok kode berikut mendefinisikan bahwa header permintaan dihapus (response-hello dihapus dari header permintaan) hanya saat kode status respons adalah 200 atau 300.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-hello: Response
   alb.ingress.kubernetes.io/conditions.response-hello: |
     [{
       "type": "ResponseStatusCode",
       "responseStatusCodeConfig": {
         "values": [
             "200",
             "300"
         ]
       }
     }]
   alb.ingress.kubernetes.io/actions.response-hello: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "response-hello"
         }
     }]
  name: response-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-hello
            port:
              name: use-annotation # Nama port Layanan harus use-annotation.
```
<p></p></section><section><h2></h2><h3> Konfigurasikan kondisi dan tindakan routing berbasis nama domain untuk mengarahkan lalu lintas ke Layanan tertentu</h3><section><p>Bagian ini menjelaskan cara mengonfigurasi kondisi dan tindakan routing berbasis nama domain di konsol ACK untuk mengarahkan lalu lintas ke Layanan tertentu.</p><ol><li><p></p></li><li><p>.</span></p></li><li><p>Di halaman , klik . Di kotak dialog , konfigurasikan parameter.</p><section><table><colgroup></colgroup><colgroup></colgroup><colgroup></colgroup><tbody><tr><td colspan="1" id="task_1796525__entry_f0w_ebo_6xr" rowspan="1" style="background-color:#e5e5e5"><p></p></td><td colspan="1" id="task_1796525__entry_bmy_bqf_ewg" rowspan="1" style="background-color:#e5e5e5"><p></p></td><td colspan="1" id="task_1796525__entry_1cm_ru5_len" rowspan="1" style="background-color:#e5e5e5"><p></p></td></tr><tr><td colspan="1" id="entry_h4y_xph_0j3" rowspan="1"><section><p></p></section></td><td colspan="1" id="entry_roy_fa9_z1n" rowspan="1"><section><p>Anda dapat memilih , , atau  berdasarkan kebutuhan Anda.</p><p>Untuk informasi lebih lanjut tentang perbedaan di antara ketiga jenis gateway, lihat <a baseurl="t16682_v3_8_1.xdita" data-node="3539318" data-root="17398" data-tag="xref" href="t2206393.dita#task_2273852" id="e63c453432fq1">Perbandingan antara Nginx Ingresses, ALB Ingresses, dan MSE Ingresses</a>.</p></section></td><td colspan="1" id="entry_my2_545_beq" rowspan="1"><p></p></td></tr><tr><td colspan="1" id="entry_n70_q02_zux" rowspan="1"><p></p></td><td colspan="1" id="entry_7ax_wbg_x1g" rowspan="1"><section><p>Tentukan nama Ingress.</p></section></td><td colspan="1" id="entry_qjt_g63_10e" rowspan="1"><p>alb_ingress</p></td></tr><tr><td colspan="1" id="entry_ebq_y60_uec" rowspan="1"><p></p></td><td colspan="1" id="entry_4h3_4zo_8cq" rowspan="1"><p>Tentukan kelas Ingress yang terkait dengan AlbConfig.</p></td><td colspan="1" id="entry_3rx_owi_3x4" rowspan="1"><p>alb</p></td></tr><tr><td colspan="1" id="entry_d6h_4pe_shi" rowspan="1"><p></p></td><td colspan="1" id="entry_ptx_t3a_d70" rowspan="1"><section><p>Klik  untuk menambahkan aturan Ingress.</p><ul><li><p>: Tentukan nama domain kustom.</p></li><li><p>: Konfigurasikan parameter berikut:</p><ul><li><p>: Tentukan jalur URL dari Layanan backend.</p></li><li><p></p><section><ul><li><p>: mencocokkan awalan dari jalur URL yang diminta.</p></li><li><p>: mencocokkan secara eksak jalur URL yang diminta.</p></li><li><p>: bergantung pada logika yang diimplementasikan oleh kontroler ALB Ingress.</p></li></ul><p>Untuk informasi lebih lanjut, lihat <a baseurl="t2117965_v2_5_0.xdita" data-node="3179660" data-root="17398" data-tag="xref" href="t2120129.xdita#title_b0x_mn4_smu" id="1a361dc731ckg">Teruskan permintaan berdasarkan jalur URL</a>.</p></section></li><li><p>: Pilih Layanan backend.</p></li><li><p>: Tentukan port Layanan yang ingin Anda ekspos.</p></li></ul></li><li><p>Anda dapat mengonfigurasi beberapa jalur untuk satu nama domain. Klik  untuk menambahkan jalur.</p></li></ul></section></td><td colspan="1" id="entry_1oy_2al_2j9" rowspan="1"><ul><li><p>: *.example.com</p></li><li><p>:</p><ul><li><p>: /tes</p></li><li><p>: ImplementationSpecific. Ini adalah nilai default.</p></li><li><p>: tea-svc</p></li><li><p>: 80</p></li></ul></li></ul></td></tr><tr><td colspan="1" id="42ea258aafxr9" rowspan="1"><p></p></td><td colspan="1" id="11e828b4e4uw4" rowspan="1"><section><p>Anda dapat mengaktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk secara lebih rinci.</p><note><p>Anda dapat menambahkan hingga 10 kondisi ke aturan pengalihan.</p></note><ul><li><p>Jenis kondisi berikut tersedia dalam daftar drop-down :</p><section><ul><li><p>:</p><p>Menentukan bahwa hanya permintaan yang berisi nama domain tertentu yang dirutekan. Hubungan logis antara beberapa nama domain adalah ATAU. Setelah Anda menentukan nama domain, sistem menambahkan anotasi <code code-type="xCode" data-tag="code">alb.ingress.kubernetes.io/conditions.host-example

Praktik untuk mengonfigurasi kondisi dan tindakan routing

Skenario 1: Konfigurasikan kondisi dan tindakan routing berbasis nama domain untuk mengarahkan lalu lintas ke Service tertentu

Bab ini menjelaskan cara mengonfigurasi kondisi dan tindakan routing berbasis nama domain di konsol ACK untuk mengarahkan lalu lintas ke Service tertentu.

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

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

  3. Pada halaman Ingresses, klik Create Ingress. Dalam kotak dialog Create Ingress, konfigurasikan parameter-parameter berikut.

    Parameter

    Deskripsi

    Contoh

    Gateway Type

    Anda dapat memilih ALB Ingress, MSE Ingressy, atau Nginx Ingress sesuai dengan kebutuhan Anda.

    Untuk informasi lebih lanjut tentang perbedaan antara ketiga tipe gateway tersebut, lihat Perbandingan antara Nginx Ingresses, ALB Ingresses, dan MSE Ingresses.

    ALB

    Name

    Tentukan nama dari Ingress.

    alb_ingress

    Ingress Class

    Tentukan kelas dari Ingress yang terkait dengan AlbConfig.

    alb

    Rules

    Klik +Add Rule untuk menambahkan aturan Ingress.

    • Domain Name: Tentukan nama domain kustom.

    • Mappings: Konfigurasikan parameter berikut:

      • Path: Tentukan path URL dari Service backend.

      • Rule:

        • Prefix (Prefix-based Match): mencocokkan awalan dari path URL yang diminta.

        • Exact (Exact Match): secara eksak mencocokkan path URL yang diminta.

        • ImplementationSpecific (Default Value): bergantung pada logika yang diimplementasikan oleh pengontrol ALB Ingress.

        Untuk informasi lebih lanjut, lihat Arahkan permintaan berdasarkan path URL.

      • Service: Pilih Service backend.

      • Port: Tentukan port Service yang ingin Anda paparkan.

    • Anda dapat mengonfigurasi beberapa path untuk sebuah nama domain. Klik + Add untuk menambahkan path.

    • Domain Name: *.example.com

    • Mappings:

      • Path: /tes

      • Rule: ImplementationSpecific. Ini adalah nilai default.

      • Service: tea-svc

      • Port: 80

    Custom Forwarding Rules

    Anda dapat mengaktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk secara lebih rinci.

    Catatan

    Anda dapat menambahkan hingga 10 kondisi ke dalam satu aturan pengalihan.

    • Jenis kondisi berikut tersedia di daftar drop-down Add Condition:

      • Domain Name:

        Menentukan bahwa hanya permintaan yang berisi nama domain yang ditentukan yang akan diarahkan. Hubungan logis antara beberapa nama domain adalah OR. Setelah Anda menentukan nama domain, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.host-example.

      • Path:

        Menentukan bahwa hanya permintaan yang berisi satu atau lebih path yang ditentukan yang akan diarahkan. Beberapa path diperlakukan dengan hubungan OR. Setelah Anda menentukan path, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.path-example.

        Penting

        Setelah Anda mengonfigurasi kondisi pengalihan, Ingress akan secara otomatis menambahkan aturan pengalihan untuk path /created-by-<ALB-ID>.

      • HTTP Header:

        Menentukan bahwa hanya permintaan yang berisi header HTTP yang ditentukan yang akan diarahkan. Setiap header permintaan HTTP adalah pasangan key-value. Sebagai contoh, Anda dapat menetapkan key menjadi headername dan value menjadi headervalue1. Jika Anda menentukan beberapa nilai header, hubungan logis antara nilai-nilai header tersebut adalah OR. Setelah Anda menentukan header, sistem menambahkan anotasi alb.ingress.kubernetes.io/conditions.http-header-example.

    • Tindakan berikut tersedia dalam daftar drop-down Action:

      • Forward To

        Meneruskan lalu lintas masuk ke beberapa grup server backend. Pilih Service yang ingin Anda akses dari daftar drop-down Service Name. Dari daftar drop-down Port, pilih port yang digunakan untuk terhubung ke Service. Tetapkan bobot kustom untuk setiap grup server backend.

        Catatan
        • Jika Anda menggunakan komponen Flannel untuk kluster, ClusterIP Service tidak didukung.

        • Jika Anda memilih Teruskan Ke dari daftar drop-down Action, Anda tidak perlu mengonfigurasi parameter Pemetaan untuk aturan tersebut.

    • Dalam daftar drop-down Add Condition, Domain Name, Path, dan HTTP Header dipilih.

      • Domain Name: example.com. Anda dapat mengklik + Add Host untuk menambahkan nama domain, seperti test.com.

    • Dalam daftar drop-down Action, Forward To dipilih.

      • Service: tea-svc

      • Port: 80

      • Weight: 100

    Gunakan pengaturan default untuk parameter lainnya.

  4. Setelah konfigurasi selesai, klik OK di pojok kiri bawah panel Create Ingress.