Dalam skenario yang memerlukan kontrol akses, Anda mungkin perlu menambahkan alamat IP pod ke daftar putih ApsaraDB RDS atau menghapusnya dari daftar putih untuk menyesuaikan kontrol akses. Untuk melakukannya, Anda dapat menggunakan komponen ack-kubernetes-webhook-injector untuk menambahkan anotasi ke pod. Topik ini menjelaskan cara menginstal ack-kubernetes-webhook-injector dan menggunakannya untuk mengonfigurasi whitelist pod secara dinamis untuk layanan Alibaba Cloud. Topik ini juga mencakup konfigurasi ack-kubernetes-webhook-injector untuk mengakses titik akhir internal layanan Alibaba Cloud.
Prasyarat
Kluster menggunakan plug-in jaringan Terway.
Pengantar
Dalam skenario komputasi awan, Anda harus mengonfigurasi kebijakan kontrol akses untuk mengizinkan akses eksternal ke beberapa sumber daya awan. Sebagai contoh, Anda harus mengonfigurasi daftar kontrol akses (ACL) Server Load Balancer (SLB) untuk instance Elastic Compute Service (ECS), atau mengonfigurasi daftar putih ApsaraDB RDS untuk mengizinkan akses dari alamat IP klien tertentu. Saat membuat kluster Container Service for Kubernetes (ACK), Anda dapat menambahkan blok CIDR node kluster ke daftar putih ApsaraDB RDS. Namun, terdapat batasan berikut:
Daftar putih mengontrol akses dengan cara kasar karena alamat IP semua node dan pod ditambahkan ke daftar putih.
Daftar putih tidak diperbarui secara otomatis setelah kluster dihapus. Anda perlu memperbarui daftar putih secara manual.
Untuk menyelesaikan masalah tersebut, ACK menyediakan komponen ack-kubernetes-webhook-injector untuk memungkinkan Anda menambahkan alamat IP pod ke daftar putih ApsaraDB RDS secara dinamis. Saat sebuah pod dihapus, alamat IP pod tersebut akan otomatis dihapus dari daftar putih. Ini memungkinkan kontrol akses secara halus.
Komponen ack-kubernetes-webhook-injector mendukung fitur-fitur berikut:
Saat sebuah pod dibuat atau dihapus, alamat IP pod secara otomatis ditambahkan ke atau dihapus dari ACL SLB yang sesuai.
Saat sebuah pod dibuat atau dihapus, alamat IP pod secara otomatis ditambahkan ke atau dihapus dari daftar putih ApsaraDB for Redis yang sesuai.
Saat sebuah pod dibuat atau dihapus, alamat IP pod secara otomatis ditambahkan ke atau dihapus dari daftar putih ApsaraDB RDS yang sesuai.
Instal ack-kubernetes-webhook-injector
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, pilih .
Cari dan klik ack-kubernetes-webhook-injector. Di sudut kanan atas halaman, klik Deploy.
Di panel yang muncul, pilih kluster dan namespace untuk komponen, masukkan nama rilis, dan klik Next.
Di halaman wizard Parameters, pilih versi bagan, atur
akdanskdi bagianopenapike pasangan AccessKey Anda, dan klik OK.Untuk informasi lebih lanjut tentang cara memperoleh pasangan AccessKey, lihat Memperoleh pasangan AccessKey.

Contoh penggunaan ack-kubernetes-webhook-injector untuk menambahkan alamat IP pod ke daftar putih ApsaraDB RDS secara dinamis
Di bagian Pod Spec ReplicationController, Anda dapat menambahkan anotasi untuk menentukan nama daftar putih ApsaraDB RDS tempat alamat IP pod akan ditambahkan dan ID instance ApsaraDB RDS. ack-kubernetes-webhook-injector akan secara otomatis menambahkan alamat IP pod ke daftar putih saat pod dibuat dan menghapusnya dari daftar putih saat pod dihapus.
Anotasi:
ID instance ApsaraDB RDS:
ack.aliyun.com/rds_idNama daftar putih ApsaraDB RDS:
ack.aliyun.com/white_list_name
Dalam topik ini, daftar putih ApsaraDB RDS digunakan sebagai contoh untuk menunjukkan cara menggunakan ack-kubernetes-webhook-injector untuk mengonfigurasi whitelist pod secara dinamis.
Gunakan template YAML berikut untuk membuat Deployment dan tambahkan anotasi untuk menentukan nama daftar putih ApsaraDB RDS dan ID instance ApsaraDB RDS.
apiVersion: apps/v1 kind: Deployment metadata: labels: app: inject-test name: inject-test spec: replicas: 1 selector: matchLabels: app: inject-test template: metadata: annotations: ack.aliyun.com/rds_id: <rm-wz9nanjcud75b****> ack.aliyun.com/white_list_name: <rds_group> labels: app: inject-test spec: containers: - command: - sleep - "3600" image: alpine:latest name: inject-testJalankan perintah berikut untuk menanyakan alamat IP pod:
kubectl --kubeconfig .kube/config_sts_test -n inject-test get pod -o wideOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE IP NODE inject-test-68cc8f9bbf-gj86n 1/1 Running 0 22s 172.25.0.28 cn-hangzhou.xxxOutput menunjukkan bahwa alamat IP pod adalah 172.25.0.28.
Masuk ke Konsol ApsaraDB RDS dan periksa daftar putih instance ApsaraDB RDS yang ditentukan. Untuk informasi lebih lanjut tentang cara melihat daftar putih ApsaraDB RDS, lihat Konfigurasikan daftar putih alamat IP yang ditingkatkan.
Atur jumlah pod dalam Deployment yang dibuat di Langkah 1 menjadi 0 dan periksa daftar putih ApsaraDB RDS lagi.
Anda dapat menemukan bahwa alamat IP pod dihapus dari daftar putih ApsaraDB RDS di konsol.
Akses titik akhir internal layanan Alibaba Cloud
Secara default, ack-kubernetes-webhook-injector menggunakan titik akhir publik layanan Alibaba Cloud untuk mengakses layanan. Jika kluster Anda memiliki akses publik dinonaktifkan, Anda dapat mengonfigurasi ack-kubernetes-webhook-injector untuk menggunakan titik akhir internal layanan.
Beberapa layanan Alibaba Cloud tidak menyediakan titik akhir internal di wilayah tertentu. Anda dapat pergi ke OpenAPI Explorer untuk memeriksa apakah layanan menyediakan titik akhir internal di wilayah yang ditentukan.
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih .
Di bilah navigasi atas, pilih kube-system dari daftar drop-down Namespace, temukan Deployment kubernetes-webhook-injector, dan pilih More > View in YAML di Actions Deployment.

Tambahkan
- '--intranet-access'di bawahspec.template.spec.containers.commanddan klik Update.
Kebijakan kontrol akses lainnya
ack-kubernetes-webhook-injector juga mendukung kebijakan kontrol akses berikut:
SLB ACL:
ack.aliyun.com/access_control_policy_id.Daftar putih ApsaraDB for Redis:
ID instance ApsaraDB for Redis: ack.aliyun.com/redis_id.
Nama daftar putih ApsaraDB for Redis:
ack.aliyun.com/white_list_name.
Hapus instalasi ack-kubernetes-webhook-injector
Jika Anda tidak lagi memerlukan penggunaan ack-kubernetes-webhook-injector, Anda dapat menghapus instalasi ack-kubernetes-webhook-injector dengan menggunakan fitur rilis yang disediakan oleh ACK. Untuk informasi lebih lanjut, lihat Kelola rilis menggunakan Helm. Untuk menghapus konfigurasi terkait, jalankan perintah berikut:
kubectl -n kube-system delete secret kubernetes-webhook-injector-certs
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io kubernetes-webhook-injector