Batasi lalu lintas jaringan Pod dengan Kubernetes kebijakan jaringan - Amazon EKS

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 Kubernetes kebijakan jaringan

Anda dapat menggunakan Kubernetes kebijakan jaringan untuk membatasi lalu lintas jaringan ke dan dari Pods. Untuk informasi selengkapnya, lihat Kebijakan Jaringan di Kubernetes dokumentasi.

Anda harus mengkonfigurasi berikut ini untuk menggunakan fitur ini:

  1. Menyiapkan penegakan kebijakan di Pod startup. Anda melakukan ini dalam aws-node wadah VPC CNIDaemonSet.

  2. Aktifkan parameter kebijakan jaringan untuk add-on.

  3. Konfigurasikan cluster Anda untuk menggunakan Kubernetes kebijakan jaringan

Sebelum Anda mulai, tinjau pertimbangannya. Untuk informasi selengkapnya, lihat Pertimbangan.

Prasyarat

Berikut ini adalah prasyarat untuk fitur ini:

*. Versi cluster Minimum EKS Cluster Amazon yang ada. Untuk menyebarkan satu, lihatMemulai dengan Amazon EKS. Cluster harus Kubernetes versi 1.25 atau yang lebih baru. Cluster harus menjalankan salah satu Kubernetes versi dan versi platform yang tercantum dalam tabel berikut. Perhatikan bahwa setiap Kubernetes dan versi platform yang lebih lambat dari yang terdaftar juga didukung. Anda dapat memeriksa saat ini Kubernetes versi dengan mengganti my-cluster dalam 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

1.25.12

eks.7

*. VPC CNI Versi Minimum versi 1.14 atau yang lebih baru Amazon VPC CNI plugin for Kubernetes di cluster Anda. 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 dari1.14, lihat Memperbarui Amazon VPC CNI (EKSadd-on Amazon) untuk meningkatkan ke versi 1.14 atau yang lebih baru. *. Minimum versi kernel Linux Node Anda harus memiliki versi kernel Linux 5.10 atau yang lebih baru. Anda dapat memeriksa versi kernel Anda denganuname -r. Jika Anda menggunakan versi terbaru dari Amazon yang EKS dioptimalkan Amazon Linux, Amazon EKS mengoptimalkan Amazon Linux yang dipercepatAMIs, dan BottlerocketAMIs, mereka sudah memiliki versi kernel yang diperlukan.

+ Amazon EKS mengoptimalkan AMI versi Amazon Linux yang dipercepat v20231116 atau yang lebih baru memiliki versi kernel5.10.

Langkah 1: Siapkan penegakan kebijakan di Pod perusahaan rintisan

Bagian Amazon VPC CNI plugin for 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 kestrict, pod yang menggunakan VPC CNI start 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 CoreDNS polong. 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 VPC CNIDaemonSet.

env: - name: NETWORK_POLICY_ENFORCING_MODE value: "strict"

Langkah 2: Aktifkan parameter kebijakan jaringan untuk add-on

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

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

AWS Management Console
  1. Buka EKSkonsol Amazon.

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

  3. Pilih tab Add-ons.

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

  5. Pada Konfigurasi name of add-on halaman:

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

    2. Perluas pengaturan konfigurasi opsional.

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

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

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

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

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

    helm upgrade --set nodeAgent.metricsBindAddr=8162 --set nodeAgent.healthProbeBindAddr=8163 aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
kubectl
  1. Buka aws-node DaemonSet di editor Anda.

    kubectl edit daemonset -n kube-system aws-node
  2. Ganti nomor port dalam argumen perintah berikut di dalam aws-network-policy-agent wadah args: dalam manifes VPC CNI aws-node daemonset.

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

Langkah 3: Pasang sistem file Berkeley Packet Filter (BPF) pada node Anda

Anda harus me-mount sistem file Berkeley Packet Filter (BPF) pada setiap node Anda.

catatan

Jika cluster Anda versi 1.27 atau yang lebih baru, Anda dapat melewati langkah ini karena semua Amazon EKS mengoptimalkan Amazon Linux dan Bottlerocket AMIs untuk 1.27 atau yang lebih baru sudah memiliki fitur ini.

Untuk semua versi cluster lainnya, jika Anda memutakhirkan Amazon yang EKS dioptimalkan Amazon Linux ke versi v20230703 atau yang lebih baru atau Anda memutakhirkan Bottlerocket AMI ke versi v1.0.2 atau yang lebih baru, Anda dapat melewati langkah ini.

  1. Pasang sistem file Berkeley Packet Filter (BPF) pada setiap node Anda.

    sudo mount -t bpf bpffs /sys/fs/bpf
  2. Kemudian, tambahkan perintah yang sama ke data pengguna Anda di template peluncuran untuk Grup EC2 Auto Scaling Amazon Anda.

Langkah 4: Konfigurasikan cluster Anda untuk digunakan Kubernetes kebijakan jaringan

Konfigurasikan cluster yang akan digunakan Kubernetes kebijakan jaringan. Anda dapat mengatur ini untuk EKS add-on Amazon atau add-on yang dikelola sendiri.

AWS Management Console
  1. Buka EKSkonsol Amazon.

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

  3. Pilih tab Add-ons.

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

  5. Pada Konfigurasi name of addon halaman:

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

    2. Perluas pengaturan konfigurasi opsional.

    3. Masukkan JSON kunci "enableNetworkPolicy": dan nilai "true" dalam nilai Konfigurasi. Teks yang dihasilkan harus berupa JSON objek 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 VPC CNI add-on dengan kebijakan jaringan dalam konfigurasi opsional.
AWS CLI
  1. Jalankan AWS CLI perintah berikut. Ganti my-cluster dengan nama cluster Anda dan IAM peran 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"}'
Helm

Jika Anda telah menginstal Amazon VPC CNI plugin for Kubernetes melaluihelm, 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
kubectl
  1. Buka amazon-vpc-cni ConfigMap di editor Anda.

    kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
  2. Tambahkan baris berikut ke data dalamConfigMap.

    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"
  3. Buka aws-node DaemonSet di editor Anda.

    kubectl edit daemonset -n kube-system aws-node
  4. Ganti false dengan true dalam argumen perintah --enable-network-policy=false di dalam aws-network-policy-agent wadah args: dalam manifes VPC CNI aws-node daemonset.

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

Langkah 5. Langkah selanjutnya

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 menyebarkan Kubernetes kebijakan jaringan ke cluster Anda.

Untuk mengimplementasikan Kubernetes kebijakan jaringan yang Anda buat Kubernetes NetworkPolicyobjek dan menyebarkan mereka ke cluster Anda. NetworkPolicyobjek dicakup ke namespace. Anda menerapkan kebijakan untuk mengizinkan atau menolak lalu lintas antara Pods berdasarkan pemilih label, ruang nama, dan rentang alamat IP. Untuk informasi selengkapnya tentang membuat NetworkPolicy objek, lihat Kebijakan Jaringan di Kubernetes dokumentasi.

Penegakan Kubernetes NetworkPolicyobjek diimplementasikan menggunakan Extended Berkeley Packet Filter (eBPF). Sehubungan dengan implementasi iptables berbasis, ia menawarkan latensi dan karakteristik kinerja yang lebih rendah, termasuk pengurangan CPU pemanfaatan dan menghindari pencarian berurutan. Selain itu, eBPF probe menyediakan akses ke data kaya konteks yang membantu men-debug masalah tingkat kernel yang kompleks dan meningkatkan observabilitas. Amazon EKS mendukung eBPFeksportir berbasis yang memanfaatkan probe untuk mencatat hasil kebijakan pada setiap node dan mengekspor data ke pengumpul log eksternal untuk membantu debugging. Untuk informasi lebih lanjut, lihat BPFdokumentasi e.