Di lingkungan cloud dengan persyaratan izin ketat, Anda mungkin perlu menambahkan atau menghapus alamat IP pod ke/dari daftar putih ApsaraDB RDS tertentu secara dinamis untuk mencapai kontrol akses detail halus. Anda dapat menggunakan komponen ack-kubernetes-webhook-injector untuk menambahkan anotasi ke pod, yang secara dinamis menambahkan atau menghapus alamat IP-nya dari daftar putih ApsaraDB RDS tertentu. Topik ini menjelaskan cara menginstal dan menggunakan ack-kubernetes-webhook-injector untuk mengonfigurasi daftar putih layanan Alibaba Cloud secara dinamis serta cara mengonfigurasi akses ke titik akhir internal-nya.
Prasyarat
-
Kluster menggunakan plug-in jaringan Terway. Untuk informasi selengkapnya, lihat Gunakan plug-in jaringan Terway.
Ikhtisar
Dalam komputasi awan, sumber daya tertentu memerlukan kebijakan keamanan sebelum dapat diakses dari sumber eksternal. Misalnya, sebuah instans mungkin memerlukan kebijakan kontrol akses Server Load Balancer (SLB), atau database ApsaraDB RDS mungkin memerlukan daftar putih alamat IP sumber klien. Meskipun Anda dapat menambahkan rentang alamat IP node kluster ke daftar putih ApsaraDB RDS tertentu saat membuat kluster ACK, pendekatan ini memiliki kelemahan berikut:
-
Aturan daftar putih terlalu kasar. Blok CIDR IP yang dimasukkan ke daftar putih mencakup alamat IP semua node dan pod dalam kluster.
-
Aturan daftar putih harus dibersihkan secara manual setelah kluster dihapus.
Untuk mengatasi masalah ini, ACK menyediakan ack-kubernetes-webhook-injector. Komponen ini secara dinamis menambahkan alamat IP pod tertentu ke daftar putih ApsaraDB RDS saat pod dibuat dan menghapus alamat IP tersebut saat pod dihapus, sehingga memungkinkan kontrol detail halus atas kebijakan keamanan.
Saat ini, ack-kubernetes-webhook-injector mendukung fitur-fitur berikut:
-
Secara otomatis menambahkan dan menghapus alamat IP pod ke/dari grup kebijakan kontrol akses SLB tertentu saat pod dibuat dan dihapus.
-
Secara otomatis menambahkan dan menghapus alamat IP pod ke/dari daftar putih ApsaraDB for Redis tertentu saat pod dibuat dan dihapus.
-
Secara otomatis menambahkan dan menghapus alamat IP pod ke/dari daftar putih ApsaraDB RDS tertentu saat pod dibuat dan dihapus.
Instal ack-kubernetes-webhook-injector
Masuk ke Konsol ACK. Di panel navigasi kiri, klik .
-
Temukan dan klik ack-kubernetes-webhook-injector, lalu klik Deploy di pojok kanan atas.
-
Di panel yang muncul, pilih kluster target dan Namespace, tetapkan Release Name, lalu klik Next.
-
Pilih Chart Version. Di halaman Parameters, isi bidang
akdanskdi bagianopenapidengan Informasi AccessKey Anda, lalu klik OK di bagian bawah halaman.Untuk informasi selengkapnya tentang cara memperoleh Pasangan Kunci Akses, lihat Peroleh Pasangan Kunci Akses.
openapi: # Hanya untuk pengujian. JANGAN gunakan otentikasi aksk di lingkungan produksi. use_aksk: true ak: sk:
Contoh: Tambahkan alamat IP pod ke daftar putih RDS secara dinamis
Dalam spesifikasi pod workload Anda, Anda dapat menggunakan anotasi untuk menentukan ID instans ApsaraDB RDS dan nama grup daftar putih yang harus diikuti oleh pod. Saat pod dibuat, ack-kubernetes-webhook-injector menambahkan alamat IP pod ke daftar putih. Saat pod dihapus, komponen tersebut menghapus alamat IP tersebut.
Anotasi pod untuk daftar putih ApsaraDB RDS harus mencakup hal-hal berikut:
-
ID instans ApsaraDB RDS:
ack.aliyun.com/rds_id -
Nama grup daftar putih ApsaraDB RDS:
ack.aliyun.com/white_list_name
Bagian ini menunjukkan cara menggunakan ack-kubernetes-webhook-injector untuk menambahkan pod ke daftar putih ApsaraDB RDS secara dinamis.
-
Buat Deployment menggunakan templat YAML berikut. Dalam definisi pod, tambahkan anotasi untuk ID instans ApsaraDB RDS dan nama grup daftar putih.
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-test -
Jalankan perintah berikut untuk melihat alamat IP pod.
kubectl --kubeconfig .kube/config_sts_test -n inject-test get pod -o wideContoh output:
NAME READY STATUS RESTARTS AGE IP NODE inject-test-68cc8f9bbf-gj86n 1/1 Running 0 22s 172.25.0.28 cn-hangzhou.xxxDalam output tersebut, alamat IP pod adalah 172.25.0.28.
-
Masuk ke Konsol ApsaraDB RDS dan lihat daftar putih instans ApsaraDB RDS yang ditentukan dalam anotasi. Untuk informasi selengkapnya tentang cara melihat daftar putih ApsaraDB RDS, lihat Mode daftar putih alamat IP yang ditingkatkan.
-
Tetapkan jumlah replika untuk Deployment yang dibuat di Langkah 1 menjadi 0 dan periksa kembali daftar putih ApsaraDB RDS.
Alamat IP tersebut secara otomatis dihapus dari daftar putih.
Konfigurasikan akses ke titik akhir internal
Secara default, ack-kubernetes-webhook-injector menggunakan titik akhir publik layanan Alibaba Cloud. Jika kluster Anda tidak mengaktifkan akses jaringan publik, Anda dapat memodifikasi konfigurasi untuk menggunakan titik akhir internal.
Beberapa layanan Alibaba Cloud tidak menyediakan titik akhir internal di semua wilayah. Sebelum melanjutkan, periksa OpenAPI Explorer untuk memastikan titik akhir internal tersedia untuk layanan target Anda di wilayah tersebut.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Dari daftar drop-down Namespace di bagian atas halaman, pilih kube-system. Temukan Deployment kubernetes-webhook-injector. Di kolom Actions, pilih .
-
Di bawah
spec.template.spec.containers.command, tambahkan baris- '--intranet-access'lalu klik Update.
Konfigurasi kebijakan keamanan lainnya
ack-kubernetes-webhook-injector juga mendukung konfigurasi kebijakan keamanan berikut:
-
Kontrol akses SLB:
ack.aliyun.com/access_control_policy_id. -
Konfigurasi daftar putih ApsaraDB for Redis:
-
ID Redis:
ack.aliyun.com/redis_id. -
Grup daftar putih Redis:
ack.aliyun.com/redis_white_list_name.
-
Uninstal ack-kubernetes-webhook-injector
Jika Anda tidak lagi memerlukan ack-kubernetes-webhook-injector, Anda dapat menghapusnya menggunakan fitur manajemen rilis di ACK. Untuk informasi selengkapnya, lihat Kelola rilis Helm. Kemudian, jalankan perintah berikut untuk menghapus sisa sumber daya konfigurasi:
kubectl -n kube-system delete secret kubernetes-webhook-injector-certs
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io kubernetes-webhook-injector