全部产品
Search
文档中心

Server Load Balancer:Panduan Penggunaan ALB Ingress pada Kluster Kubernetes yang Dikelola Sendiri

更新时间:Nov 09, 2025

Topik ini menjelaskan cara menggunakan ALB Ingress dengan kluster Kubernetes yang dikelola sendiri dan diterapkan di Alibaba Cloud.

Contoh skenario

Topik ini menggunakan skenario yang ditunjukkan pada gambar berikut. Anda memiliki kluster Kubernetes yang dikelola sendiri yang dibangun di atas sumber daya Alibaba Cloud dan ingin menggunakan ALB Ingress untuk meneruskan permintaan.

Anda dapat menerapkan `alb-ingress-controller` di kluster Kubernetes yang dikelola sendiri serta membuat sumber daya Ingress dan Service. `alb-ingress-controller` menyinkronkan sumber daya Ingress ke ALB sebagai aturan pengalihan berdasarkan konfigurasi layanan dalam kluster Kubernetes. Selain itu, controller ini memantau API server kluster untuk mendeteksi perubahan pada sumber daya Ingress dan menyinkronkan perubahan tersebut ke ALB. ALB mendeteksi perubahan ini dan secara dinamis meneruskan lalu lintas ke pod yang sesuai dalam kluster. Untuk informasi lebih lanjut, lihat Manajemen ALB Ingress.

ALB Ingress scenario example

Catatan

  • Jika Anda menggunakan plug-in jaringan overlay seperti Flannel, layanan backend untuk ALB Ingress hanya mendukung jenis NodePort dan LoadBalancer.

  • Nama sumber daya seperti AlbConfig, Namespace, Ingress, dan Service tidak boleh diawali dengan `aliyun`.

Prasyarat

  • Anda memiliki kluster Kubernetes versi 1.20 atau lebih baru yang dikelola sendiri dan diterapkan di Alibaba Cloud. Gunakan alat kubectl untuk terhubung ke kluster. Untuk informasi lebih lanjut tentang cara mengunduh dan menginstal alat kubectl, lihat Instal dan Atur kubectl.

  • Akses jaringan publik diaktifkan untuk kluster menggunakan Translasi Alamat IP Sumber (SNAT). Untuk informasi lebih lanjut, lihat Gunakan fitur SNAT dari gateway NAT Internet untuk mengakses Internet.

  • Perhatikan hal berikut saat menggunakan citra kontroler untuk kluster yang dikelola sendiri:

    • Jika Anda menggunakan citra pribadi, Anda dapat mengompilasi dan mengunggah citra tersebut. Untuk informasi lebih lanjut, lihat dokumen sumber terbuka Cara menerapkan kontroler dari kode sumber.

    • Untuk kluster dengan arsitektur x86, Anda dapat menggunakan citra publik Alibaba Cloud untuk pengujian.

Prosedur

Configuration steps

Langkah-langkah berikut melibatkan modifikasi file. Pastikan Anda memahami nama serta tujuan dari setiap file tersebut.

Langkah

Nama File

Tujuan

Langkah 1: Terapkan alb-ingress-controller

load-balancer-controller.yaml

Dimodifikasi dari templat

Digunakan untuk menerapkan alb-ingress-controller

Langkah 2: Buat sumber daya AlbConfig dan IngressClass

alb.yaml

Dibuat dan dimodifikasi

Digunakan untuk membuat sumber daya albconfig dan ingressClass, serta secara sinkron membuat instans ALB.

Langkah 3: Terapkan aplikasi uji

test-service.yaml

Dibuat dan dimodifikasi

Digunakan untuk menerapkan layanan uji

Langkah 4: Buat Ingress

test-ingress.yaml

Dibuat dan dimodifikasi

Digunakan untuk membuat Ingress

Langkah 1: Terapkan alb-ingress-controller

Catatan

Sistem mungkin gagal menarik citra penyebaran karena masalah jaringan penyedia layanan. Jika hal ini terjadi, gunakan citra pribadi. Anda dapat mengompilasi dan mengunggah citra tersebut. Untuk informasi lebih lanjut, lihat dokumen sumber terbuka Cara menerapkan kontroler dari kode sumber.

alb-ingress-controller dijalankan dalam mode InCluster dan diterapkan menggunakan file load-balancer-controller.yaml. Izin untuk mendengarkan sumber daya seperti Service, Endpoint, dan Node telah dikonfigurasi. ServiceAccount, penyebaran, dan ConfigMap terkait telah disiapkan sebelumnya. Lakukan modifikasi konfigurasi sesuai kebutuhan Anda.

  1. Modifikasi file load-balancer-controller.yaml untuk mengubah citra penyebaran menjadi alamat citra yang tersedia.

    File `load-balancer-controller.yaml` digunakan untuk menerapkan alb-ingress-controller.

    Sebelum modifikasi:

    image: ${path/to/your/image/registry}

    Setelah modifikasi:

    image: alibabacloudslb/alibaba-load-balancer-controller:v1.2.0  #Citra dikompilasi untuk x86
  2. Modifikasi file `load-balancer-controller.yaml` untuk mengonfigurasi ID AccessKey dan Rahasia AccessKey dalam ConfigMap.

    Catatan

    Anda dapat menggunakan Akun Alibaba Cloud yang Anda gunakan untuk membuat instans ALB untuk masuk ke Konsol Resource Access Management (RAM) dan melihat ID AccessKey serta Rahasia AccessKey di halaman AccessKey.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: load-balancer-config
      namespace: kube-system
    data:
      cloud-config.conf: |-
           {
               "Global": {
                   "AccessKeyID": "<YOUR_ACCESS_KEY_ID>", # Diperlukan enkode Base64
                   "AccessKeySecret": "<YOUR_ACCESS_KEY_SECRET>" # Diperlukan enkode Base64
               }
           }
                            
  3. Terhubung ke kluster menggunakan kubectl dan jalankan perintah berikut untuk menerapkan file `load-balancer-controller.yaml` yang telah dimodifikasi.

    kubectl apply -f load-balancer-controller.yaml

    Keluaran yang diharapkan:

    clusterrole.rbac.authorization.k8s.io/system:load-balancer-controller created
    serviceaccount/load-balancer-controller created
    clusterrolebinding.rbac.authorization.k8s.io/system:load-controller-manager created
    configmap/load-balancer-config created
    deployment.apps/load-balancer-controller created
  4. Jalankan perintah berikut untuk memverifikasi penyebaran alb-ingress-controller.

    kubectl -n kube-system get all | grep load-balancer

    Jika status pod adalah Running seperti yang ditunjukkan pada gambar berikut, penyebaran berhasil.

    Verify the deployment of the alb-ingress-controller

Langkah 2: Buat sumber daya AlbConfig dan IngressClass

Setelah sumber daya AlbConfig dan IngressClass dibuat, instans ALB juga akan terbuat.

  1. Buat file `alb.yaml` dan salin konten berikut ke dalam file tersebut.

    File `alb.yaml` digunakan untuk membuat sumber daya AlbConfig dan IngressClass.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
        name: alb-test             #alb-test adalah nama instans ALB.
        addressType: Internet      #Intranet menentukan jaringan pribadi. Internet menentukan Internet.
        zoneMappings:
        - vSwitchId: vsw-wz9e2usil7e5an1xi****    #ALB memerlukan ID vSwitch di setidaknya dua zona.
        - vSwitchId: vsw-wz92lvykqj1siwvif****
      listeners:
        - port: 80
          protocol: HTTP
    ---
    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   #Sumber daya AlbConfig yang ditentukan.
    Catatan

    Perhatikan konfigurasi parameter berikut:

    • albconfig.spec.config.addressType: Jenis jaringan instans. Nilai yang valid adalah:

      • Internet (default): Instans terhubung ke Internet. Alamat IP publik dan alamat IP pribadi disediakan di setiap zona. Instans ALB yang menghadap ke Internet menggunakan Elastic IP Address (EIP) untuk menyediakan akses jaringan publik. Jika Anda memilih opsi ini, Anda akan dikenakan biaya untuk instans EIP serta untuk bandwidth atau transfer data.

        • EIP menyediakan layanan yang menghadap ke publik dan memungkinkan akses ke ALB melalui Internet.

        • Alamat IP pribadi memungkinkan Instance ECS dalam VPC mengakses ALB.

      • Intranet: Instans terhubung ke jaringan pribadi. Alamat IP pribadi disediakan di setiap zona. Instans ALB hanya dapat diakses melalui jaringan internal Alibaba Cloud, bukan dari Internet.

    • spec.config.zoneMappings: Menentukan ID vSwitch untuk ALB Ingress. Anda harus menentukan ID setidaknya dua vSwitch dari zona yang berbeda. vSwitch yang ditentukan harus berada di zona yang didukung oleh ALB. Untuk informasi lebih lanjut tentang wilayah dan zona yang didukung oleh ALB, lihat Wilayah dan Zona yang Didukung.

  2. Hubungkan ke kluster menggunakan kubectl dan jalankan perintah berikut untuk menerapkan file `alb.yaml`.

    kubectl apply -f alb.yaml

    Keluaran yang diharapkan:

    AlbConfig.alibabacloud.com/alb-demo create
    ingressclass.networking.k8s.io/alb created
  3. Verifikasi bahwa instans ALB telah dibuat.

Langkah 3: Terapkan aplikasi uji

Langkah ini menggunakan citra uji untuk membuat sumber daya penyebaran yang akan digunakan dalam penerapan aplikasi uji.

  1. Buat file `test-service.yaml` dan salin konten berikut ke dalam file tersebut.

    File `test-service.yaml` digunakan untuk menerapkan dua penyebaran bernama test01 dan test02, serta dua layanan bernama test01-service dan test02-service.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test01
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: test01
      template:
        metadata:
          labels:
            app: test01
        spec:
          containers:
          - name: test01
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: test01-service
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: test01
      type: NodePort
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test02
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: test02
      template:
        metadata:
          labels:
            app: test02
        spec:
          containers:
          - name: test02
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: test02-service
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: test02
      type: NodePort
  2. Terhubung ke kluster menggunakan kubectl dan jalankan perintah berikut untuk menerapkan file `test-service.yaml`.

    kubectl apply -f test-service.yaml

    Keluaran yang diharapkan:

    deployment "test01" created
    service "test01-service" created
    deployment "test02" created
    service "test02-service" created
  3. Jalankan perintah berikut untuk memverifikasi bahwa layanan uji telah diterapkan.

    kubectl get svc,deploy  

    Jika tanggapan serupa dengan berikut ini dikembalikan, layanan uji berhasil diterapkan.Deploy a test service

Langkah 4: Buat Ingress

Ingress sesuai dengan aturan pengalihan dalam instans ALB. Bagian ini menjelaskan konfigurasi yang menggunakan fitur pengalihan berbasis jalur. Untuk informasi lebih lanjut tentang fitur lanjutan, lihat Panduan Pengguna ALB Ingress.

  1. Buat file `test-ingress.yaml` dan salin konten berikut ke dalam file.

    File `test-ingress.yaml` digunakan untuk membuat Ingress.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: test-ingress
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /test01
            pathType: Prefix
            backend:
              service:
                name: test01-service
                port:
                  number: 80
          - path: /test02
            pathType: Prefix
            backend:
              service:
                name: test02-service
                port:
                  number: 80
  2. Terhubung ke kluster menggunakan kubectl dan jalankan perintah berikut untuk menerapkan file `test-ingress.yaml`.

    kubectl apply -f test-ingress.yaml

    Keluaran yang diharapkan:

    ingress "test-ingress" created
  3. Jalankan perintah berikut untuk memverifikasi pembuatan sumber daya test-ingress.

    kubectl get ingress

    Jika tanggapan serupa dengan berikut ini dikembalikan, sumber daya test-ingress telah berhasil dibuat.image

Langkah 5: Verifikasi hasil

Akses layanan melalui resolusi nama domain

  1. Buat rekaman CNAME untuk memetakan nama domain Anda ke nama DNS instans ALB. Untuk informasi lebih lanjut, lihat Tambahkan rekaman CNAME untuk instans ALB.

    Contoh ini mengasumsikan bahwa nama domain kustom demo.domain.ingress.top dipetakan ke nama domain layanan publik instans ALB.

  2. Jalankan perintah berikut untuk mengakses layanan test01 menggunakan instans ALB.

    curl http://demo.domain.ingress.top/test01

    Verification result 1

  3. Jalankan perintah berikut untuk mengakses layanan test02 menggunakan instans ALB.

    curl http://demo.domain.ingress.top/test02

    Verification result 2

Jika Anda memiliki pertanyaan, bergabunglah dengan grup DingTalk Grup Komunikasi Pelanggan ALB (ID: 31945843) untuk mendapatkan bantuan.

Referensi

Ikhtisar dan Fitur ALB Ingress: