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
Kluster ACK Serverless telah dibuat dan menjalankan Kubernetes 1.18 atau versi lebih baru. Untuk informasi lebih lanjut, lihat Panduan Cepat ACK Serverless.
Dua vSwitch yang berada di zona berbeda dari virtual private cloud (VPC) tempat kluster ACK diterapkan telah dibuat. Untuk informasi lebih lanjut, lihat Membuat dan Mengelola vSwitch.
Kontroler ALB Ingress telah diinstal di kluster. Untuk informasi lebih lanjut, lihat Mengelola Kontroler ALB Ingress.
Klien kubectl terhubung ke kluster ACK Serverless. Untuk informasi lebih lanjut, lihat Menghubungkan ke Kluster ACK menggunakan kubectl.
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 : ingressClassNamedalam 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
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: HTTPParameter
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.
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 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-demoKluster 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-demoJalankan perintah berikut untuk membuat IngressClass:
kubectl apply -f alb.yamlOutput yang Diharapkan:
ingressclass.networking.k8s.io/alb created
Langkah 2: Menyebarkan Layanan
Buat file cafe-service.yaml dan salin konten berikut ke dalam file tersebut. File ini digunakan untuk menyebarkan dua Deployment bernama
coffeedanteaserta dua Layanan bernamacoffeedantea.Jalankan perintah berikut untuk menyebarkan Deployment dan Layanan:
kubectl apply -f cafe-service.yamlOutput yang Diharapkan:
deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" createdPeriksa status Deployment dan Layanan.
Jalankan perintah berikut untuk memeriksa kemajuan penyebaran 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 Layanan:
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: Mengonfigurasi ALB Ingress
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: 80Kluster 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: 80Jalankan perintah berikut untuk mengonfigurasi nama domain yang dapat diakses secara eksternal dan
pathuntuk Layanancoffeedanteasecara terpisah:kubectl apply -f cafe-ingress.yamlOutput yang Diharapkan:
ingress.networking.k8s.io/cafe-ingress createdJalankan perintah berikut untuk memeriksa nama domain Ingress yang digunakan untuk mengekspos instance 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: 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/coffeeSetelah 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.