Topik ini menjelaskan cara menyebar workload di kluster ACK yang dikelola (Auto Mode) dan mengeksposnya ke internet menggunakan ALB Ingress. Setelah selesai, Anda dapat mengakses aplikasi melalui nama domain-nya, sehingga memungkinkan pengelolaan lalu lintas eksternal dan load balancing yang efisien.
Dalam topik ini, Anda akan menyelesaikan langkah-langkah berikut:
-
Buat namespace untuk aplikasi contoh.
-
Sebarkan aplikasi Nginx contoh dan buat Service untuk mengekspos aplikasi ke jaringan kluster.
-
Buat ALB Ingress untuk mengekspos aplikasi ke internet. Langkah ini melibatkan pembuatan AlbConfig secara manual untuk mengelola instans Application Load Balancer (ALB) dan IngressClass untuk dikaitkan dengan AlbConfig tersebut.
-
Verifikasi penyebaran dan akses aplikasi melalui browser. Anda dapat melepas resource jika tidak lagi diperlukan.
Setelah menyelesaikan langkah-langkah tersebut, Anda akan memiliki hal-hal berikut:
-
Aplikasi Nginx contoh yang berjalan dengan dua replica.
-
Titik akhir publik yang stabil untuk aplikasi yang disediakan oleh ALB Ingress dan Service.
-
Dengan Auto Mode, ACK secara otomatis menskalakan aplikasi Anda berdasarkan workload dan mengelola siklus hidup node, sehingga mengurangi beban O&M Anda.
Prasyarat
Langkah 1: Membuat namespace
Buat namespace untuk tutorial ini guna mengisolasi resource.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Namespaces and Quotas.
-
Klik Create. Pada kotak dialog yang muncul, masukkan nama untuk namespace, misalnya
my-nginx-namespace, konfigurasi pengaturan lainnya, lalu klik OK.
Langkah 2: Menyebar aplikasi dan service Nginx
Pada langkah ini, Anda akan menyebarkan Deployment Nginx contoh bernama my-nginx dan Service bernama my-nginx-svc untuk mengekspos aplikasi.
-
Deployment: dua replica, gambar aplikasi contoh Nginx, dan port 80 diekspos untuk menerima lalu lintas jaringan HTTP.
-
Service: Service bertipe ClusterIP yang memetakan port 80 Service ke port 80 kontainer pod dan menggunakan pemilih label untuk mencocokkan pod.
Bagian ini hanya menyediakan prosedur contoh. Untuk informasi selengkapnya tentang cara membuat workload dan Service, lihat Create a workload dan Service management.
-
Buat file bernama
my-nginx.yamldengan kode berikut untuk menyebarkan Deployment dan Service di namespace tersebut.apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx # Nama aplikasi contoh. namespace: my-nginx-namespace # Ganti dengan nama namespace yang telah Anda buat. labels: app: nginx spec: replicas: 2 # Jumlah replica. selector: matchLabels: app: nginx # Nilai parameter ini harus sama dengan nilai selector dalam konfigurasi Service. Hal ini memungkinkan aplikasi diekspos oleh Service. template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 # Port yang diekspos di Service. --- apiVersion: v1 kind: Service metadata: labels: app: nginx name: my-nginx-svc namespace: my-nginx-namespace # Ganti dengan nama namespace yang telah Anda buat. spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: ClusterIP # Jika Anda menggunakan Flannel, atur tipe menjadi NodePort. -
Sebarkan Deployment dan Service.
kubectl apply -f my-nginx.yaml -
Periksa status Deployment dan Service.
-
Periksa status Deployment.
kubectl get deployment my-nginx -n my-nginx-namespaceOutput yang diharapkan:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 4m36s -
Periksa status Service:
kubectl get svc my-nginx-svc -n my-nginx-namespaceOutput yang diharapkan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-svc ClusterIP 192.XX.XX.164 <none> 80/TCP 42s
-
Langkah 3: Membuat ALB Ingress
Untuk menggunakan ALB Ingress dalam mengelola lalu lintas eksternal ke aplikasi di kluster, Anda harus menyiapkan resource berikut.
Sebelum membuat ALB Ingress, kami sarankan Anda memahami prinsip dan persyaratannya. Untuk informasi selengkapnya, lihat Manage ALB Ingresses.
-
ALB Ingress Controller: komponen yang mengelola resource Ingress. ALB Ingress Controller dipasang secara default saat Anda mengaktifkan Auto Mode untuk kluster.
-
AlbConfig: Custom Resource Definition (CRD) yang digunakan untuk mengonfigurasi instans ALB. Setiap AlbConfig berkorespondensi dengan satu instans ALB, yang berfungsi sebagai titik masuk permintaan pengguna dan meneruskannya ke Service backend.
-
IngressClass: Saat membuat ALB Ingress, Anda menentukan IngressClass untuk mereferensikan AlbConfig yang sesuai. Hal ini memungkinkan Anda menerapkan kebijakan routing dan load balancing aplikasi tertentu.
Buat AlbConfig
-
Buat file bernama
alb.yamldengan konten berikut untuk membuat AlbConfig.-
AlbConfig ini menentukan
addressTypesebagaiInternet, yang berarti instans Application Load Balancer (ALB) akan memiliki Alamat IP publik, nama domain DNS-nya dapat di-resolve ke Alamat IP publik tersebut, dan dapat diakses dari internet. -
Untuk
vSwitchId, tentukan ID dua vSwitch dari dua zona berbeda. vSwitch tersebut harus berada di VPC yang sama dengan kluster dan di zona yang didukung oleh ALB.Anda dapat memperoleh ID vSwitch di halaman vSwitch di VPC console. Untuk membuat vSwitch, lihat Create and manage a vSwitch.
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb spec: config: name: alb addressType: Internet # Jenis alamat layanan load balancing. Internet menentukan bahwa layanan dapat diakses melalui internet. zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Ganti dengan ID vSwitch Anda. - vSwitchId: vsw-uf6nun9tql5t8nh15**** # Ganti dengan ID vSwitch Anda. listeners: - port: 80 protocol: HTTP -
-
Buat AlbConfig.
kubectl apply -f alb.yaml -
Periksa resource AlbConfig.
kubectl get AlbConfig albOutput yang diharapkan:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 60sCatatanKonten ditampilkan di
PORT&PROTOCOLdanCERTIDhanya setelah Anda membuat listener HTTPS dan mengonfigurasi sertifikat untuknya. Wajar jika bidang-bidang ini kosong.
Membuat IngressClass
-
Buat file bernama
ingress_class.yamldengan konten berikut untuk membuat IngressClass.apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb # Nama AlbConfig yang dikaitkan dengan IngressClass. -
Buat IngressClass.
kubectl apply -f ingress_class.yaml
Membuat ALB Ingress
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Ingresses, pilih namespace yang telah Anda buat, lalu klik Create Ingress. Pada kotak dialog Create Ingress, konfigurasikan Ingress seperti dijelaskan dalam tabel berikut.
Tabel berikut hanya menjelaskan parameter utama. Untuk informasi selengkapnya tentang parameter dan operasi terkait, seperti mengonfigurasi resolusi DNS, lihat Create an ALB Ingress.
Parameter
Deskripsi
Gateway Type
Pilih ALB Ingress.
Name
Masukkan nama kustom untuk Ingress, misalnya
my-albingress.IngressClass
Pilih IngressClass yang telah Anda buat untuk mereferensikan AlbConfig yang sesuai.
Rules
-
Name: Pilih Service yang telah Anda buat.
-
Port: Pilih port yang akan diekspos untuk Service. Untuk contoh ini, pilih 80.
Anda dapat mempertahankan nilai default untuk parameter lainnya.
Setelah pembuatan selesai, pilih Ingresses di panel navigasi kiri untuk memeriksa apakah Ingress berhasil diterapkan. Tunggu sekitar 1 menit, lalu temukan dan salin nama titik akhir DNS ALB dari kolom Endpoint.
-
Langkah 4: Mengakses aplikasi
Tempelkan nama DNS titik akhir ALB ke browser Anda untuk mengakses aplikasi Nginx.

(Opsional) Langkah 5: Membersihkan resource
Resource yang dibuat dalam topik ini mencakup Deployment, Service, AlbConfig, IngressClass, dan ALB Ingress. Jalankan perintah berikut untuk menghapusnya.
Nama resource dalam perintah berikut merupakan contoh. Gantilah dengan nama resource aktual Anda.
kubectl delete deployment my-nginx -n my-nginx-namespace
kubectl delete Service my-nginx-svc -n my-nginx-namespace
kubectl delete Ingress my-albingress -n my-nginx-namespace
kubectl delete AlbConfig alb
kubectl delete IngressClass alb
Dokumen terkait
-
Untuk informasi tentang parameter pembuatan workload, lihat Create a workload. Untuk rekomendasi konfigurasi, lihat Recommended workload configurations.
-
Anda harus mengonfigurasi sertifikat SSL/TLS untuk listener HTTPS. Untuk informasi selengkapnya tentang metode konfigurasi sertifikat yang didukung oleh ALB Ingress, lihat Configure an HTTPS certificate to enable encrypted communication.
-
Anda dapat mengonfigurasi resource AlbConfig untuk menyesuaikan instans ALB. Untuk informasi selengkapnya, lihat ALB Ingress configuration reference.