

 **Bantu tingkatkan halaman ini** 

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

Untuk berkontribusi pada panduan pengguna ini, pilih **Edit halaman ini pada GitHub** tautan yang terletak di panel kanan setiap halaman.

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

# Batasi alamat IP eksternal yang dapat ditetapkan ke layanan
<a name="restrict-service-external-ip"></a>

Layanan Kubernetes dapat dicapai dari dalam klaster melalui:
+ Alamat IP klaster 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 klaster. Alamat IP eksternal yang ditentukan dengan `externalIPs` berbeda dari alamat IP eksternal yang ditetapkan ke layanan jenis `LoadBalancer` oleh penyedia cloud.

Untuk mempelajari selengkapnya tentang layanan Kubernetes, lihat [Layanan](https://kubernetes.io/docs/concepts/services-networking/service/) dalam dokumentasi Kubernetes. 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](https://cert-manager.io/docs/).

   ```
   kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
   ```

1. Verifikasi bahwa `cert-manager` Pod 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
   ```

1. Tinjau layanan Anda yang ada untuk memastikan bahwa tidak satupun dari mereka memiliki alamat IP eksternal yang ditetapkan untuk mereka yang tidak terkandung dalam blok CIDR 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 blok CIDR di langkah 5.

1. Unduh manifes webhook IP eksternal. Anda juga dapat melihat [kode sumber untuk webhook](https://github.com/kubernetes-sigs/externalip-webhook) di GitHub.

   ```
   curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/docs/externalip-webhook.yaml
   ```

1. Tentukan blok CIDR. 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 blok CIDR Anda sendiri. Anda dapat menentukan blok sebanyak yang Anda inginkan. Jika Anda menentukan beberapa blok, tambahkan koma di antara blok.

1. Jika cluster Anda tidak berada di `us-west-2` AWS Region, maka ganti `us-west-2``602401143452`,, dan `amazonaws.com` dalam file dengan perintah berikut. Sebelum menjalankan perintah, ganti *region-code* dan *111122223333* dengan nilai untuk AWS Wilayah Anda dari daftar di [Lihat pendaftar gambar penampung Amazon untuk add-on Amazon EKS](add-ons-images.md).

   ```
   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
   ```

1. 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 blok CIDR akan gagal.