Membatasi alamat IP eksternal yang dapat ditugaskan ke layanan - Amazon EKS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Membatasi alamat IP eksternal yang dapat ditugaskan ke layanan

Kubernetes Layanan dapat dicapai dari dalam cluster melalui:

  • Alamat IP cluster yang ditetapkan secara otomatis oleh Kubernetes

  • Alamat IP apa pun yang Anda tentukan untuk properti externalIPs dalam spesifikasi layanan. Alamat IP eksternal tidak dikelola oleh Kubernetes dan merupakan tanggung jawab administrator cluster. Alamat IP eksternal yang ditentukan dengan externalIPs berbeda dari alamat IP eksternal yang ditetapkan ke layanan jenis LoadBalancer oleh penyedia cloud.

Untuk mempelajari lebih lanjut tentang Kubernetes Layanan, lihat Layanan di Kubernetes dokumentasi. Anda dapat membatasi alamat IP yang dapat ditentukan untuk externalIPs dalam spesifikasi layanan.

  1. Terapkan cert-manager untuk mengelola sertifikat webhook. Untuk informasi selengkapnya, lihat dokumentasi cert manager.

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
  2. Verifikasi bahwa cert-manager Pods sedang berjalan.

    kubectl get pods -n cert-manager

    Contoh output adalah sebagai berikut.

    NAME READY STATUS RESTARTS AGE cert-manager-58c8844bb8-nlx7q 1/1 Running 0 15s cert-manager-cainjector-745768f6ff-696h5 1/1 Running 0 15s cert-manager-webhook-67cc76975b-4v4nk 1/1 Running 0 14s
  3. Tinjau layanan Anda yang ada untuk memastikan bahwa tidak satupun dari mereka memiliki alamat IP eksternal yang ditetapkan untuk mereka yang tidak terkandung dalam CIDR blok yang ingin Anda batasi alamatnya.

    kubectl get services -A

    Contoh output adalah sebagai berikut.

    NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cert-manager cert-manager ClusterIP 10.100.102.137 <none> 9402/TCP 20m cert-manager cert-manager-webhook ClusterIP 10.100.6.136 <none> 443/TCP 20m default kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 2d1h externalip-validation-system externalip-validation-webhook-service ClusterIP 10.100.234.179 <none> 443/TCP 16s kube-system kube-dns ClusterIP 10.100.0.10 <none> 53/UDP,53/TCP 2d1h my-namespace my-service ClusterIP 10.100.128.10 192.168.1.1 80/TCP 149m

    Jika salah satu nilai adalah alamat IP yang tidak berada dalam blok yang ingin Anda batasi aksesnya, Anda harus mengubah alamat untuk berada di dalam blok, dan menerapkan kembali layanan. Misalnya, my-service layanan di output sebelumnya memiliki alamat IP eksternal yang ditetapkan untuk itu yang tidak berada dalam contoh CIDR blok di langkah 5.

  4. Unduh manifes webhook IP eksternal. Anda juga dapat melihat kode sumber untuk webhook di GitHub.

    curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml
  5. Tentukan CIDR blok. Buka file yang diunduh dalam editor Anda dan hapus \# pada awal baris berikut.

    #args: #- --allowed-external-ip-cidrs=10.0.0.0/8

    Ganti 10.0.0.0/8 dengan CIDR blok Anda sendiri. Anda dapat menentukan blok sebanyak yang Anda inginkan. Jika Anda menentukan beberapa blok, tambahkan koma di antara blok.

  6. Jika cluster Anda tidak berada di us-west-2 AWS Region, maka ganti us-west-2602401143452,, dan amazonaws.com dalam file dengan perintah berikut. Sebelum menjalankan perintah, ganti region-code and 111122223333 dengan nilai untuk AWS Wilayah Anda dari daftar di Lihat pendaftar gambar kontainer Amazon untuk add-on Amazon EKS.

    sed -i.bak -e 's|602401143452|111122223333|' externalip-webhook.yaml sed -i.bak -e 's|us-west-2|region-code|' externalip-webhook.yaml sed -i.bak -e 's|amazonaws.com||' externalip-webhook.yaml
  7. Menerapkan manifes ke klaster Anda.

    kubectl apply -f externalip-webhook.yaml

    Upaya untuk menyebarkan layanan ke klaster Anda dengan alamat IP yang ditentukan untuk externalIPs itu tidak terkandung dalam blok yang Anda tentukan dalam langkah Tentukan CIDR blok akan gagal.