Configura i criteri di rete multirete

Questa pagina spiega come migliorare la sicurezza della rete e il controllo del traffico all'interno del cluster configurando policy di rete multi-rete che si applicano in modo specifico a una rete di pod designata. Queste policy di rete multi-rete controllano il traffico utilizzando regole firewall a livello di pod e il flusso di traffico tra pod e servizi.

Per capire come funzionano le policy di rete multi-rete, consulta la sezione su come funzionano le policy di rete con le reti di pod.

Requisiti

Per utilizzare le policy di rete multi-rete, tieni presente i seguenti requisiti:

  • Google Cloud CLI versione 459 e successive.
  • Devi avere un cluster GKE che esegue una delle seguenti versioni:
    • 1.28.5-gke.1293000 o versioni successive
    • 1.29.0-gke.1484000 o versioni successive
  • Il cluster deve utilizzare GKE Dataplane V2.

Limitazioni

Le policy di rete FQDN e le policy di rete CiliumClusterWide non sono supportate: se utilizzi una policy di rete FQDN e una policy di rete CiliumClusterWide su un pod connesso a più reti, le policy influiscono su tutte le connessioni del pod, incluse quelle in cui le policy non vengono applicate.

Configurare le policy di rete multi-rete

Per utilizzare le policy di rete multi-rete:

  1. Crea un cluster GKE con la funzionalità multi-rete abilitata .
  2. Crea un pool di nodi e una rete di pod.
  3. Fai riferimento alla rete di pod.
  4. Crea una policy di rete da applicare che faccia riferimento alla stessa rete di pod utilizzata dal carico di lavoro.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il gcloud components update comando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.

Crea criterio di rete

  1. Per creare una policy di rete che applichi le regole alla stessa rete di pod del carico di lavoro, fai riferimento alla rete di pod specifica nella definizione della policy di rete.

  2. Per definire le regole del traffico in entrata selezionate e i pod di destinazione in base alle etichette o ad altri selettori, crea una policy di rete standard.

    Salva il seguente manifest di esempio come 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. Applica il manifest sample-ingress-network-policy1.yaml:

    kubectl apply -f sample-ingress-network-policy1.yaml
    
  4. Per definire le regole del traffico in uscita selezionate e i pod di destinazione in base alle etichette o ad altri selettori, crea una policy di rete standard.

    Salva il seguente manifest di esempio come 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. Applica il manifest sample-egress-network-policy2.yaml:

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

Risolvere i problemi relativi alle policy di rete multi-rete

Se riscontri problemi con le policy di rete, indipendentemente dal fatto che vengano applicate a reti di pod specifiche o meno, puoi diagnosticare e risolvere il problema eseguendo i seguenti comandi:

  1. kubectl get networkpolicy: elenca tutti gli oggetti delle policy di rete e le relative informazioni.
  2. iptables-save: recupera ed elenca tutte le catene di tabelle di indirizzi IP per un nodo specifico. Devi eseguire questo comando sul nodo come root.
  3. cilium bpf policy get <endpoint-id>: recupera ed elenca gli indirizzi IP consentiti dalla mappa delle policy di ogni endpoint.
  4. cilium policy selectors: stampa le identità e le policy associate che le hanno selezionate.
  5. cilium identity list: mostra i mapping dall'identità all'indirizzo IP.

Passaggi successivi