Como usar um proxy com o GKE na AWS

Este tópico mostra como rotear o tráfego do serviço de gerenciamento do GKE na AWS e do Connect por meio de um proxy HTTP/HTTPS.

O GKE na AWS requer acesso à Internet pelos seguintes motivos:

  • O serviço de gerenciamento registra clusters de usuário com o Connect.
  • Os clusters de usuário executam o agente do Connect.
  • Todos os serviços de gerenciamento de cluster e nós de cluster de usuários fazem o download de imagens do Container Registry.

É possível rotear esse tráfego por meio de um proxy HTTP ou HTTPS. A partir do GKE na AWS 1.8, é possível definir configurações de proxy individuais para o serviço de gerenciamento e para cada um dos clusters. Para mais informações sobre como alterar as configurações de proxy, consulte Como alterar as configurações de proxy do cluster.

Você declara as configurações do proxy em um arquivo JSON que é referenciado em anthos-gke.yaml.

Pré-requisitos

Antes de configurar o GKE na AWS para usar um proxy, você precisa ativar os endpoints da VPC da AWS, definir um grupo de segurança para o proxy e permitir conexões de saída com determinados serviços do Google Cloud.

Para usar um proxy HTTP, seus clusters de usuário precisam executar o Kubernetes 1.17 ou posterior.

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 da AWS para os quais o GKE na AWS requer endpoints de VPC, com o tipo de endpoint e os Grupos de segurança para cada componente do GKE no AWS que requer acesso ao endpoint.

Serviço Tipo de endpoint Grupos de segurança
Escalonamento automático Interface Gerenciamento, plano de controle, pools de nós
EC2 Interface Gerenciamento, plano de controle, pools de nós
Balanceamento de carga Interface Gerenciamento, plano de controle, pools de nós
Serviço de gerenciamento de chaves Interface Gerenciamento, plano de controle, pools de nós
S3 Gateway Gerenciamento, plano de controle, pools de nós
Serviço de token de segurança (STS) Interface Gerenciamento, 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

Os componentes do GKE em AWS precisam ser capazes de se conectar ao servidor proxy. 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

Permitir conexões de saída com os serviços do Google Cloud

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:

  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • oauth2.googleapis.com
  • storage.googleapis.com
  • www.googleapis.com
  • gcr.io
  • k8s.gcr.io
  • EC2-REGION.ec2.archive.ubuntu.com

Substitua EC2-REGION pela região do AWS EC2 em que a instalação do GKE na AWS é executada. Por exemplo, us-west-1.ec2.archive.ubuntu.com/.

Se você estiver usando o Anthos Service Mesh com Prometheus e o Kiali, permita o acesso de saída dos seguintes domínios:

  • docker.io
  • quay.io

Como criar o arquivo JSON de configuração de proxy

O arquivo JSON de configuração de proxy contém um objeto que contém três pares de chave-valor, com os nomes de chave httpProxy, httpsProxy e noProxy. Os nomes de usuário e as senhas são criptografados por envelope com sua chave do KMS da AWS antes de serem aplicados ao servidor.

{
  "httpProxy": "HTTP_PROXY",
  "httpsProxy": "HTTPS_PROXY",
  "noProxy": "NO_PROXY"
}

Substitua:

  • HTTP_PROXY pelo endereço do servidor proxy para rotear solicitações HTTP;
  • HTTPS_PROXY pelo servidor proxy para encaminhar solicitações HTTPS.
  • NO_PROXY com uma lista opcional de IPs, intervalos CIDR e domínios em que o proxy não é usado.

Para mais informações, consulte a Referência de configuração. Por exemplo, a configuração a seguir usa um proxy em 10.0.0.254 e exclui vários sites.

{
  "httpProxy": "http://user:password@10.0.0.254:80",
  "httpsProxy": "http://user:password@10.0.0.254:443",
  "noProxy": "localhost,127.0.0.1,169.254.169.254,10.0.0.0/16,example.com"
}

Como adicionar o proxy a anthos-gke.yaml

Configure o AWSManagementService executando as seguintes etapas:

  1. Mude para o diretório com o GKE na configuração da AWS. Você criou esse diretório ao instalar o serviço de gerenciamento.

    cd anthos-aws

  2. Abra anthos-gke.yaml em um editor de texto. Adicione um valor para spec.proxy como no exemplo a seguir.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
      name: management
    spec:
      version: aws-1.14.1-gke.0
      proxy: PROXY_JSON_FILE
      securityGroupIDs:
      - SECURITY_GROUP_ID
      ...
    

    Substitua:

    • PROXY_JSON_FILE pelo caminho relativo da configuração JSON do proxy.
    • SECURITY_GROUP_ID pelo código de um grupo de segurança com acesso ao servidor proxy

    Salve o arquivo.

  3. Execute anthos-gke aws management init para gerar um arquivo anthos-gke.status.yaml com configuração extra. O comando init também valida o objeto AWSManagementService no arquivo anthos-gke.yaml.

    anthos-gke aws management init
    
  4. Execute anthos-gke aws management apply para atualizar o serviço de gerenciamento na AWS.

    anthos-gke aws management apply
    
  5. Em seguida, crie um cluster de usuários. Inclua o grupo de segurança do proxy no spec.controlPlane.securityGroupIDs e spec.securityGroupIDs de AWSCluster e AWSNodePool, respectivamente. O cluster então terá acesso ao proxy.

Referência de configuração

Campo Descrição Exemplo Obrigatório
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" Sim
httpsProxy Um URL de proxy para tráfego HTTPS criptografado. O URL httpProxy será usado se httpsProxy não for fornecido. "http://user:password@10.101.16.31:80" Não
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 um subdomínio é obrigatório. Um único asterix * indica que não é necessário fazer proxy. "1.2.3.4,10.0.0.0/16,example.com,.site.com" Não

A seguir

Para mais informações sobre como concluir um GKE na instalação da AWS, consulte:

Para informações sobre como alterar as configurações de proxy do cluster, consulte: