Saat node kluster ACK tidak memiliki alamat IP publik, beban kerja tertentu tetap perlu mengakses API atau layanan eksternal. Mengarahkan seluruh lalu lintas keluar melalui satu titik keluar terkelola memungkinkan penerapan kontrol akses, pembatasan kecepatan, dan kebijakan lalu lintas dari satu lokasi—tanpa memberikan akses Internet ke setiap Pod.
Panduan ini menjelaskan cara menyiapkan gateway cloud-native Microservices Engine (MSE) sebagai gerbang keluar untuk kluster Container Service for Kubernetes (ACK), mencakup instalasi controller, pembuatan gateway, pengarahan lalu lintas ke layanan eksternal, serta verifikasi konfigurasi.
Kapan menggunakan gerbang keluar
Kluster privat yang memerlukan akses Internet selektif. Node kluster ACK tidak memiliki IP publik, tetapi beban kerja tertentu harus mengakses API atau layanan eksternal. Arahkan lalu lintas keluar melalui gateway cloud-native MSE dan aktifkan Source Network Address Translation (SNAT) hanya pada vSwitch gateway tersebut. Tidak diperlukan akses Internet di seluruh kluster.
Penerapan kebijakan keluar terpusat. Seluruh lalu lintas keluar harus melewati satu titik kendali untuk pembatasan kecepatan atau daftar putih IP. Gateway cloud-native MSE menyediakan tata kelola HTTP Layer-7 tanpa perubahan pada Pod aplikasi.
Manfaat
| Manfaat | Detail |
|---|---|
| Dikelola dan independen | Dideploy dalam mode standalone, terpisah dari kluster ACK. Masalah pada kluster tidak memengaruhi gateway. |
| Tata kelola lalu lintas Layer-7 | Daftar hitam dan daftar putih alamat IP, pembatasan kecepatan, load balancing, offloading Transport Layer Security (TLS), pencerminan lalu lintas, dan kontrol header. |
| Eksposur minimal | Hanya gateway yang memerlukan akses Internet (melalui SNAT pada vSwitch-nya), bukan setiap Pod dalam kluster. |
Arsitektur

Gateway cloud-native MSE berada di antara kluster ACK dan layanan eksternal. Pod mengirim permintaan keluar ke titik akhir Classic Load Balancer (CLB) internal gateway. Gateway meneruskan permintaan ke tujuan eksternal melalui gateway NAT dengan SNAT yang diaktifkan pada vSwitch-nya.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster ACK atau kluster ACK Serverless (jika Anda tidak memilih Configure SNAT for VPC saat pembuatan kluster, kluster tidak dapat mengakses Internet secara default)
Izin untuk membuat resource Kubernetes (Services, Ingress) dan resource Alibaba Cloud (gateway MSE, gateway NAT)
Instal MSE Ingress Controller
Instal MSE Ingress Controller di kluster ACK atau ACK Serverless Anda. Anda dapat menginstalnya di kluster yang sudah ada atau saat pembuatan kluster.
Untuk petunjuknya, lihat bagian "Install the MSE Ingress Controller component" dalam Manage the MSE Ingress Controller component.
Buat gateway dengan MseIngressConfig
MseIngressConfig adalah CustomResourceDefinition (CRD) yang disediakan oleh MSE Ingress Controller. Gunakan CRD ini untuk membuat gateway cloud-native MSE atau mengaitkannya ke gateway yang sudah ada.
Untuk kasus penggunaan gerbang keluar ini, buat hanya instans CLB akses internal:
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: egress-gateway
spec:
name: egress-gateway
common:
instance:
spec: 2c4g
replicas: 3
network:
vSwitches:
- "vsw-xxxx" # ID vSwitch untuk gateway. Ganti dengan ID vSwitch aktual Anda.
privateSLBSpec: slb.s2.smallGanti placeholder berikut dengan nilai aktual Anda:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
vsw-xxxx | ID vSwitch yang akan disambungkan ke gateway cloud-native MSE | vsw-bp1a4daz0e2a8xxxx |
Untuk daftar lengkap opsi MseIngressConfig, lihat bagian "Create a cloud-native gateway" dalam Configure an MseIngressConfig.
vSwitch gateway memerlukan SNAT agar dapat mengakses Internet. Konfigurasikan SNAT pada langkah berikutnya sebelum menguji konektivitas eksternal.
Konfigurasikan SNAT untuk vSwitch gateway
Jika kluster Anda dibuat tanpa memilih Configure SNAT for VPC, gateway tidak dapat mengakses Internet hingga Anda menambahkan entri SNAT.
Buat gateway NAT jika Anda belum memilikinya. Untuk petunjuknya, lihat Use the SNAT feature of an Internet NAT gateway to access the Internet.
Buat entri SNAT (Step 3: Create an SNAT entry). Pilih Specify vSwitch dan tambahkan ID vSwitch dari resource MseIngressConfig Anda (nilai
vsw-xxxxyang sama seperti pada langkah sebelumnya).
Buat layanan ExternalName untuk target
Layanan Kubernetes bertipe ExternalName memetakan nama DNS dalam kluster ke hostname eksternal. Pod memanggil nama layanan dalam kluster, dan Kubernetes menguraikannya ke titik akhir eksternal. Jika layanan eksternal tersebut kemudian dipindahkan ke dalam kluster, cukup perbarui definisi Layanan saja—tanpa perlu mengubah kode aplikasi.
Contoh berikut memetakan aliyun-svc-external ke www.aliyun.com:
apiVersion: v1
kind: Service
metadata:
name: aliyun-svc-external
namespace: default
spec:
externalName: www.aliyun.com
ports:
- name: port1
port: 80
protocol: TCP
targetPort: 80
- name: port2
port: 443
protocol: TCP
targetPort: 443
type: ExternalNameVerifikasi: Jalankan perintah berikut dan pastikan tipenya adalah ExternalName dengan hostname yang benar:
kubectl get svc aliyun-svc-externalBuat aturan routing Ingress
Buat resource Ingress untuk mengarahkan lalu lintas melalui gateway cloud-native MSE ke layanan ExternalName.
Simpan konten berikut sebagai mse-ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mse-ingress
namespace: default
spec:
ingressClassName: mse
rules:
- host: www.aliyun.com # Nama domain layanan eksternal.
http:
paths:
- backend:
service:
name: aliyun-svc-external # Layanan ExternalName dari langkah sebelumnya.
port:
number: 80
path: /product/aliware/mse # Path yang akan diarahkan.
pathType: PrefixTerapkan konfigurasi:
kubectl apply -f mse-ingress.yamlVerifikasi: Jalankan perintah berikut dan periksa status.loadBalancer.ingress untuk mendapatkan alamat IP CLB. Catat IP ini—Anda memerlukannya untuk pengujian.
kubectl get ingress mse-ingress -o yamlArahkan ke backend HTTPS
Jika layanan backend menggunakan HTTPS, tambahkan anotasi protokol backend dan ubah port menjadi 443:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS # Arahkan ke backend melalui HTTPS.
name: mse-ingress
namespace: default
spec:
ingressClassName: mse
rules:
- host: www.aliyun.com
http:
paths:
- backend:
service:
name: aliyun-svc-external
port:
number: 443
path: /product/aliware/mse
pathType: PrefixUji akses keluar dari Pod
Dari Pod di dalam kluster, gunakan curl dengan flag --resolve untuk mengarahkan permintaan ke alamat IP CLB gateway:
curl http://www.aliyun.com/product/aliware/mse --resolve www.aliyun.com:80:<CLB-IP>Ganti <CLB-IP> dengan alamat IP CLB dari status.loadBalancer.ingress dalam output resource Ingress.
Tanggapan sukses mengonfirmasi bahwa lalu lintas keluar Pod diarahkan melalui gateway cloud-native MSE ke layanan eksternal.
Pertimbangan tambahan
Terapkan kebijakan tata kelola Layer-7. Tambahkan pembatasan kecepatan, daftar putih IP, atau kontrol header ke rute gerbang keluar Anda. Lihat Advanced usage of MSE Ingress untuk detail konfigurasi.
Arahkan tujuan eksternal tambahan. Tambahkan lebih banyak layanan ExternalName dan aturan Ingress untuk mengarahkan titik akhir eksternal lainnya melalui gateway.
Pastikan semua lalu lintas keluar melewati gateway. Tambahkan kebijakan jaringan Kubernetes untuk memblokir lalu lintas keluar langsung dari Pod, sehingga seluruh lalu lintas keluar harus melewati gateway. Tanpa kebijakan jaringan, Pod dapat melewati gateway dan mengakses layanan eksternal secara langsung jika memiliki konektivitas jaringan.