Usar um proxy HTTP

Neste documento, mostramos como rotear o tráfego do GKE na AWS por meio de um proxy HTTP/HTTPS. Você especifica a configuração do proxy ao criar um cluster.

Visão geral

O GKE na AWS pode rotear o tráfego de saída da Internet por um proxy pelos seguintes motivos:

  • Para registrar clusters com Google Cloud no Connect
  • Executar o agente do Connect
  • Para fazer o download de imagens do Container Registry

Limitações

  • Os campos httpProxy e httpsProxy não são compatíveis com URLs que começam com https://. Você precisa usar http://. As solicitações para a porta 443 usam HTTPS.
  • Defina valores para httpProxy, httpsProxy e noProxy.
  • Talvez seja necessário adicionar outros domínios, IPs ou CIDRs ao campo noProxy. Recomendamos adicionar o intervalo de IP da VPC. A partir da versão 1.22 do Google Kubernetes Engine, o GKE na AWS adiciona automaticamente o CIDR de endereço de pod e o CIDR de endereço de serviço.

Pré-requisitos

Nesta seção, descrevemos os pré-requisitos que você precisa aplicar antes de usar um proxy.

Ativar endpoints da VPC

Antes de configurar um proxy, é preciso criar endpoints de VPC para a instalação do GKE na AWS.

Os endpoints de VPC permitem que os recursos em sub-redes particulares acessem serviços da AWS sem acesso público à Internet.

A tabela a seguir lista os serviços do AWS para os quais o GKE na AWS exige endpoints VPC, juntamente com o tipo de endpoint e os grupos de segurança que exigem acesso ao endpoint.

Serviço Tipo de endpoint Grupos de segurança
Escalonamento automático Interface Plano de controle, pools de nós
EC2 Interface Plano de controle, pools de nós
EFS Interface Plano de controle
Balanceamento de carga Interface Plano de controle, pools de nós
Serviço de gerenciamento de chaves Interface Plano de controle, pools de nós
S3 Gateway Plano de controle, pools de nós
Gerenciador de secrets Interface Plano de controle, pools de nós
Serviço de token de segurança (STS) Interface Plano de controle, pools de nós

É possível criar endpoints a partir do Console da VPC da AWS. As opções definidas durante a criação de endpoints da VPC dependem da configuração da VPC.

Definir um grupo de segurança

O GKE na AWS precisa se conectar ao servidor proxy para fazer o download de componentes de software. Crie ou localize um grupo de segurança da AWS que permita conexões de saída com seu servidor proxy. O grupo de segurança permite acesso de saída dos grupos de segurança de gerenciamento, plano de controle e pool de nós para o endereço e a porta do proxy. Salve o código deste grupo de segurança (por exemplo, sg-12345678).

Tipo Protocolo Da porta Para fazer a portabilidade Address
Saída TCP Porta do proxy: Porta do proxy: Grupo de segurança de proxy

Lista de permissões de proxy

Para que o GKE na AWS se conecte aos serviços do Google Cloud, o servidor proxy precisa permitir o tráfego para os seguintes domínios:

.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com

Substitua GCP_LOCATION pela Google Cloud região em que o cluster do GKE Enterprise reside. Especifique us-west1 ou outra região compatível.

Atualizar papéis do IAM da AWS

Para que o GKE na AWS leia a configuração de proxy do AWS Secrets Manager, adicione o secretsmanager:GetSecretValue ao papel do plano de controle e ao papel do pool de nós do cluster.

Para adicionar essa permissão, adicione-a ao plano de controle e à política do pool de nós. Para mais informações, consulte Como editar políticas do IAM.

Criar um arquivo de configuração de proxy

A configuração do proxy é armazenada em um secret do AWS Secrets Manager como uma string JSON. É possível passar essa configuração para a ferramenta de linha de comando aws como um arquivo. Esta seção descreve como criar esse arquivo.

A tabela a seguir descreve o conteúdo desse arquivo.

Field Descrição Exemplos Valor
httpProxy Um URL do servidor proxy. O valor precisa incluir um nome do host/endereço IP e, opcionalmente, uma porta, nome de usuário e senha. "http://user:password@10.184.37.42:80"
"10.184.37.42"
Sim
httpsProxy Um URL de proxy para tráfego HTTPS criptografado. O URL httpProxy será usado se httpsProxy tiver um valor vazio. "http://10.101.16.31:80" Yes
noProxy Uma lista de URLs separados por vírgulas a serem excluídos do proxy. Cada valor pode ser um endereço IP, um intervalo CIDR, um nome de domínio ou o caractere asterisco (*). Os domínios especificados com um ponto inicial (por exemplo, ".google.com") indicam que é necessário um subdomínio. Um asterisco * ignora todas as configurações de proxy. "1.2.3.4,10.0.0.0/16,example.com,.site.com" Sim
  1. Para criar o arquivo de configuração, crie um arquivo JSON que contenha valores para chaves httpProxy, noProxy e httpsProxy opcionais.

    {
      "httpProxy": "AUTHENTICATION_URL",
      "httpsProxy": "AUTHENTICATION_URL",
      "noProxy": "NO_PROXY_ADDRESSES"
    }
    

    Substitua:

    • AUTHENTICATION_URL: URL codificado que contém o nome de usuário do proxy e a senha
    • NO_PROXY_ADDRESSES: lista separada por vírgulas de blocos CIDR e URLs, por exemplo, 10.0.0.0/16,http://example.com

    Salve o arquivo para usar na próxima seção.

  2. Crie um secret com esses dados JSON como um secret no AWS Secrets Manager usando a ferramenta de linha de comando aws.

    aws secretsmanager create-secret \
    --name SECRET_NAME \
    --secret-string file://PROXY_CONFIGURATION_FILE
    

    Substitua:

    • SECRET_NAME: o nome do novo secret
    • PROXY_CONFIGURATION_FILE: o caminho para o arquivo de configuração de proxy.

    A saída inclui o nome do recurso Amazon (ARN) e o conteúdo do secret. Agora você pode referir-se a esse secret ao criar um cluster.

Criar um cluster que use um proxy

Para configurar o GKE na AWS para usar um proxy HTTP para conectividade de saída, siga estas etapas:

Siga as etapas em Criar um cluster e transmita as sinalizações proxy-secret-arn e proxy-secret-version-id.

gcloud container aws clusters create CLUSTER_NAME \
  --proxy-secret-arn=PROXY_SECRET_ARN \
  --proxy-secret-version-id=PROXY_SECRET_VERSION \

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • PROXY_SECRET_ARN: o ARN do secret que contém configurações de proxy, por exemplo, arn:aws::secretsmanager:us-east-2:111122223333:secret:example/ExampleSecret-jiObOV
  • PROXY_SECRET_VERSION: o ID da versão dos secrets, por exemplo, EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE;

Atualizar configuração de proxy

É possível atualizar a configuração de proxy de um plano de controle de cluster ou de um pool de nós. Para atualizar o ARN da configuração de proxy, primeiro você precisa atualizar o papel do IAM do AWS ou do pool de nós do plano de controle.

Atualizar papéis do IAM da AWS

Antes de alterar o ARN em que a configuração de proxy está armazenada, você precisa confirmar se o papel do plano de controle e o papel do pool de nós do cluster têm acesso de leitura ao ARN secreto. Se a instrução do IAM com a permissão secretsmanager:GetSecretValue estiver no escopo de ARNs de recursos específicos, adicione o novo ARN secreto a essa lista antes de atualizar a configuração de proxy.

Atualizar configuração de proxy do cluster

Para atualizar a configuração de proxy do cluster, use a CLI do Google Cloud.

gcloud container aws clusters update  CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --proxy-secret-arn=PROXY_SECRET_ARN \
    --proxy-secret-version-id=PROXY_SECRET_VERSION

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_LOCATION: a região Google Cloud com suporte que gerencia seu cluster
  • PROXY_SECRET_ARN: o ARN do secret que contém configurações de proxy
  • PROXY_SECRET_VERSION: o ID da versão dos secrets, por exemplo, EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE;

Atualizar configuração de proxy do pool de nós

Para atualizar a configuração de proxy do pool de nós, use a Google Cloud CLI.

gcloud container aws node-pools update NODE_POOL_NAME
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --proxy-secret-arn=PROXY_SECRET_ARN \
    --proxy-secret-version-id=PROXY_SECRET_VERSION

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós
  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_LOCATION: a região Google Cloud com suporte que gerencia seu cluster
  • PROXY_SECRET_ARN: o ARN do secret que contém configurações de proxy
  • PROXY_SECRET_VERSION: o ID da versão dos secrets, por exemplo, EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE;

Remover configuração de proxy

É possível remover a configuração de proxy do plano de controle ou dos pools de nós do cluster. Essas operações são independentes. Remover a configuração do plano de controle não a remove dos pools de nós do cluster.

Remover a configuração de proxy do plano de controle

Para remover a configuração de proxy do plano de controle do cluster, use a Google Cloud CLI.

gcloud container aws clusters update  CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --clear-proxy-config

Substitua:

Remover configuração de proxy do pool de nós

Para remover a configuração de proxy de um pool de nós, use a Google Cloud CLI.

gcloud container aws node-pools update NODE_POOL_NAME
  --cluster CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --clear-proxy-config

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós
  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_LOCATION: a região Google Cloud com suporte que gerencia seu cluster, por exemplo, us-west1

A seguir