ALB Ingress (Application Load Balancer Ingress) mendukung HTTP, HTTPS, dan QUIC. ALB Ingress dirancang untuk aplikasi cloud-native yang memerlukan elastisitas tinggi dan manajemen traffic Lapisan 7 berskala besar. ALB Ingress kompatibel dengan Nginx Ingress serta mendukung konfigurasi routing bisnis kompleks dan manajemen otomatis sertifikat TLS, sehingga menyediakan mekanisme manajemen traffic yang fleksibel. Anda dapat mengonfigurasi aturan pengalihan untuk mengakses Service berbeda dalam satu kluster melalui URL yang berbeda.
Prasyarat
Anda telah membuat kluster ACK serverless yang menjalankan Kubernetes versi 1.18 atau lebih baru. Untuk informasi selengkapnya, lihat Quick Start for ACK Serverless.
Anda telah membuat dua vSwitch di zona berbeda. vSwitch tersebut harus berada dalam VPC yang sama dengan kluster. Untuk informasi selengkapnya, lihat Create and manage vSwitches.
Anda telah menginstal komponen ALB Ingress Controller di kluster. Untuk informasi selengkapnya, lihat Manage the ALB Ingress Controller component.
Dapatkan KubeConfig untuk kluster Anda dan gunakan kubectl untuk terhubung ke kluster.
Catatan
Jika Anda menggunakan plug-in jaringan Flannel, Service backend dari ALB Ingress hanya mendukung tipe NodePort dan LoadBalancer.
Nama sumber daya AlbConfig, Namespace, Ingress, dan Service tidak boleh diawali dengan aliyun.
Versi lama Nginx Ingress Controller tidak dapat mengenali bidang
spec:ingressClassNamedalam sumber daya Ingress. Jika versi lama Nginx Ingress Controller terinstal dan Anda menggunakan Nginx Ingress serta ALB Ingress secara bersamaan di kluster, ALB Ingress mungkin akan direkonsiliasi oleh Nginx Ingress Controller. Untuk mencegah masalah ini, lakukan upgrade Nginx Ingress Controller atau gunakan anotasi untuk menentukan ingressClass bagi ALB Ingress. Untuk informasi selengkapnya, lihat Upgrade the Nginx Ingress Controller component atau Advanced ALB Ingress configurations.
Langkah 1: Buat AlbConfig
Salin konten berikut ke file bernama alb-test.yaml untuk membuat 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: HTTPParameter
Deskripsi
spec.config.name
(Opsional) Nama instans ALB.
spec.config.addressType
(Wajib) Jenis alamat load balancer. Nilai yang valid:
Internet (default): Load balancer memiliki alamat IP publik. Rekaman DNS di-resolve ke alamat IP publik. Load balancer dapat diakses melalui jaringan publik.
Intranet: Load balancer hanya memiliki alamat IP pribadi. Rekaman DNS di-resolve ke alamat IP pribadi. Load balancer hanya dapat diakses dari dalam VPC tempatnya ditempatkan.
spec.config.zoneMappings
(Wajib) ID vSwitch untuk ALB Ingress. Anda harus menentukan ID minimal dua vSwitch di zona berbeda. vSwitch yang ditentukan harus berada di zona yang didukung oleh ALB dan dalam VPC yang sama dengan kluster. Untuk informasi selengkapnya mengenai wilayah dan zona yang didukung oleh ALB, lihat Regions and zones supported by ALB.
Jalankan perintah berikut untuk membuat AlbConfig.
kubectl apply -f alb-test.yamlOutput yang diharapkan:
albconfig.alibabacloud.com/alb-demo createdBuat file bernama alb.yaml dan salin konten berikut ke file tersebut untuk membuat IngressClass.
Kluster yang menjalankan Kubernetes 1.19 atau 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-demoKluster yang menjalankan versi Kubernetes sebelum 1.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-demoJalankan perintah berikut untuk membuat IngressClass.
kubectl apply -f alb.yamlOutput yang diharapkan:
ingressclass.networking.k8s.io/alb created
Langkah 2: Deploy layanan
Buat file cafe-service.yaml dengan konten berikut untuk melakukan deploy dua Penyebaran (Deployment) bernama
coffeedantea, serta dua layanan (Service) bernamacoffeedantea.Jalankan perintah berikut untuk melakukan deploy dua Penyebaran dan dua Service tersebut.
kubectl apply -f cafe-service.yamlOutput yang diharapkan:
deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" createdPeriksa status aplikasi dan Service yang telah dibuat.
Jalankan perintah berikut untuk memeriksa status aplikasi.
kubectl get deployOutput yang diharapkan:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 1/2 2 1 2m26s tea 1/1 1 1 2m26sJalankan perintah berikut untuk memeriksa status Service.
kubectl get svcOutput 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: Konfigurasi ALB Ingress
Buat file bernama cafe-ingress.yaml dan salin konten berikut ke dalamnya.
Kluster yang menjalankan Kubernetes 1.19 atau 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 path konteks - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # Konfigurasikan path konteks - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80Kluster yang menjalankan versi Kubernetes sebelum 1.19
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # Konfigurasikan path konteks. - path: /tea backend: serviceName: tea-svc servicePort: 80 # Konfigurasikan path konteks. - path: /coffee backend: serviceName: coffee-svc servicePort: 80Jalankan perintah berikut untuk mengonfigurasi nama domain dan path guna mengekspos Service
coffeedantea.kubectl apply -f cafe-ingress.yamlOutput yang diharapkan:
ingress.networking.k8s.io/cafe-ingress createdJalankan perintah berikut untuk mengambil alamat instans ALB.
kubectl get ingOutput 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: Akses layanan
Gunakan command line untuk mengakses Service
coffeedengan alamat instans ALB yang telah diambil.curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/coffeeGunakan command line untuk mengakses Service
teadengan alamat instans ALB yang telah diambil.curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/tea
Referensi
Untuk informasi mengenai konfigurasi ALB Ingress lanjutan, seperti cara meneruskan permintaan dari nama domain atau path URL berbeda ke kelompok server backend berbeda, mengonfigurasi pemeriksaan kesehatan, mengarahkan permintaan HTTP ke HTTPS, melakukan rilis bertahap, dan mengonfigurasi port pendengar kustom, lihat Advanced ALB Ingress configurations.
Untuk menyesuaikan aturan pengalihan ALB Ingress dengan mengonfigurasi kondisi dan aksi pengalihan, lihat Customize forwarding rules for an ALB Ingress.
Untuk mengonfigurasi pendengar HTTPS guna meneruskan permintaan HTTPS, lihat Use an ALB Ingress to configure an HTTPS listener certificate.
Jika Anda mengalami masalah saat menggunakan ALB Ingress, lihat Troubleshoot ALB Ingress issues dan ALB ingress FAQ.