Topik ini menjelaskan cara menyebarkan workload di kluster ACK Auto Mode dan mengeksposnya ke internet menggunakan ALB Ingress. Setelah menyelesaikan langkah-langkah berikut, Anda dapat mengakses aplikasi melalui nama domain tertentu untuk manajemen lalu lintas eksternal dan load balancing yang efisien.
Topik ini mencakup operasi 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. Anda perlu membuat AlbConfig secara manual untuk mengelola instans ALB dan IngressClass yang dikaitkan dengan AlbConfig tersebut.
-
Verifikasi keberhasilan penerapan dan akses aplikasi dari browser. Anda dapat melepas resource jika tidak lagi diperlukan.
Setelah menyelesaikan operasi ini, Anda akan memiliki:
-
Aplikasi Nginx contoh yang berjalan dengan dua replica.
-
Titik masuk publik yang stabil untuk aplikasi yang disediakan oleh ALB Ingress dan Service.
-
Beban operasional berkurang karena ACK dalam Auto Mode secara otomatis menskalakan resource dan mengelola siklus hidup node berdasarkan beban aplikasi.
Prasyarat
Langkah 1: Buat namespace
Buat namespace untuk mengisolasi resource dalam tutorial ini.
Masuk ke Konsol ACK. 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 namespace kustom (topik ini menggunakan my-nginx-namespace sebagai contoh), konfigurasikan pengaturan lain sesuai petunjuk di halaman, lalu klik OK.
Langkah 2: Sebarkan aplikasi dan Service Nginx
Pada bagian ini, Anda menyebarkan Deployment Nginx contoh bernama my-nginx dan Service bernama my-nginx-svc untuk mengekspos aplikasi.
-
Deployment: 2 replica. Gambar menggunakan aplikasi Nginx contoh. Port 80 diekspos untuk menerima lalu lintas HTTP.
-
Service: Jenis Service adalah ClusterIP. Port 80 Service dipetakan ke port kontainer Pod 80. Service menggunakan label selector untuk mencocokkan Pod.
Bagian ini hanya menyediakan prosedur contoh. Untuk prosedur lengkap membuat workload dan Service, lihat Create a workload dan Service management.
-
Buat file bernama my-nginx.yaml dengan konten berikut untuk menyebarkan Deployment dan Service.
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 ini harus sesuai dengan selector di Service untuk mengekspos aplikasi ini. 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 ini harus 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, Anda harus menggunakan 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: Buat ALB Ingress dan resource terkait
Untuk mengelola lalu lintas eksternal yang mengakses aplikasi di kluster menggunakan ALB Ingress, Anda harus menyiapkan resource berikut.
Sebelum membuat ALB Ingress, kami sarankan Anda mempelajari prinsip dan persyaratannya di ALB Ingress management.
-
ALB Ingress Controller: komponen yang mengelola resource Ingress. Setelah Anda mengaktifkan Auto Mode untuk kluster, ALB Ingress Controller diinstal secara default.
-
AlbConfig: Definisi Sumber Daya Kustom (CRD) yang dibuat oleh ALB Ingress Controller untuk mendeklarasikan konfigurasi instans ALB. Setiap AlbConfig berkorespondensi dengan satu instans ALB. Instans ALB merupakan titik masuk permintaan pengguna dan meneruskan permintaan ke Service backend.
-
IngressClass: Saat membuat ALB Ingress, Anda dapat menentukan IngressClass ini untuk mereferensikan AlbConfig yang sesuai. Hal ini memungkinkan Anda menerapkan konfigurasi routing aplikasi dan kebijakan load balancing tertentu.
Buat AlbConfig
-
Buat file bernama alb.yaml dengan konten berikut untuk membuat AlbConfig.
-
AlbConfig ini mengatur
addressTypemenjadiInternet. Artinya, instans ALB diberi alamat IP publik, nama domain DNS-nya diselesaikan ke alamat IP publik tersebut, dan instans tersebut dapat diakses dari internet. -
Untuk
vSwitchId, masukkan ID dua vSwitch dari dua zona berbeda. vSwitch tersebut harus berada di VPC yang sama dengan kluster dan di zona yang didukung oleh ALB.Di Konsol VPC, Anda dapat memperoleh ID vSwitch pada halaman vSwitch. Jika perlu membuat vSwitch, lihat Create and manage vSwitches.
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb spec: config: name: alb addressType: Internet # Jenis alamat load balancer. Instans ALB yang menghadap internet 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 -
Lihat resource AlbConfig.
kubectl get AlbConfig albOutput yang diharapkan:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 60sCatatanField
PORT&PROTOCOLdanCERTIDhanya diisi setelah Anda membuat listener HTTPS dan mengonfigurasi sertifikat untuknya. Wajar jika field ini kosong.
Buat IngressClass
-
Buat file bernama ingress_class.yaml dengan 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
Buat ALB Ingress
Masuk ke Konsol ACK. 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 dan ikuti petunjuk di layar untuk membuat Ingress.
Tabel berikut hanya menjelaskan parameter utama. Untuk informasi lebih lanjut 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 tujuan, yaitu Service yang telah Anda buat.
-
Port: Pilih port yang ingin diekspos untuk Service, yaitu 80 dalam contoh ini.
Biarkan nilai default untuk parameter lainnya.
Setelah Ingress dibuat, kembali ke halaman Ingresses. Setelah sekitar satu menit, temukan dan salin nama DNS dari kolom Endpoint.
-
Langkah 4: Akses aplikasi
Tempelkan nama DNS ke browser Anda untuk mengakses aplikasi Nginx.
Browser menampilkan halaman selamat datang Nginx default dengan judul Welcome to nginx on Anolis OS! Hal ini menunjukkan bahwa server web berjalan sesuai harapan dan konfigurasi ALB Ingress berfungsi dengan benar.
(Opsional) Langkah 5: Bersihkan resource
Resource yang dibuat dalam topik ini mencakup Deployment, Service, AlbConfig, IngressClass, dan ALB Ingress. Jalankan perintah berikut untuk membersihkan resource tersebut.
Ganti nama contoh dalam perintah berikut 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 lebih lanjut tentang parameter pembuatan workload, lihat Create a workload. Untuk rekomendasi konfigurasi, lihat Recommended workload configurations.
-
Saat menggunakan listener HTTPS, Anda harus mengonfigurasi sertifikat SSL/TLS. Untuk informasi lebih lanjut 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 konfigurasi instans ALB. Untuk informasi lebih lanjut, lihat ALB Ingress configuration dictionary.