

 **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 lalu lintas jaringan Pod dengan kebijakan jaringan Kubernetes
<a name="cni-network-policy-configure"></a>

Anda dapat menggunakan kebijakan jaringan Kubernetes untuk membatasi lalu lintas jaringan ke dan dari Pod Anda. Untuk informasi selengkapnya, lihat [Kebijakan Jaringan](https://kubernetes.io/docs/concepts/services-networking/network-policies/) dalam dokumentasi Kubernetes.

Anda harus mengkonfigurasi berikut ini untuk menggunakan fitur ini:

1. Siapkan penegakan kebijakan saat startup Pod. Anda melakukan ini dalam `aws-node` wadah VPC CNI. `DaemonSet`

1. Aktifkan parameter kebijakan jaringan untuk add-on.

1. Konfigurasikan klaster Anda untuk menggunakan kebijakan jaringan Kubernetes

Sebelum Anda mulai, tinjau pertimbangannya. Untuk informasi selengkapnya, lihat [Pertimbangan-pertimbangan](cni-network-policy.md#cni-network-policy-considerations).

## Prasyarat
<a name="cni-network-policy-prereqs"></a>

Berikut ini adalah prasyarat untuk fitur ini:

### Versi cluster minimum
<a name="cni-network-policy-minimum"></a>

Sebuah klaster Amazon EKS yang sudah ada. Untuk menyebarkan satu, lihat[Memulai dengan Amazon EKS](getting-started.md). Cluster harus menjalankan salah satu versi Kubernetes dan versi platform yang tercantum dalam tabel berikut. Perhatikan bahwa versi Kubernetes dan platform yang lebih lambat dari yang terdaftar juga didukung. Anda dapat memeriksa versi Kubernetes Anda saat ini dengan mengganti *my-cluster* perintah berikut dengan nama cluster Anda dan kemudian menjalankan perintah yang dimodifikasi:

```
aws eks describe-cluster --name my-cluster --query cluster.version --output text
```


| Versi Kubernetes | Versi Platform | 
| --- | --- | 
|   `1.27.4`   |   `eks.5`   | 
|   `1.26.7`   |   `eks.6`   | 

### Versi VPC CNI minimum
<a name="cni-network-policy-minimum-vpc"></a>

Untuk membuat kebijakan jaringan Kubernetes standar dan kebijakan jaringan admin, Anda perlu menjalankan versi `1.21` plugin VPC CNI. Anda dapat melihat versi mana yang saat ini Anda miliki dengan perintah berikut.

```
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
```

Jika versi Anda lebih awal dari`1.21`, lihat [Perbarui Amazon VPC CNI (add-on Amazon EKS)](vpc-add-on-update.md) untuk meningkatkan ke versi `1.21` atau yang lebih baru.

### Versi kernel Linux minimum
<a name="cni-network-policy-minimum-linux"></a>

Node Anda harus memiliki versi kernel Linux `5.10` atau yang lebih baru. Anda dapat memeriksa versi kernel Anda dengan`uname -r`. Jika Anda menggunakan versi terbaru Amazon EKS yang dioptimalkan Amazon Linux, Amazon EKS mengoptimalkan Amazon Linux yang dipercepat AMIs, dan Bottlerocket AMIs, mereka sudah memiliki versi kernel yang diperlukan.

Amazon EKS mengoptimalkan versi AMI Amazon Linux yang dipercepat `v20231116` atau yang lebih baru memiliki versi kernel`5.10`.

## Langkah 1: Siapkan penegakan kebijakan saat startup Pod
<a name="cni-network-policy-configure-policy"></a>

Plugin Amazon VPC CNI untuk Kubernetes mengonfigurasi kebijakan jaringan untuk pod secara paralel dengan penyediaan pod. Sampai semua kebijakan dikonfigurasi untuk pod baru, container di pod baru akan dimulai dengan *kebijakan allow default*. Ini disebut *mode standar*. Kebijakan allow default berarti bahwa semua lalu lintas masuk dan keluar diizinkan ke dan dari pod baru. Misalnya, pod tidak akan memiliki aturan firewall yang diberlakukan (semua lalu lintas diizinkan) sampai pod baru diperbarui dengan kebijakan aktif.

Dengan `NETWORK_POLICY_ENFORCING_MODE` variabel disetel ke`strict`, pod yang menggunakan VPC CNI dimulai dengan kebijakan penolakan *default, kemudian kebijakan* dikonfigurasi. Ini disebut *mode ketat*. Dalam mode ketat, Anda harus memiliki kebijakan jaringan untuk setiap titik akhir yang perlu diakses Pod di klaster Anda. Perhatikan bahwa persyaratan ini berlaku untuk pod CoreDNS. Kebijakan penolakan default tidak dikonfigurasi untuk pod dengan jaringan Host.

Anda dapat mengubah kebijakan jaringan default dengan menyetel variabel lingkungan `NETWORK_POLICY_ENFORCING_MODE` ke `strict` dalam `aws-node` wadah CNI VPC. `DaemonSet`

```
env:
  - name: NETWORK_POLICY_ENFORCING_MODE
    value: "strict"
```

## Langkah 2: Aktifkan parameter kebijakan jaringan untuk add-on
<a name="enable-network-policy-parameter"></a>

Fitur kebijakan jaringan menggunakan port `8162` pada node untuk metrik secara default. Selain itu, fitur ini menggunakan port `8163` untuk pemeriksaan kesehatan. Jika Anda menjalankan aplikasi lain di node atau di dalam pod yang perlu menggunakan port ini, aplikasi gagal dijalankan. Dari versi VPC CNI `v1.14.1` atau yang lebih baru, Anda dapat mengubah port ini.

Gunakan prosedur berikut untuk mengaktifkan parameter kebijakan jaringan untuk add-on.

### Konsol Manajemen AWS
<a name="cni-network-policy-console"></a>

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Di panel navigasi kiri, pilih **Cluster**, lalu pilih nama cluster yang ingin Anda konfigurasikan untuk add-on Amazon VPC CNI.

1. Pilih tab **Add-ons**.

1. Pilih kotak di kanan atas kotak add-on dan kemudian pilih **Edit**.

1. Pada `Amazon VPC CNI` halaman **Konfigurasi**:

   1. Pilih versi `v1.14.0-eksbuild.3` atau yang lebih baru dalam daftar **Versi**.

   1. Perluas **pengaturan konfigurasi opsional**.

   1. Masukkan kunci `"enableNetworkPolicy":` dan nilai JSON `"true"` dalam **nilai Konfigurasi**. Teks yang dihasilkan harus berupa objek JSON yang valid. Jika kunci dan nilai ini adalah satu-satunya data dalam kotak teks, kelilingi kunci dan nilai dengan kurawal kurawal. `{ }`

      Contoh berikut ini mengaktifkan fitur kebijakan jaringan dan metrik serta probe kesehatan disetel ke nomor port default:

      ```
      {
          "enableNetworkPolicy": "true",
          "nodeAgent": {
              "healthProbeBindAddr": "8163",
              "metricsBindAddr": "8162"
          }
      }
      ```

### Helm
<a name="cni-network-helm"></a>

Jika Anda telah menginstal plugin Amazon VPC CNI untuk Kubernetes`helm`, Anda dapat memperbarui konfigurasi untuk mengubah port.

1. Jalankan perintah berikut untuk mengubah port. Tetapkan nomor port dalam nilai untuk kunci `nodeAgent.metricsBindAddr` atau kunci`nodeAgent.healthProbeBindAddr`, masing-masing.

   ```
   helm upgrade --set nodeAgent.metricsBindAddr=8162 --set nodeAgent.healthProbeBindAddr=8163 aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
   ```

### kubectl
<a name="cni-network-policy-kubectl"></a>

1. Buka `aws-node` `DaemonSet` di editor Anda.

   ```
   kubectl edit daemonset -n kube-system aws-node
   ```

1. Ganti nomor port dalam argumen perintah berikut di dalam `aws-network-policy-agent` wadah dalam `args:` manifes daemonset VPC CNI`aws-node`.

   ```
       - args:
               - --metrics-bind-addr=:8162
               - --health-probe-bind-addr=:8163
   ```

## Langkah 3: Konfigurasikan klaster Anda untuk menggunakan kebijakan jaringan Kubernetes
<a name="cni-network-policy-setup"></a>

Anda dapat mengatur ini untuk add-on Amazon EKS atau add-on yang dikelola sendiri.

### Pengaya Amazon EKS
<a name="cni-network-policy-setup-procedure-add-on"></a>

Dengan menggunakan AWS CLI, Anda dapat mengonfigurasi cluster untuk menggunakan kebijakan jaringan Kubernetes dengan menjalankan perintah berikut. Ganti `my-cluster` dengan nama cluster Anda dan peran IAM ARN dengan peran yang Anda gunakan.

```
aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.14.0-eksbuild.3 \
    --service-account-role-arn arn:aws: iam::123456789012:role/AmazonEKSVPCCNIRole \
    --resolve-conflicts PRESERVE --configuration-values '{"enableNetworkPolicy": "true"}'
```

Untuk mengonfigurasinya menggunakan AWS Management Console, ikuti langkah-langkah di bawah ini:

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Di panel navigasi kiri, pilih **Cluster**, lalu pilih nama cluster yang ingin Anda konfigurasikan untuk add-on Amazon VPC CNI.

1. Pilih tab **Add-ons**.

1. Pilih kotak di kanan atas kotak add-on dan kemudian pilih **Edit**.

1. Pada `Amazon VPC CNI` halaman **Konfigurasi**:

   1. Pilih versi `v1.14.0-eksbuild.3` atau yang lebih baru dalam daftar **Versi**.

   1. Perluas **pengaturan konfigurasi opsional**.

   1. Masukkan kunci `"enableNetworkPolicy":` dan nilai JSON `"true"` dalam **nilai Konfigurasi**. Teks yang dihasilkan harus berupa objek JSON yang valid. Jika kunci dan nilai ini adalah satu-satunya data dalam kotak teks, kelilingi kunci dan nilai dengan kurawal kurawal. `{ }` Contoh berikut menunjukkan kebijakan jaringan diaktifkan:

      ```
      { "enableNetworkPolicy": "true" }
      ```

      Screenshot berikut menunjukkan contoh skenario ini.  
![\[<shared id="consolelong"/>menampilkan add-on VPC CNI dengan kebijakan jaringan dalam konfigurasi opsional.\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/console-cni-config-network-policy.png)

### Add-on yang dikelola sendiri
<a name="cni-network-policy-setup-procedure-self-managed-add-on"></a>

Jika Anda telah menginstal plugin Amazon VPC CNI untuk Kubernetes`helm`, Anda dapat memperbarui konfigurasi untuk mengaktifkan kebijakan jaringan.

1. Jalankan perintah berikut untuk mengaktifkan kebijakan jaringan.

   ```
   helm upgrade --set enableNetworkPolicy=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
   ```

1. Buka `amazon-vpc-cni` `ConfigMap` di editor Anda.

   ```
   kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
   ```

1. Tambahkan baris berikut ke `data` dalam`ConfigMap`.

   ```
   enable-network-policy-controller: "true"
   ```

   Setelah Anda menambahkan baris, Anda `ConfigMap` akan terlihat seperti contoh berikut.

   ```
   apiVersion: v1
    kind: ConfigMap
    metadata:
     name: amazon-vpc-cni
     namespace: kube-system
    data:
     enable-network-policy-controller: "true"
   ```

1. Buka `aws-node` `DaemonSet` di editor Anda.

   ```
   kubectl edit daemonset -n kube-system aws-node
   ```

   1. Ganti `false` dengan `true` dalam argumen perintah di `--enable-network-policy=false` dalam `aws-network-policy-agent` wadah `args:` dalam manifes daemonset VPC CNI`aws-node`.

      ```
           - args:
              - --enable-network-policy=true
      ```

## Langkah 4. Langkah selanjutnya
<a name="cni-network-policy-setup-procedure-confirm"></a>

Setelah Anda menyelesaikan konfigurasi, konfirmasikan bahwa `aws-node` pod berjalan di klaster Anda.

```
kubectl get pods -n kube-system | grep 'aws-node\|amazon'
```

Contoh output adalah sebagai berikut.

```
aws-node-gmqp7                                          2/2     Running   1 (24h ago)   24h
aws-node-prnsh                                          2/2     Running   1 (24h ago)   24h
```

Ada 2 kontainer di `aws-node` pod dalam versi `1.14` dan yang lebih baru. Di versi sebelumnya dan jika kebijakan jaringan dinonaktifkan, hanya ada satu kontainer di `aws-node` pod.

Anda sekarang dapat menerapkan kebijakan jaringan Kubernetes ke klaster Anda.

Untuk menerapkan kebijakan jaringan Kubernetes, Anda dapat membuat Kubernetes `NetworkPolicy` atau `ClusterNetworkPolicy` objek dan menerapkannya ke klaster Anda. `NetworkPolicy`objek dicakup ke namespace, sementara `ClusterNetworkPolicy` objek dapat dicakup ke seluruh cluster atau beberapa ruang nama. Anda menerapkan kebijakan untuk mengizinkan atau menolak lalu lintas antar Pod berdasarkan pemilih label, ruang nama, dan rentang alamat IP. Untuk informasi selengkapnya tentang membuat `NetworkPolicy` objek, lihat [Kebijakan Jaringan](https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource) dalam dokumentasi Kubernetes.

Penegakan `NetworkPolicy` objek Kubernetes diimplementasikan menggunakan Extended Berkeley Packet Filter (eBPF). Sehubungan dengan implementasi `iptables` berbasis, ia menawarkan karakteristik latensi dan kinerja yang lebih rendah, termasuk pengurangan pemanfaatan CPU dan menghindari pencarian berurutan. Selain itu, probe eBPF menyediakan akses ke data kaya konteks yang membantu men-debug masalah tingkat kernel yang kompleks dan meningkatkan observabilitas. Amazon EKS mendukung eksportir berbasis EBPF yang memanfaatkan probe untuk mencatat hasil kebijakan pada setiap node dan mengekspor data ke pengumpul log eksternal untuk membantu debugging. Untuk informasi selengkapnya, lihat dokumentasi [eBPF](https://ebpf.io/what-is-ebpf/#what-is-ebpf).