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 tempat kebijakan tidak diterapkan.

Mengonfigurasi kebijakan jaringan multi-jaringan

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

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

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan 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.

Membuat kebijakan jaringan

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

  2. Untuk menentukan aturan traffic masuk 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 keluar 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 mengalami masalah dengan kebijakan jaringan, baik yang diterapkan ke jaringan Pod tertentu maupun 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 selanjutnya