全部产品
Search
文档中心

Container Service for Kubernetes:Konfigurasikan whitelist pod secara dinamis untuk layanan Alibaba Cloud

更新时间:Jul 06, 2025

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

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

  1. Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, pilih Marketplace > Marketplace.

  2. Cari dan klik ack-kubernetes-webhook-injector. Di sudut kanan atas halaman, klik Deploy.

  3. Di panel yang muncul, pilih kluster dan namespace untuk komponen, masukkan nama rilis, dan klik Next.

  4. Di halaman wizard Parameters, pilih versi bagan, atur ak dan sk di bagian openapi ke pasangan AccessKey Anda, dan klik OK.

    Untuk informasi lebih lanjut tentang cara memperoleh pasangan AccessKey, lihat Memperoleh pasangan AccessKey.AK

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_id

  • Nama 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.

  1. 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-test
  2. Jalankan perintah berikut untuk menanyakan alamat IP pod:

    kubectl --kubeconfig .kube/config_sts_test -n inject-test get pod -o wide

    Output yang diharapkan:

    NAME                           READY           STATUS        RESTARTS    AGE    IP                NODE
    inject-test-68cc8f9bbf-gj86n    1/1            Running         0        22s   172.25.0.28    cn-hangzhou.xxx

    Output menunjukkan bahwa alamat IP pod adalah 172.25.0.28.

  3. 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.

  4. 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.

Catatan

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.

  1. Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih Workloads > Deployments.

  3. 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.image.png

  4. Tambahkan - '--intranet-access' di bawah spec.template.spec.containers.command dan klik Update.image.png

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