A desativação dessas regras de firewall criadas automaticamente para serviços LoadBalancer pode ser útil nas seguintes situações:
- Se você tiver vários serviços LoadBalancer em dois ou mais clusters do GKE, gerenciar as regras de firewall por conta própria pode ser mais eficiente. Por exemplo, em vez de fazer com que o GKE crie uma regra de firewall exclusiva para cada serviço LoadBalancer, as regras de firewall criadas manualmente podem permitir o tráfego de entrada para vários LoadBalancerServices.
- É possível usar políticas de firewall hierárquicas, políticas de firewall de rede global, ou políticas de firewall de rede regional em vez de regras de firewall da VPC. As regras nessas políticas de firewall oferecem suporte a mais ações, destinos mais flexíveis, e recursos como geolocalização, inteligência contra ameaças, grupos de endereços, e FQDNs.
Para desativar as regras de firewall criadas automaticamente para serviços LoadBalancer, especifique a flag --disable-l4-lb-firewall-reconciliation ao criar ou atualizar um cluster. A flag --disable-l4-lb-firewall-reconciliation não afeta outras regras de firewall da VPC criadas automaticamente, como aquelas que facilitam a comunicação entre nós ou que permitem verificações de integridade para seus serviços.
Requisitos
- Para usar regras de firewall gerenciadas pelo usuário para serviços LoadBalancer, os clusters do GKE precisam usar a versão 1.31.3-gke.105600 ou mais recente.
Limitações
O GKE oferece suporte à desativação da criação automática de regras de firewall para estes tipos de serviços LoadBalancer:
- Serviços LoadBalancer internos que usam a subconfiguração do GKE
- Serviços LoadBalancer externos baseados em serviço de back-end
Não é possível desativar a criação automática de regras de firewall para estes tipos de serviços LoadBalancer:
- Serviços LoadBalancer internos que não usam a subconfiguração do GKE
- Serviços LoadBalancer externos baseados em pool de destino
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 o comando
gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
Estratégias para gerenciamento manual de regras de firewall
Antes de desativar a criação automática de regras de firewall da VPC para serviços LoadBalancer no cluster do GKE, trabalhe com um administrador de segurança para desenvolver uma estratégia de configuração manual de regras de firewall.
Decida qual tipo de política de firewall usar: uma política de firewall hierárquica, uma política de firewall de rede global ou uma política de firewall de rede regional. Para conferir as etapas de criação de uma política de firewall, consulte:
- Usar políticas e regras hierárquicas de firewall
- Usar políticas e regras globais de firewall de rede
- Usar políticas e regras de firewall da rede regional
Também é possível usar regras de firewall da VPC, que não usam nenhuma política.
As regras de firewall criadas manualmente precisam ser regras de permissão de entrada, porque a regra de firewall de negação implícita de entrada proíbe o tráfego de entrada . Quando você desativa a criação automática de regras de firewall da VPC, o tráfego de entrada não chega aos nós, a menos que você tenha criado regras de firewall de permissão de entrada que correspondam ao tráfego dos serviços LoadBalancer.
Dependendo dos parâmetros da regra de firewall, uma única regra de firewall de permissão de entrada pode ser aplicada a um ou mais serviços LoadBalancer. Para cada regra de firewall de permissão de entrada criada, defina os seguintes parâmetros:
Parâmetro de destino: verifique se a regra de firewall inclui pelo menos todos os nós de o cluster que contém os serviços LoadBalancer. Os destinos compatíveis dependem do tipo de política de firewall em que uma regra está localizada ou se você está usando uma regra de firewall da VPC. Para informações sobre o parâmetro de destino de uma regra em uma política de firewall, consulte Destinos.
Protocolos e portas: inclua todos os protocolos e portas de destino usados pelos serviços LoadBalancer a que a regra de firewall precisa ser aplicada.
Parâmetro de destino: é possível usar uma das seguintes estratégias para o parâmetro de destino:
- Inclua os endereços IP de todos os serviços LoadBalancer a que a regra de firewall precisa ser aplicada no parâmetro de destino. Para encontrar o endereço IP de um serviço LoadBalancer, use o seguinte comando:
kubectl get svc LOADBALANCER_NAME \ -n NAMESPACE_NAME \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}- É possível omitir o parâmetro de destino. Quando o parâmetro de destino é omitido, o parâmetro de destino define os destinos implicitamente. Para mais informações, consulte Destinos e endereços IP para regras de entrada rules.
Parâmetro de origem: especifique as origens (por exemplo, endereços IP) usadas pelos clientes que precisam se conectar aos serviços do balanceador de carga a que a regra de firewall precisa ser aplicada.
Para conferir as etapas de criação de regras de firewall, consulte:
Para garantir que as regras de firewall criadas manualmente estejam funcionando corretamente, execute um teste de conectividade do Network Intelligence Center (NIC, na sigla em inglês). Ao executar o teste de conectividade:
- Defina o destino como o endereço IP do serviço LoadBalancer.
- Defina a origem como o endereço IP do cliente.
Para mais informações, consulte Resolver problemas de conectividade issues.
Desativar a criação de regras de firewall da VPC para serviços LoadBalancer
Esta seção descreve as etapas para desativar a criação automática de regras de firewall da VPC para serviços LoadBalancer.
Criar um cluster do GKE com a criação de regras de firewall da VPC desativada
Para desativar as regras de firewall da VPC criadas automaticamente para serviços LoadBalancer em um cluster recém-criado, crie o cluster com a flag
--disable-l4-lb-firewall-reconciliation:Autopilot :
gcloud container clusters create-auto CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=VERSIONPadrão :
gcloud container clusters create CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --enable-l4-ilb-subsetting \ --cluster-version=VERSIONSubstitua:
CLUSTER_NAME: o nome do novo cluster;VERSION: a versão do GKE.
Crie um serviço LoadBalancer externo ou interno:
Verifique se o GKE não cria uma regra de firewall de permissão de entrada para o serviço LoadBalancer. (As regras de firewall de permissão de entrada criadas automaticamente têm nomes do seguinte formato:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]).O comando a seguir retorna uma lista de regras de firewall que contêm
k8s2:gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"A resposta só vai retornar a regra de firewall de verificação de integridade do formato
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fwse o parâmetroexternalTrafficPolicyestiver definido comoLocal. Ele usa a porta TCP definida pelo parâmetrospec.healthCheckNodePort. Se não for especificado, o plano de controle do Kubernetes atribuirá uma porta de verificação de integridade a partir do intervalo de portas do nó.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 FalseSe o parâmetro
externalTrafficPolicyestiver definido comoCluster, a seguinte regra de firewall de verificação de integridade será retornada.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 FalsePara mais informações sobre regras de firewall geradas para serviços do GKE, consulte Regras de firewall criadas automaticamente.
Atualizar um cluster do GKE para desativar a criação de regras de firewall da VPC
Antes de desativar a criação de regras de firewall da VPC, observe os seguintes pontos sobre a atualização de um cluster:
- Quando você atualiza um cluster para desativar a criação de regras de firewall da VPC, o GKE não exclui nenhuma regra de firewall criada automaticamente para seus serviços LoadBalancer.
- O GKE para de atualizar as regras atuais e não cria novas para os novos serviços LoadBalancer.
- Para reativar a criação de regras de firewall da VPC, use a
--enable-l4-lb-firewall-reconciliationflag com ogcloud_name container clusters updatecomando.
Para desativar a criação automática de regras de firewall em um cluster:
Atualize o cluster para desativar a criação e o gerenciamento automáticos de regras de firewall para serviços LoadBalancer:
gcloud container clusters update CLUSTER_NAME \ --disable-l4-lb-firewall-reconciliation \ --cluster-version=supported_versionSubstitua:
CLUSTER_NAME: o nome do novo cluster;VERSION: a versão do GKE.
Crie um serviço LoadBalancer externo ou interno:
Verifique se o GKE não cria uma regra de firewall de permissão de entrada para o serviço LoadBalancer. (As regras de firewall de permissão de entrada criadas automaticamente têm nomes do seguinte formato:
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]).O comando a seguir retorna uma lista de regras de firewall que contêm
k8s2:gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"A resposta só vai retornar a regra de firewall de verificação de integridade do formato
k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fwse o parâmetroexternalTrafficPolicyestiver definido comoLocal. Ele usa a porta TCP definida pelo parâmetrospec.healthCheckNodePort. Se não for especificado, o plano de controle do Kubernetes atribuirá uma porta de verificação de integridade a partir do intervalo de portas do nó.k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw default INGRESS 1000 tcp:30868 FalseSe o parâmetro
externalTrafficPolicyestiver definido comoCluster, a seguinte regra de firewall de verificação de integridade será retornada.k8s2-rkdld6go-l4-shared-hc-fw default INGRESS 1000 tcp:10256 FalsePara mais informações sobre regras de firewall geradas para serviços do GKE, consulte Regras de firewall criadas automaticamente.
Resolver problemas de conectividade
Os exemplos a seguir ilustram como usar os testes de conectividade do Network Intelligence Center para testar a conectividade com um serviço LoadBalancer externo:cluster:
Network Intelligence Center:
- No Google Cloud console, acesse o Network Intelligence Center e inicie um novo teste de conectividade.
- No menu suspenso, escolha Qualquer endereço IP público externo como origem e selecione o balanceador de carga no destino.
- Execute o teste de conectividade novamente.
A CLI gcloud:
O comando de exemplo a seguir cria e executa um teste com o endereço IP público da estação de trabalho local como origem e o endereço IP externo do balanceador de carga externo como destino:
gcloud network-management connectivity-tests create TEST_NAME \ --source-ip-address=SOURCE_IP_ADDRESS \ --source-network-type=NON_GCP_NETWORK \ --destination-ip-address=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.status.loadBalancer.ingress[0].ip}') \ --destination-port=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.spec.ports[0].targetPort}') \ --destination-network=projects/PROJECT_ID/global/networks/NETWORK_NAMESubstitua:
TEST_NAME: um nome para o teste de conectividade.SOURCE_IP_ADDRESS: o endereço IP do sistema que precisa se conectar ao serviço LoadBalancer externo. Por exemplo:LOADBALANCER_NAME: o nome do serviço LoadBalancer externo.PROJECT_ID: o ID do projeto que contém a rede VPC do cluster. Se o cluster usar uma rede VPC compartilhada, use o ID do projeto host.NETWORK_NAME: o nome da rede VPC do cluster.
Verifique os resultados do teste:
gcloud network-management connectivity-tests describe TEST_NAME
A seguir
- Saiba mais sobre políticas de firewall.
- Leia Regras de firewall criadas automaticamente para uma visão geral das regras de firewall da VPC de permissão de entrada que o GKE cria automaticamente por padrão.
- Leia Parâmetros do serviço LoadBalancer para uma descrição dos parâmetros dos serviços LoadBalancer.
- Saiba mais sobre outras regras de firewall já preenchidas em Google Cloud.
- Saiba mais sobre Como criar regras de firewall em projetos que usam a VPC compartilhada.