Como instalar o serviço de gerenciamento

Um serviço de gerenciamento cria, atualiza e exclui clusters do GKE na AWS. Neste tópico, explicamos como criar um serviço de gerenciamento em uma nuvem privada virtual (VPC) da AWS. Se você já tiver uma VPC, consulte Como integrar à infraestrutura atual.

Antes de começar

Antes de começar a usar o GKE na AWS, verifique se você executou as seguintes tarefas:

  • Concluir os pré-requisitos.
  • Fazer a autenticação com a Google Cloud CLI.
    gcloud auth login && \
        gcloud auth application-default login

Valores necessários

Para concluir este tópico, é necessário atender aos seguintes pré-requisitos:

  • ARNs de chave KMS ou aliases
  • Chaves da conta de serviço do Google Cloud
  • Projeto do Google Cloud
  • Ter as ferramentas de linha de comando aws, terraform e anthos-gke instaladas e configuradas.
  • A região e as zonas de disponibilidade da AWS em que o GKE na AWS cria o cluster de gerenciamento.

Configurar o serviço de gerenciamento

Configure o GKE no serviço de gerenciamento da AWS com um arquivo YAML. O arquivo se parece com uma configuração de recurso personalizado do Kubernetes, mas não é uma representação de um recurso.

  1. Abra um terminal no computador em que você instalou e configurou as ferramentas de linha de comando aws, terraform e anthos-gke.

  2. Crie um diretório vazio para a configuração do GKE na AWS e mude para esse diretório. A documentação do GKE na AWS usa anthos-aws como um diretório de configuração de exemplo.

    mkdir anthos-aws
    cd anthos-aws
    
  3. Crie um arquivo chamado anthos-gke.yaml em um editor de texto. Cole o conteúdo a seguir no arquivo.

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       dedicatedVPC:
         vpcCIDRBlock: VPC_CIDR_BLOCK
         availabilityZones:
         - ZONE_1
         - ZONE_2
         - ZONE_3
         privateSubnetCIDRBlocks:
         - PRIVATE_CIDR_BLOCK_1
         - PRIVATE_CIDR_BLOCK_2
         - PRIVATE_CIDR_BLOCK_3
         publicSubnetCIDRBlocks:
         - PUBLIC_CIDR_BLOCK_1
         - PUBLIC_CIDR_BLOCK_2
         - PUBLIC_CIDR_BLOCK_3
       # Optional
       bastionHost:
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
       proxy: PROXY_JSON_FILE # optional
    

    Substitua os seguintes valores:

    • AWS_REGION pela região da AWS para executar o cluster.

    • ADMIN_AWS_IAM_ARN pelo nome de recurso da Amazon do usuário com permissões do IAM da AWS para criar um serviço de gerenciamento. Para conseguir o ARN do usuário autenticado na ferramenta aws, execute aws sts get-caller-identity.

    • KMS_KEY_ARN pelo nome de recurso da Amazon da chave de KMS da AWS ou do alias de chave do KMS que protege os dados do serviço de gerenciamento durante a criação. Por exemplo, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. Se você não tiver o ARN, execute aws kms list-keys para recuperar uma lista de ARNs.

    • DATABASE_KMS_KEY_ARN pelo nome de recurso da Amazon da chave de KMS da AWS ou alias de chave que protege os bancos de dados etcd do serviço de gerenciamento. Por exemplo: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    • GCP_PROJECT_ID pelo ID do projeto do Google Cloud que hospeda o ambiente do GKE Enterprise.

    • MANAGEMENT_KEY_PATH pelo local da chave da conta de serviço de gerenciamento do Google Cloud.

    • HUB_KEY_PATH pelo local da chave da conta de serviço do Google Cloud Connect.

    • NODE_KEY_PATH pela localização da chave da conta de serviço do nó do GKE na AWS.

    • VPC_CIDR_BLOCK pelo intervalo total de CIDR dos endereços IP para VPC da AWS que anthos-gke cria. Por exemplo, 10.0.0.0/16. Para mais informações, consulte Princípios básicos de VPC e sub-rede na documentação da AWS.

    • ZONE_1, ZONE_2 e ZONE_3 com as zonas de disponibilidade de EC2 da AWS em que você quer criar nós e planos de controle. O GKE na AWS cria sub-redes nessas zonas. Quando você usa anthos-gke para gerar a configuração de um cluster de usuário, o GKE na AWS cria planos de controle e pools de nós nessas zonas de disponibilidade. Por exemplo: us-east-1a.
      Se você quiser usar anthos-gke para criar clusters de usuários em apenas uma zona, remova ZONE_2 e ZONE_3.

    • PRIVATE_CIDR_BLOCK_1, PRIVATE_CIDR_BLOCK_2 e PRIVATE_CIDR_BLOCK_3, com o bloco CIDR da sub-rede privada. Os componentes do GKE em AWS, como o serviço de gerenciamento, são executados na sub-rede privada. Essa sub-rede precisa estar dentro do intervalo CIDR da VPC especificado em vpcCIDRBlock. Você precisa de uma sub-rede para cada zona de disponibilidade. Por exemplo, 10.0.1.0/24.

    • PUBLIC_CIDR_BLOCK_1, PUBLIC_CIDR_BLOCK_2 e PUBLIC_CIDR_BLOCK_3, com os blocos CIDR da sub-rede pública. Você precisa de uma sub-rede para cada zona de disponibilidade. A sub-rede pública mostra serviços de cluster, como balanceadores de carga para os grupos de segurança e intervalos de endereços especificados nas ACLs de rede da AWS e grupos de segurança. Por exemplo: 10.0.100.0/24.

    • SSH_CIDR_BLOCK pelo bloco CIDR que permite o SSH de entrada para o Bastion Host. Por exemplo, 203.0.113.0/24. Se quiser permitir o SSH de qualquer endereço IP, use 0.0.0.0/0.

    • (opcional) PROXY_JSON_FILE pelo caminho relativo do arquivo de configuração de proxy. Se você não estiver usando um proxy, exclua essa linha.

  4. 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
    
  5. Execute anthos-gke aws management apply para criar o serviço de gerenciamento na AWS.

    anthos-gke aws management apply
    

    O comando anthos-gke aws management apply pode levar até dez minutos para ser concluído. Depois que o comando for concluído, o serviço de gerenciamento será executado na AWS.

Campos opcionais

O arquivo anthos-gke.yaml acima mostra um conjunto típico de campos que serão necessários para a maioria dos clientes. A configuração em anthos-gke.yaml também é compatível com vários campos opcionais. São eles:

  • spec.bootstrapS3Bucket para especificar um bucket do AWS S3 para o GKE nos dados de configuração da AWS
  • spec.tags para marcar recursos da AWS relacionados ao cluster
  • spec.securityGroupIDs para atribuir outros códigos de grupo de segurança ao cluster de gerenciamento
  • spec.*Volume e os subcampos volumeType, iops e kmsKeyARN para ajustar os parâmetros de volume do EBS
  • spec.terraform.stateGCSBucket para especificar um bucket de serviço do Google Cloud para dados de configuração do Terraform

Para mais informações sobre todos os campos compatíveis com anthos-gke.yaml, consulte a referência do Serviço de gerenciamento da AWS.

Conectar-se ao serviço de gerenciamento

Em seguida, use anthos-gke para se conectar e autenticar seu GKE no serviço de gerenciamento da AWS.

Quando você cria um serviço de gerenciamento usando as configurações padrão, o plano de controle tem um endereço IP particular que não pode ser acessado de fora da VPC da AWS. É possível acessar o serviço de gerenciamento de uma destas três maneiras:

  • por meio do serviço AWS Direct Connect da Amazon;
  • por um bastion host que faz proxy das conexões entre a Internet e as sub-redes do GKE na AWS;
  • por meio de uma VPN

Quando você cria um serviço de gerenciamento em uma VPC dedicada, o GKE na AWS cria automaticamente um Bastion Host em uma sub-rede pública. Se você estiver se conectando ao serviço de gerenciamento por meio de uma VPN ou do AWS Direct Connect, esse Bastion Host não será necessário. Caso contrário, para se conectar ao serviço de gerenciamento por meio do Bastion Host, siga estas etapas:

  1. Use a ferramenta terraform para gerar o script que abre um túnel SSH para o Bastion Host. Escolha sua versão do Terraform e execute os seguintes comandos:

    Terraform 0.12, 0.13

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform 0.14.3+

    terraform output -raw bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    O Terraform cria o script bastion-tunnel.sh que faz referência à chave SSH do Bastion Host em ~/.ssh/anthos-gke.

  2. Para abrir o túnel, execute o script bastion-tunnel.sh. O túnel encaminha do localhost:8118 para o Bastion Host.

    Para abrir um túnel para o Bastion Host, execute o seguinte comando:

    ./bastion-tunnel.sh -N -4
    

    As mensagens do túnel SSH aparecem nessa janela. Quando estiver pronto para fechar a conexão, interrompa o processo usando Control+C ou fechando a janela.

  3. Abra um novo terminal e altere o diretório para o diretório com a configuração do GKE na AWS.

  4. Gere um kubeconfig para autenticação. Use anthos-gke para anexar credenciais à configuração armazenada em ~/.kube/config.

    anthos-gke aws management get-credentials
    
  5. Verifique se você consegue se conectar ao serviço de gerenciamento com kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    A saída inclui o URL do servidor da API de serviço de gerenciamento.

A seguir