Usar a política de saída de NAT para configurar o mascaramento de IP em clusters do Autopilot


Nesta página, explicamos como configurar clusters criados no modo Autopilot do Google Kubernetes Engine (GKE) para executar o mascaramento de IP com a política NAT de saída.

Para mais informações sobre o mascaramento de IP no modo GKE padrão, consulte Configurar um agente de mascaramento de IP.

Visão geral

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

O GKE é compatível com duas políticas de NAT de saída geradas automaticamente:

  • Gerenciadas pelo GKE que são fixas e não são editáveis.
  • Políticas padrão editáveis.

Esta página mostra como editar e implantar uma política de NAT de saída editando a política padrão ou criando uma política de NAT de saída. Esta página também mostra como excluir uma política NAT de saída criada.

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

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 Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando gcloud components update.
  • Confira se você tem um cluster do Autopilot nas versões 1.23.4-gke.1600 ou 1.22.7-gke.1500 ou mais recente. Seu cluster precisa ter o GKE Dataplane V2 ativado.

  • Verifique se o cluster tem uma carga de trabalho em execução. Para mais informações, veja como solicitar recursos.

Verificar status da política NAT de saída

É possível verificar se o cluster está executando a definição de recurso personalizada (CRD, na sigla em inglês) de saída de NAT usando a ferramenta CLI do Google Cloud:

  1. Veja as credenciais do cluster:

    gcloud container clusters get-credentials CLUSTER-NAME
    

    Substitua CLUSTER_NAME pelo nome do cluster.

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

    kubectl get crds egressnatpolicies.networking.gke.io
    

    Se a política de saída NAT estiver em execução, a saída será semelhante a esta:

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

    kubectl get egressnatpolicies
    

    A saída será assim:

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

Editar a política padrão atual

O GKE é compatível com duas políticas NAT geradas automaticamente, a política padrão e gerenciada pela política do GKE. A política padrão é editável e configura os destinos padrão não mascarados.

Para editar a política padrão, siga estas etapas:

  1. Veja as credenciais do cluster:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Substitua CLUSTER_NAME pelo nome do cluster.

  2. Edite a política padrão de saída de NAT:

    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 esses destinos, o cluster não mascara as origens de endereço IP de origem e preserva os endereços IP do pod de origem.

  4. Para saber se a política padrão editada foi implantada, verifique os eventos do Kubernetes:

    kubectl get events
    

    O resultado será assim:

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

    As alterações podem levar até três minutos para serem aplicadas.

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

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

Para criar uma nova política de saída de NAT que não faça parte da política padrão, execute as seguintes etapas:

  1. Salve 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:

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

    kubectl create -f egress_nat_policy.yaml
    
  3. Para verificar se a política foi implantada, verifique os eventos do Kubernetes:

    kubectl get events
    

    A saída será assim:

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

Excluir uma política de saída NAT

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

kubectl delete egressnatpolicies POLICY_NAME

Substitua POLICY_NAME pelo nome da política que você quer excluir.

A seguir