全部产品
Search
文档中心

Container Service for Kubernetes:Mengakses Layanan Menggunakan ALB Ingress

更新时间:Jul 06, 2025

Application Load Balancer (ALB) Ingress mendukung HTTP, HTTPS, dan QUIC serta memenuhi kebutuhan aplikasi cloud-native untuk elastisitas tinggi dan manajemen lalu lintas Lapisan 7 dalam skala besar. ALB Ingress kompatibel dengan NGINX Ingress dan mendukung rute kompleks serta manajemen otomatis Sertifikat TLS untuk fleksibilitas pengelolaan lalu lintas. Anda dapat mengonfigurasi aturan routing untuk mengakses layanan berbeda di kluster melalui URL yang unik.

Prasyarat

Catatan Penggunaan

  • Jika menggunakan plugin jaringan Flannel, layanan backend gateway ALB Ingress harus bertipe NodePort atau LoadBalancer.

  • Nama objek AlbConfig, namespace, Ingress, dan Layanan tidak boleh dimulai dengan aliyun.

  • Versi kontroler NGINX Ingress yang lebih lama tidak dapat mengenali bidang spec : ingressClassName dalam sumber daya Ingress. Jika versi kontroler NGINX Ingress yang lebih lama diinstal dan baik NGINX Ingress maupun ALB Ingress digunakan dalam kluster ACK Anda, ALB Ingress mungkin direkonsiliasi oleh kontroler NGINX Ingress. Untuk menghindari masalah ini, perbarui kontroler NGINX Ingress sesegera mungkin atau gunakan anotasi untuk menentukan IngressClasses dari ALB Ingress. Untuk informasi lebih lanjut, lihat Memperbarui Kontroler NGINX Ingress atau Konfigurasi Lanjutan ALB Ingress.

Langkah 1: Membuat Objek AlbConfig

  1. Buat file bernama alb-test.yaml dan salin konten berikut ke dalam file tersebut. File ini digunakan untuk membuat objek AlbConfig.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
        name: alb-test
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
      listeners:
        - port: 80
          protocol: HTTP

    Parameter

    Deskripsi

    spec.config.name

    Nama instance ALB. Parameter ini opsional.

    spec.config.addressType

    Tipe alamat IP yang digunakan oleh instance ALB untuk menyediakan layanan. Parameter ini wajib. Nilai valid:

    • Internet: Instance ALB menggunakan alamat IP publik. Nama domain Ingress diarahkan ke alamat IP publik instance ALB. Oleh karena itu, instance ALB dapat diakses melalui Internet. Ini adalah nilai default.

    • Intranet: Instance ALB menggunakan alamat IP privat. Nama domain Ingress diarahkan ke alamat IP privat. Oleh karena itu, instance ALB hanya dapat diakses di dalam VPC tempat instance ALB diterapkan.

    spec.config.zoneMappings

    ID vSwitch yang digunakan oleh ALB Ingress. Anda harus menentukan setidaknya dua ID vSwitch. vSwitch harus ditempatkan di zona berbeda dan di VPC tempat kluster berada. Zona vSwitch harus didukung oleh ALB Ingress. Parameter ini wajib. Untuk informasi lebih lanjut tentang wilayah dan zona yang didukung oleh ALB Ingress, lihat Wilayah dan zona.

  2. Jalankan perintah berikut untuk membuat AlbConfig:

    kubectl apply -f alb-test.yaml

    Output yang Diharapkan:

    albconfig.alibabacloud.com/alb-demo created
  3. Buat file bernama alb.yaml dan salin konten berikut ke dalam file tersebut:

    Kluster yang menjalankan Kubernetes 1.19 atau versi lebih baru

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-demo

    Kluster yang menjalankan versi Kubernetes sebelum V1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-demo
  4. Jalankan perintah berikut untuk membuat IngressClass:

      kubectl apply -f alb.yaml

    Output yang Diharapkan:

    ingressclass.networking.k8s.io/alb created

Langkah 2: Menyebarkan Layanan

  1. Buat file cafe-service.yaml dan salin konten berikut ke dalam file tersebut. File ini digunakan untuk menyebarkan dua Deployment bernama coffee dan tea serta dua Layanan bernama coffee dan tea.

    Lihat Konten File YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: coffee
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      clusterIP: None
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tea
    spec:
      replicas: 1
      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: v1
    kind: Service
    metadata:
      name: tea-svc
      labels:
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      clusterIP: None
  2. Jalankan perintah berikut untuk menyebarkan Deployment dan Layanan:

    kubectl apply -f cafe-service.yaml

    Output yang Diharapkan:

    deployment "coffee" created
    service "coffee-svc" created
    deployment "tea" created
    service "tea-svc" created
  3. Periksa status Deployment dan Layanan.

    1. Jalankan perintah berikut untuk memeriksa kemajuan penyebaran aplikasi:

      kubectl get deploy

      Output yang Diharapkan:

      NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
      coffee                           1/2     2            1           2m26s
      tea                              1/1     1            1           2m26s
    2. Jalankan perintah berikut untuk memeriksa status Layanan:

      kubectl get svc

      Output yang Diharapkan:

      NAME                          TYPE           CLUSTER-IP       EXTERNAL-IP           PORT(S)                 AGE
      coffee-svc                    NodePort       172.16.XX.XX     <none>                80:32056/TCP            9m38s
      tea-svc                       NodePort       172.16.XX.XX     <none>                80:31696/TCP            9m38s

Langkah 3: Mengonfigurasi ALB Ingress

  1. Buat file bernama cafe-ingress.yaml dan salin konten berikut ke dalam file tersebut:

    Kluster yang menjalankan Kubernetes 1.19 atau versi lebih baru

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         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

    Kluster yang menjalankan versi Kubernetes sebelum V1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          # Konfigurasikan jalur konteks. 
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # Konfigurasikan jalur konteks. 
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  2. Jalankan perintah berikut untuk mengonfigurasi nama domain yang dapat diakses secara eksternal dan path untuk Layanan coffee dan tea secara terpisah:

    kubectl apply -f cafe-ingress.yaml

    Output yang Diharapkan:

    ingress.networking.k8s.io/cafe-ingress created
  3. Jalankan perintah berikut untuk memeriksa nama domain Ingress yang digunakan untuk mengekspos instance ALB:

    kubectl get ing

    Output yang Diharapkan:

    NAME           CLASS    HOSTS                         ADDRESS                                               PORTS   AGE
    cafe-ingress   alb      demo.domain.ingress.top       alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com   80      50s

Langkah 4: Mengakses Layanan

  • Setelah mendapatkan alamat instance ALB, gunakan CLI untuk mengakses Layanan coffee:

    curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/coffee
  • Setelah mendapatkan alamat instance ALB, gunakan CLI untuk mengakses Layanan tea:

    curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/tea

Referensi

  • Untuk informasi lebih lanjut tentang konfigurasi lanjutan ALB Ingress, seperti meneruskan permintaan yang ditujukan ke nama domain atau URL berbeda ke grup server backend yang berbeda, pemeriksaan kesehatan, pengalihan permintaan dari HTTP ke HTTPS, rilis canary, dan port pendengar kustom, lihat Konfigurasi Lanjutan ALB Ingress.

  • Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan routing ALB Ingress kustom, kondisi penerusan, dan tindakan, lihat Menyesuaikan Aturan Routing ALB Ingress.

  • Untuk informasi lebih lanjut tentang cara mengonfigurasi pendengar HTTPS untuk meneruskan Permintaan HTTPS, lihat Mengonfigurasi Sertifikat untuk Komunikasi Terenkripsi melalui HTTPS.

  • Untuk informasi lebih lanjut tentang cara menyelesaikan masalah ALB Ingress, lihat FAQ ALB Ingress.