Use a política de NAT de saída para configurar a ocultação de IP em clusters do Autopilot


Esta página explica como configurar clusters criados no modo Autopilot do Google Kubernetes Engine (GKE) para realizar ocultação de IP com a política de NAT de saída.

Para mais informações sobre a ocultação de IP no modo padrão do GKE, consulte o artigo Configure um agente de ocultação de IP.

Vista geral

A política de NAT de saída do GKE permite-lhe configurar o comportamento de mascaramento de IP para clusters do Autopilot.

O GKE suporta duas políticas de NAT de saída geradas automaticamente:

  • Geridos pelo GKE, que são fixos e não editáveis.
  • Políticas predefinidas editáveis.

Esta página mostra como editar e implementar uma política de NAT de saída editando a política predefinida ou criando uma política de NAT de saída. Esta página também mostra como eliminar uma política de NAT de saída criada.

Para mais informações sobre o comportamento da política de NAT de saída, consulte o comportamento de ocultação de tráfego para clusters do Autopilot.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.
  • Certifique-se de que tem um cluster do Autopilot com a versão 1.23.4-gke.1600 ou posterior, ou 1.22.7-gke.1500 ou posterior. O cluster tem de ter o GKE Dataplane V2 ativado.

  • Certifique-se de que o cluster tem uma carga de trabalho em execução. Para mais informações, veja como pedir recursos.

Verifique o estado da política de NAT de saída

Pode verificar se o cluster está a executar a definição de recurso personalizado (CRD) da política de NAT de saída através da ferramenta da CLI do Google Cloud:

  1. Obtenha as credenciais do seu cluster:

    gcloud container clusters get-credentials CLUSTER-NAME
    

    Substitua CLUSTER_NAME pelo nome do cluster.

  2. Verifique se a política de NAT de saída está em execução:

    kubectl get crds egressnatpolicies.networking.gke.io
    

    Se a política de NAT de saída estiver em execução, o resultado é semelhante ao seguinte:

     NAME                                  CREATED AT
     egressnatpolicies.networking.gke.io   2022-03-16T21:05:43Z
    
  3. Obtenha a lista das políticas de NAT de saída criadas:

    kubectl get egressnatpolicies
    

    O resultado é semelhante ao seguinte:

      NAME             AGE
      default          44h
      gke-bbfa6c0e-1   44h
    

Edite a política predefinida existente

O GKE suporta duas políticas de NAT geradas automaticamente, a default policy e a managed by GKE policy. A política predefinida é editável e configura os destinos não mascarados predefinidos.

Para editar a política predefinida existente, siga estes passos:

  1. Obtenha as credenciais do seu cluster:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Substitua CLUSTER_NAME pelo nome do seu cluster.

  2. Edite a política de NAT de saída predefinida:

    kubectl edit egressnatpolicies default
    
  3. Adicione ou remova destinos com a ação NoSNAT como um atributo cidr no formato CIDR:

      apiVersion: networking.gke.io/v1
      kind: EgressNATPolicy
      metadata:
        name: default
      spec:
        action: NoSNAT
        destinations:
        - cidr:  10.0.0.0/8
        - cidr:  172.16.0.0/12
        - cidr:  192.168.0.0/16
        - cidr:  240.0.0.0/4
        - cidr:  192.0.2.0/24
        - cidr:  198.51.100.0/24
        - cidr:  203.0.113.0/24
        - cidr:  100.64.0.0/10
        - cidr:  198.18.0.0/15
        - cidr:  192.0.0.0/24
        - cidr:  192.88.99.0/24
    

    Quando os pacotes são enviados para estes destinos, o seu cluster não oculta as origens dos endereços IP e preserva os endereços IP dos pods de origem.

  4. Verifique se a política predefinida editada está implementada verificando os eventos do Kubernetes:

    kubectl get events
    

    O resultado é semelhante ao seguinte:

    LAST SEEN   TYPE     REASON           OBJECT                    MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/default   Ensuring IP masquerade config for policy "default"
    

    As alterações podem demorar até três minutos a serem aplicadas.

Implemente uma nova política de NAT de saída

Para adicionar novos destinos com a ação NoSNAT, pode usar uma das seguintes opções:

Para criar uma nova política de NAT de saída que não faça parte da política predefinida, siga estes passos:

  1. Guarde o seguinte manifesto como egress_nat_policy.yaml:

    kind: EgressNATPolicy
    apiVersion: networking.gke.io/v1
    metadata:
      name: POLICY_NAME
    spec:
      action: NoSNAT
      destinations:
      - cidr: CIDR_1
      - cidr: CIDR_2
    

    Substitua o seguinte:

    • POLICY_NAME: o nome da nova política.
    • CIDR_1 e CIDR_2: os intervalos de endereços IP no formato CIDR. Quando os pacotes são enviados para estes destinos, o seu cluster não mascara as origens de endereços IP e preserva os endereços IP dos pods de origem. Se precisar de mais de dois CIDRs, adicione mais entradas à lista destinations seguindo o mesmo formato.
  2. Implemente a nova política:

    kubectl create -f egress_nat_policy.yaml
    
  3. Verifique se a política está implementada verificando os eventos do Kubernetes:

    kubectl get events
    

    O resultado é semelhante ao seguinte:

    LAST SEEN   TYPE     REASON           OBJECT                              MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/mypolicy            Ensuring IP masquerade config for policy "mypolicy"
    

Elimine uma política de NAT de saída

Para eliminar completamente uma política de NAT de saída, execute o seguinte comando:

kubectl delete egressnatpolicies POLICY_NAME

Substitua POLICY_NAME pelo nome da política que quer eliminar.

O que se segue?