Como criar uma política de rede de cluster

Nesta página, explicamos como configurar a aplicação de políticas de rede no Google Kubernetes Engine (GKE). Para ver informações gerais sobre a rede do GKE, acesse 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. Defina uma política de rede usando a API Kubernetes Network Policy para criar regras de firewall no nível do pod. Essas regras de firewall determinam quais pods e serviços podem acessar-se mutuamente dentro do 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 acessem outros pods ou serviços em um namespace diferente.

Antes de começar

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

Defina as configurações padrão da gcloud usando um dos métodos a seguir:

  • Use gcloud init se quiser orientações para definir os padrões.
  • Use gcloud config para definir individualmente a região, a zona e o ID do projeto.

Como usar o gcloud init

Se você receber o erro One of [--zone, --region] must be supplied: Please specify location, conclua esta seção.

  1. Execute gcloud init e siga as instruções:

    gcloud init

    Se você estiver usando SSH em um servidor remoto, utilize a sinalização --console-only para impedir que o comando inicie um navegador:

    gcloud init --console-only
  2. Siga as instruções para autorizar a gcloud a usar sua conta do Google Cloud.
  3. Crie uma nova configuração ou selecione uma atual.
  4. Escolha um projeto do Google Cloud.
  5. Escolha uma zona padrão do Compute Engine.

Como usar o gcloud config

  • 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

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

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

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

Quando você ativa a aplicação da política de rede em um cluster do GKE, o GKE gerencia e restringe as políticas de rede nesse cluster.

Ative a aplicação da política de rede no GKE usando a ferramenta gcloud, o Console do Google Cloud ou a API REST do GKE.

gcloud

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

gcloud container clusters create cluster-name --enable-network-policy

Para ativar a aplicação da política de rede para um cluster existente, execute as tarefas a seguir:

  1. Execute o comando a seguir para ativar o complemento:

    gcloud container clusters update cluster-name --update-addons=NetworkPolicy=ENABLED
  2. Execute o comando a seguir para ativar a aplicação da política de rede no cluster, que, por sua vez, recria os pools de nós do cluster com a aplicação da 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:

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

    Acessar o menu do Google Kubernetes Engine

  2. Clique no botão Criar cluster.

  3. Configure o cluster como quiser.

  4. No painel de navegação, em Cluster, clique em Rede.

  5. Marque a caixa de seleção Ativar política de rede.

  6. Clique em Criar.

Para ativar a aplicação da política de rede para um cluster atual:

  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 aplicação da política de rede, faça o seguinte:

  1. Especifique o objeto networkPolicy dentro do objeto cluster fornecido para projects.zones.clusters.create ou projects.zones.clusters.update.

  2. O objeto networkPolicy requer um enum que especifique qual provedor de política de rede usar e um valor 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.

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

Desative a aplicação da política de rede usando a ferramenta gcloud, o Console do Google Cloud ou a API GKE.

gcloud

Para desativar a aplicação da política de rede em um cluster existente, execute o comando a seguir:

gcloud container clusters update cluster-name --no-enable-network-policy

Console

Para desativar a aplicação da política de rede em um cluster atual, faça o seguinte:

  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 em um cluster atual, faça o seguinte:

  1. Especifique o objeto networkPolicy dentro do objeto cluster fornecido para projects.zones.clusters.update.
  2. No objeto networkPolicy, defina o valor booleano enabled como false.

Se você desativar a aplicação da política de rede, lembre-se de atualizar também todos os complementos (como o Calico DaemonSet) para indicar que a política de rede está desativada para os complementos:

gcloud container clusters update cluster-name --update-addons=NetworkPolicy=DISABLED

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.

Sobrecarga, limitações e ressalvas

  • Ativar a aplicação de políticas de rede consome recursos extras nos nós. Mais especificamente, isso aumenta a memória do processo kube-system em cerca de 128 MB e requer 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 não serão recriados automaticamente até a 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 e2-medium ou versões posteriores. O cluster de tamanho mínimo recomendado para executar a aplicação da política de rede é de três instâncias e2-medium.
  • 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