Como criar uma política de rede de cluster

Esta página explica como configurar políticas de rede no Google Kubernetes Engine (GKE). Para informações gerais sobre a rede do GKE, consulte Visão geral da rede.

Visão geral

Use a aplicação da política de rede do GKE para controlar a comunicação entre os pods e os serviços do cluster. Para definir uma política de rede no GKE, use a API Kubernetes Network Policy para criar regras de firewall no nível do pod. Elas determinam quais pods e serviços podem acessar um ao outro no cluster.

Definir a política de rede ajuda você a ativar itens como defesa em profundidade quando o cluster estiver veiculando um aplicativo de vários níveis. Por exemplo, você pode criar uma política de rede para garantir que um serviço comprometido de front-end no aplicativo não possa se comunicar diretamente com um serviço de cobrança ou contabilidade vários níveis abaixo.

Com a política de rede, fica fácil para o aplicativo hospedar dados de vários usuários simultaneamente. Por exemplo, você pode fornecer multilocação segura definindo um modelo de inquilino por namespace. Nesse modelo, as regras de política de rede podem garantir que pods e serviços em um determinado namespace não possam acessar outros pods ou serviços em um namespace diferente.

Antes de começar

Prepare-se para a tarefa tomando as seguintes medidas:

  • Verifique se você ativou a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Verifique se o SDK do Cloud está instalado.
  • Defina o ID do projeto padrão:
    gcloud config set project [PROJECT_ID]
  • Se você estiver trabalhando com clusters zonais, defina a zona do Compute padrão:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Se você estiver trabalhando com clusters regionais, defina a região do Compute padrão:
    gcloud config set compute/region [COMPUTE_REGION]
  • Atualize gcloud para a versão mais recente:
    gcloud components update

Como usar a aplicação da política de rede

Para ativar ou desativar a aplicação de políticas de rede, use a ferramenta de linha de comando gcloud, a API GKE REST ou o Console do Google Cloud.

Depois de ativar a política de rede no cluster, crie uma rede com a API Kubernetes Network Policy.

Você pode ativar a aplicação da política de rede ao criar um cluster do GKE ou ativá-lo para um cluster existente. Também é possível desativar a política de rede para um cluster existente.

Observação: se você ativar ou desativar a política de rede para um cluster atual, o GKE do nó precisará recriar todos os pools de nós para garantir que os nós estejam configurados para executar o processo de política da rede.

Como ativar a aplicação da política de rede

gcloud

Para ativar a aplicação da política de rede ao criar um novo cluster usando a ferramenta de linha de comando o gcloud, execute o comando gcloud container clusters create com a sinalização --enable-network-policy:

gcloud container clusters create [CLUSTER_NAME] --enable-network-policy

Ativar a aplicação da política de rede para um cluster atual com a ferramenta de linha de comando gcloud é um processo de duas etapas. Primeiro, execute o comando gcloud container clusters update com a sinalização --update-addons:

gcloud container clusters update [CLUSTER_NAME] --update-addons=NetworkPolicy=ENABLED

Em seguida, execute o comando gcloud container clusters update com a sinalização --enable-network-policy. Esse comando faz com que os pools de nós do cluster sejam recriados com a política de rede ativada:

gcloud container clusters update [CLUSTER_NAME] --enable-network-policy

Console

Para ativar a aplicação da política de rede ao criar um novo cluster, execute as seguintes etapas:

  1. Acesse o menu do Google Kubernetes Engine no Console do Cloud.

    Acessar o menu do Google Kubernetes Engine

  2. Clique em Criar cluster.

  3. Configure o cluster como quiser.

  4. Clique em Opções avançadas. Na seção Rede, selecione Ativar política de rede.

  5. Clique em Criar.

Para ativar a aplicação da política de rede em um cluster atual, execute as seguintes etapas:

  1. Acesse o menu do Google Kubernetes Engine no Console do Cloud.

    Acessar o menu do Google Kubernetes Engine

  2. Clique no cluster em você quer aplicar a política de rede.

  3. Clique em Editar ao lado do ícone de lápis.

  4. No menu suspenso Política de rede para mestre, selecione Desativado.

  5. Clique em Salvar e, em seguida, clique em Editar novamente após a atualização do cluster.

  6. No menu suspenso Política de rede para nós, selecione Desativado.

  7. Clique em Salvar.

API

Para ativar a política de rede usando a API GKE, especifique o objeto networkPolicy dentro do objeto cluster que você fornece para projects.zones.clusters.create ou projects.zones.clusters.update.

O objeto networkPolicy exige um enum que especifique qual provedor de política de rede usar e um booleano que especifique se a política de rede será ativada. Se você ativar a política de rede, mas não definir o provedor, os comandos create e update retornarão um erro. Atualmente, o único valor válido do provedor é CALICO.

Como desabilitar a aplicação da política de rede

gcloud

Para desativar a aplicação da política de rede para um cluster atual usando a ferramenta de linha de comando gcloud, execute o comando gcloud container clusters update com a sinalização --no-enable-network-policy.

gcloud container clusters update [CLUSTER_NAME] --no-enable-network-policy

Console

  1. Acesse o menu do Google Kubernetes Engine no Console do Cloud.

    Acessar o menu do Google Kubernetes Engine

  2. Clique no botão de edição do cluster, que tem a aparência de um lápis.

  3. No menu suspenso Política de rede para nós, selecione Desativado.

  4. Clique em Salvar. Em seguida, clique em Editar novamente.

  5. No menu suspenso Política de rede para a principal, selecione Desativado.

  6. Clique em Salvar.

API

Para desativar a aplicação da política de rede a um cluster atual usando a API GKE, especifique o objeto networkPolicy no objeto cluster que você fornecer para projects.zones.clusters.update. No objeto networkPolicy, defina o valor booleano enabled como false.

Como criar uma política de rede

Depois de ativar a aplicação da política de rede para o cluster, você precisará definir a política de rede efetiva. Você define a política de rede usando a API Kubernetes Network Policy.

Para mais detalhes sobre como criar uma política de rede, consulte os tópicos a seguir na documentação do Kubernetes:

Como trabalhar com a PodSecurityPolicy

Se você estiver usando uma NetworkPolicy e tiver um pod sujeito à PodSecurityPolicy, crie um RBAC Role ou ClusterRole que tenha permissão para usar a PodSecurityPolicy (conteúdo dos links em inglês). Em seguida, vincule o Role ou ClusterRole à conta de serviço do pod. Ao usar NetworkPolicy e PodSecurityPolicy em conjunto, conceder permissões a contas de usuário não é suficiente. Vincule o papel à conta de serviço. Para mais informações, consulte Como autorizar políticas.

Como modificar temporariamente a política de rede

É possível desativar temporariamente a aplicação de política de rede no cluster em caso de problemas ou circunstâncias extraordinárias. Para mais informações, consulte a documentação da Tigera (em inglês) sobre como modificar a política do Calico.

Sobrecarga, limitações e advertências

  • Ativar a aplicação de políticas de rede consome recursos extras nos nós. Especificamente, isso aumenta o volume de memória do processo "kube-system" em cerca de 128 MB e exige aproximadamente 300 millicores de CPU.
  • A ativação da aplicação da política de rede requer que os nós sejam recriados. Se o cluster tiver uma janela de manutenção ativa, os nós somente serão recriados automaticamente na próxima janela de manutenção. Se preferir, faça upgrade do cluster manualmente quando quiser.

Limitações e requisitos

  • Seu cluster precisa ter pelo menos dois nós do tipo n1-standard-1 ou superior. O cluster de tamanho mínimo recomendado para executar a aplicação da política de rede é de três instâncias n1-standard-1.
  • A política de rede não é compatível com clusters com nós f1-micro ou g1-small já que os requisitos de recursos são muito altos para instâncias desse tamanho.

Para mais informações sobre tipos de máquinas de nó e recursos alocáveis, consulte Arquitetura do cluster - nós.

Como trabalhar com verificações de integridade do balanceador de carga HTTP(S)

Quando uma Entrada é aplicada a um serviço para criar um balanceador de carga HTTP(S), a política de rede aplicada aos pods atrás desse serviço também precisa permitir os intervalos IP apropriados da sondagem do balanceador de carga HTTP(S).

Além disso, as portas do nó para um serviço podem encaminhar conexões para pods em outros nós, a menos que sejam impedidas de fazê-lo, definindo a externalTrafficPolicy como "Local" na definição do serviço. Se externalTrafficPolicy não estiver definido como Local, a política de rede também deverá permitir conexões de outros IPs de nó no cluster.

Observe que essa discussão não se aplica ao uso do balanceamento de carga nativo do contêiner com grupos de endpoints da rede.

A seguir