Menyiapkan kebijakan jaringan multi-jaringan


Halaman ini menjelaskan cara meningkatkan keamanan jaringan dan kontrol traffic dalam cluster dengan mengonfigurasi kebijakan jaringan multi-jaringan yang berlaku khusus untuk jaringan Pod yang ditetapkan. Kebijakan jaringan multi-jaringan ini mengontrol traffic menggunakan aturan firewall di tingkat Pod, dan mengontrol aliran traffic antara Pod dan Layanan.

Untuk memahami cara kerja kebijakan jaringan multi-jaringan, lihat cara kerja Kebijakan Jaringan dengan jaringan Pod.

Persyaratan

Untuk menggunakan kebijakan jaringan multi-jaringan, pertimbangkan persyaratan berikut:

  • Google Cloud CLI versi 459 dan yang lebih baru.
  • Anda harus memiliki cluster GKE yang menjalankan salah satu versi berikut:
    • 1.28.5-gke.1293000 atau yang lebih baru
    • 1.29.0-gke.1484000 atau yang lebih baru
  • Cluster Anda harus menggunakan GKE Dataplane V2.

Batasan

Kebijakan jaringan FQDN dan kebijakan jaringan CiliumClusterWide tidak didukung: Jika Anda menggunakan kebijakan jaringan FQDN dan kebijakan jaringan CiliumClusterWide di Pod yang terhubung ke beberapa jaringan, kebijakan tersebut akan memengaruhi semua koneksi Pod, termasuk koneksi yang tidak menerapkan kebijakan tersebut.

Mengonfigurasi kebijakan jaringan multi-jaringan

Untuk menggunakan kebijakan jaringan multi-jaringan, lakukan hal berikut:

  1. Buat cluster dengan GKE yang mendukung multi-jaringan .
  2. Buat node pool dan jaringan Pod.
  3. Mereferensikan jaringan Pod.
  4. Buat kebijakan jaringan yang akan diterapkan yang mereferensikan jaringan Pod yang sama yang digunakan oleh workload.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Buat kebijakan jaringan

  1. Untuk membuat kebijakan jaringan yang menerapkan aturan pada jaringan Pod yang sama dengan workload Anda, lihat jaringan Pod tertentu dalam definisi kebijakan jaringan.

  2. Untuk menentukan aturan traffic ingress yang dipilih dan menargetkan Pod berdasarkan label atau pemilih lainnya, buat Kebijakan Jaringan standar.

    Simpan manifes contoh berikut sebagai sample-ingress-network-policy1.yaml:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation for network selection
    spec:
      podSelector:
        matchLabels:
          app: test-app-2  # Selects pods with the label "app: test-app-2"
      policyTypes:
      - Ingress  # Specifies the policy applies only to incoming traffic
      ingress:
      - from:  # Allow incoming traffic only from...
        - podSelector:
            matchLabels:
              app: test-app-1  # ...pods with the label "app: test-app-1"
    
  3. Terapkan manifes sample-ingress-network-policy1.yaml:

    kubectl apply -f sample-ingress-network-policy1.yaml
    
  4. Untuk menentukan aturan traffic egress yang dipilih dan menargetkan Pod berdasarkan label atau pemilih lainnya, buat kebijakan jaringan standar.

    Simpan manifes contoh berikut sebagai sample-egress-network-policy2.yaml:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy-2
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation (optional)
    spec:
      podSelector:
        matchLabels:
          app: test-app-2
      policyTypes:
        - Egress  # Only applies to outgoing traffic
      egress:
        - to:
            - podSelector:
                matchLabels:
                  app: test-app-3
    
  5. Terapkan manifes sample-egress-network-policy2.yaml:

    kubectl apply -f sample-egress-network-policy2.yaml
    

Memecahkan masalah kebijakan jaringan multi-jaringan

Jika Anda mengalami masalah dengan kebijakan jaringan, baik diterapkan ke jaringan Pod tertentu atau tidak, Anda dapat mendiagnosis dan memecahkan masalah dengan menjalankan perintah berikut:

  1. kubectl get networkpolicy: mencantumkan semua objek kebijakan jaringan dan informasi tentangnya.
  2. iptables-save: mengambil dan mencantumkan semua rantai tabel alamat IP untuk node tertentu. Anda harus menjalankan perintah ini di node sebagai root.
  3. cilium bpf policy get <endpoint-id>: mengambil dan mencantumkan alamat IP yang diizinkan dari peta kebijakan setiap endpoint.
  4. cilium policy selectors: mencetak identitas dan kebijakan terkait yang telah memilihnya.
  5. cilium identity list: menampilkan pemetaan dari identitas ke alamat IP.

Langkah berikutnya