Configurar políticas de rede para várias redes

Nesta página, explicamos como melhorar a segurança de rede e o controle de tráfego no cluster configurando políticas de rede de várias redes que se aplicam especificamente a uma rede de pods designada. Essas políticas de rede de várias redes controlam o tráfego usando regras de firewall no nível do pod e controlam o fluxo de tráfego entre pods e serviços.

Para entender como funcionam as políticas de rede de várias redes, veja como as políticas Políticas trabalho com as redes de pods.

Requisitos

Para usar políticas de rede de várias redes, considere os seguintes requisitos:

  • Google Cloud CLI versão 459 e posterior.
  • Você precisa ter um cluster do GKE executando uma das seguintes versões:
    • 1.28.5-gke.1293000 ou mais recente
    • 1.29.0-gke.1484000 ou mais recente
  • O cluster precisa usar o GKE Dataplane V2.

Limitações

Não há suporte para as políticas de rede FQDN e CiliumClusterWide: Se você usar uma política de rede FQDN e uma política de rede CiliumClusterWide em um pod conectado a várias redes, as políticas vão afetar todas as conexões do pod, incluindo aquelas em que as políticas não são aplicadas.

Configurar políticas de rede para várias redes

Para usar políticas de rede de várias redes, faça o seguinte:

  1. Crie um cluster com o GKE ativado para várias redes .
  2. Crie um pool de nós e uma rede de pods.
  3. Faça referência à rede do pod.
  4. Crie uma política de rede a ser aplicada que faça referência à mesma rede de pod utilizada pela carga de trabalho.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a CLI do Google Cloud para essa tarefa, instale e inicialize a gcloud CLI. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.

Criar política de rede

  1. Para criar uma política de rede que aplique regras na mesma rede do pod que a carga de trabalho, faça referência à rede do pod específica na política de rede definição.

  2. Definir as regras de tráfego de entrada selecionadas e os pods de destino com base em rótulos ou outros seletores, crie uma política de rede padrão.

    Salve o seguinte manifesto de amostra como 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. Aplique o manifesto sample-ingress-network-policy1.yaml:

    kubectl apply -f sample-ingress-network-policy1.yaml
    
  4. Definir as regras de tráfego de saída selecionadas e os pods de destino com base em rótulos ou outros seletores, crie uma política de rede padrão.

    Salve o seguinte manifesto de amostra como 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. Aplique o manifesto sample-egress-network-policy2.yaml:

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

Resolver problemas de políticas de rede em várias redes

Se você tiver problemas com as políticas de rede, se elas são aplicadas a redes de pods específicas ou não, é possível diagnosticar e resolver o problema executando os seguintes comandos:

  1. kubectl get networkpolicy: lista todos os objetos de política de rede e informações sobre eles.
  2. iptables-save: recupera e lista todas as cadeias de tabelas de endereços IP de um de um nó específico. É preciso executar esse comando no nó como raiz.
  3. cilium bpf policy get <endpoint-id>: recupera e lista os IPs permitidos. e endereços IP do mapa de políticas de cada endpoint.
  4. cilium policy selectors: imprime o identidades e as políticas associadas que as selecionaram.
  5. cilium identity list: mostra mapeamentos da identidade para o endereço IP.

A seguir