Jika Anda ingin memetakan nama domain privat di satu atau lebih virtual private cloud (VPC) ke alamat IP dan memblokir akses ke nama domain privat ini dari jaringan lain, gunakan fitur penemuan layanan berdasarkan Alibaba Cloud DNS PrivateZone. ACK Serverless menyediakan fitur penemuan layanan untuk menyelesaikan dan mengelola nama domain privat dalam VPC. Fitur ini mendukung Layanan intranet, Layanan tanpa kepala, dan Layanan ClusterIP.
Prasyarat
Alibaba Cloud DNS PrivateZone telah diaktifkan di Konsol DNS Alibaba Cloud.
Pilih wilayah tempat PrivateZone tersedia. PrivateZone tidak didukung di wilayah Uni Emirat Arab (Dubai).
Sebuah kluster ACK Serverless telah dibuat dan komponen PrivateZone telah diaktifkan.
Metode 1: Untuk mengaktifkan komponen pada kluster ACK Serverless baru, pilih PrivateZone untuk parameter Penemuan Layanan saat membuat kluster.

Metode 2: Untuk mengaktifkan komponen pada kluster ACK Serverless yang sudah ada, atur parameter
enablePrivateZonedi ConfigMapeci-profilemenjaditrue.
Penagihan
Untuk informasi lebih lanjut tentang aturan penagihan Alibaba Cloud DNS PrivateZone, lihat Harga.
Prosedur
Deploy Deployment dan buat Layanan.
Blok kode berikut adalah contoh template. Salin konten YAML berikut ke file YAML dan jalankan perintah
kubectl create -f nginx-service.yamluntuk membuat Layanan.apiVersion: v1 kind: Service metadata: name: nginx-headless-service spec: ports: - port: 80 protocol: TCP selector: app: nginx clusterIP: None --- apiVersion: v1 kind: Service metadata: name: nginx-clusterip-service spec: ports: - port: 80 protocol: TCP selector: app: nginx type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: nginx-intranet-service annotations: service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet spec: ports: - port: 80 protocol: TCP selector: app: nginx type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80Jalankan perintah berikut untuk memeriksa status Deployment:
kubectl get svc,pod,deploymentMasuk ke Konsol DNS Alibaba Cloud.
Di panel navigasi sebelah kiri, klik Private DNS (PrivateZone). Di bagian kanan atas halaman, klik Configuration Mode dan pilih tab Built-in Authoritative Module. Lalu, klik User Defined Zones.
Di tab User Defined Zones, klik Resource Records Settings di kolom Actions untuk nama domain yang ingin Anda kelola.
CatatanRekaman PrivateZone menggunakan format
$svc.$nsuntuk menyelesaikan nama domain ke alamat IP. Perhatikan aturan berikut saat membuat rekaman PrivateZone:Layanan LoadBalancer hanya sesuai dengan satu rekaman PrivateZone. Rekaman tersebut memetakan Layanan ke alamat IP instance Server Load Balancer (SLB).
Layanan ClusterIP hanya sesuai dengan satu rekaman PrivateZone. Rekaman tersebut memetakan Layanan ke alamat IP kluster.
Layanan tanpa kepala sesuai dengan beberapa rekaman PrivateZone. Rekaman-rekaman tersebut memetakan Layanan ke alamat IP pod backend.
Anda dapat mengakses Layanan dalam VPC melalui nama domain privat Layanan tersebut.
Gunakan
$svc.$ns.svc.cluster.local.$clusterIduntuk mengakses Layanan yang ditemukan di kluster saat ini. Anda juga dapat menggunakan nama domain panjang untuk mengakses Layanan di kluster lain setelah menggunakan Alibaba Cloud DNS PrivateZone untuk menemukan Layanan-Layanan tersebut.Gunakan
$svcuntuk mengakses Layanan di namespace saat ini dan$svc.$nsuntuk mengakses Layanan di namespace lain.
Untuk informasi lebih lanjut, lihat serverless-k8s-examples.
Referensi
Selain Alibaba Cloud DNS PrivateZone, Anda juga dapat menggunakan CoreDNS untuk menyediakan layanan resolusi DNS di kluster ACK Serverless. Untuk informasi lebih lanjut, lihat Cara kerja resolusi DNS di kluster ACK Serverless.