Como criar uma política de rede de cluster

Nesta página, explicamos como configurar políticas de rede no Google Kubernetes Engine. Para informações gerais sobre a rede do GKE, veja a 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 do 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 código do projeto padrão:
    gcloud config set project [PROJECT_ID]
  • Se você estiver trabalhando com clusters zonais, defina a zona de computação padrão:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Se você estiver trabalhando com clusters regionais, defina a região de computação padrão:
    gcloud config set compute/region [COMPUTE_REGION]
  • Atualize a 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 da política de rede, use a ferramenta de linha de comando gcloud, a API REST do GKE ou o Console do Google Cloud Platform.

Depois de ativar a política de rede no cluster, crie uma rede com a API do 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.

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 gcloud, execute o comando gcloud container clusters create com a sinalização --enable-network-policy:

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

A ativação da aplicação da política de rede em 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 GCP.

    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 GCP.

    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 com a API GKE, especifique o objeto networkPolicy no objeto cluster que você fornecer 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 configurar 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 existente 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 GCP.

    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 em um cluster atual com 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 Kubernetes Network Policy API.

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. Em seguida, vincule-o à conta de serviço do pod. Nesse caso, conceder permissões a contas de usuários não é suficiente. Para mais informações, consulte Como autorizar políticas.

Como modificar temporariamente a política de rede

Você pode 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 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 o 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 tamanho mínimo recomendado de cluster para executar a aplicação da política de rede é três instâncias de n1-standard-1.
  • A política de rede não é compatível com clusters com nós que sejam instâncias de f1-micro ou g1-small, já que os requisitos de recurso 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 a externalTrafficPolicy não estiver definida como Local, a política de rede também precisará 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

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine