Instalar o serviço de gestão

Um serviço de gestão cria, atualiza e elimina clusters do GKE no AWS. Este tópico explica como criar um serviço de gestão numa nuvem virtual privada (VPC) da AWS dedicada. Se tiver uma VPC existente, consulte a secção Integração com a infraestrutura existente em alternativa.

Antes de começar

Antes de começar a usar o GKE on AWS, certifique-se de que realizou as seguintes tarefas:

  • Cumpra os pré-requisitos.
  • Autentique com a CLI do Google Cloud.
    gcloud auth login && \
        gcloud auth application-default login

Valores de que precisa

Para concluir este tópico, precisa do seguinte dos pré-requisitos:

  • ARNs ou alias da chave do KMS
  • Google Cloud chaves de contas de serviço
  • Google Cloud projeto
  • As ferramentas de linha de comandos aws, terraform e anthos-gke estão instaladas e configuradas.
  • A região da AWS e as zonas de disponibilidade onde o GKE na AWS cria o seu cluster de gestão.

Configure o serviço de gestão

Configura o serviço de gestão do GKE on AWS com um ficheiro YAML. O ficheiro assemelha-se a uma configuração de recurso personalizado do Kubernetes, mas não é uma representação de um recurso.

  1. Abra um terminal no computador onde instalou e configurou as ferramentas de linha de comandos aws, terraform e anthos-gke.

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

    mkdir anthos-aws
    cd anthos-aws
    
  3. Crie um ficheiro com o nome anthos-gke.yaml num editor de texto. Cole o seguinte conteúdo no ficheiro.

     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 com a região da AWS para executar o cluster.

    • ADMIN_AWS_IAM_ARN com o nome de recurso da Amazon do utilizador com autorizações do AWS IAM para criar um serviço de gestão. Para obter o ARN do utilizador autenticado na ferramenta aws, execute aws sts get-caller-identity.

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

    • DATABASE_KMS_KEY_ARN com o nome do recurso da Amazon da chave do AWS KMS ou o alias da chave que protege as bases de dados do seu serviço de gestão etcd, por exemplo, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    • GCP_PROJECT_ID com o ID do projeto que alberga o seu ambiente do GKE no AWS. Google Cloud

    • MANAGEMENT_KEY_PATH com a localização da sua Google Cloud chave da conta de serviço de gestão.

    • HUB_KEY_PATH com a localização da chave da conta de serviço do Google Cloud Connect.

    • NODE_KEY_PATH com a localização da chave da conta de serviço do nó do GKE on AWS.

    • VPC_CIDR_BLOCK com o intervalo total de CIDR de endereços IP para a VPC da AWS que o anthos-gke cria. Por exemplo, 10.0.0.0/16. Para mais informações, consulte o artigo Noções básicas sobre a VPC e a sub-rede na documentação da AWS.

    • ZONE_1, ZONE_2 e ZONE_3 com as zonas de disponibilidade do AWS EC2 onde quer criar nós e planos de controlo. O GKE no AWS cria sub-redes nestas zonas. Quando usa anthos-gke para gerar configuração para um cluster de utilizador, o GKE on AWS cria planos de controlo e pools de nós nestas zonas de disponibilidade, por exemplo, us-east-1a.
      Se quiser usar anthos-gke para criar clusters de utilizadores apenas numa zona, pode remover ZONE_2 e ZONE_3.

    • PRIVATE_CIDR_BLOCK_1, PRIVATE_CIDR_BLOCK_2 e PRIVATE_CIDR_BLOCK_3, com o bloco CIDR para a sua sub-rede privada. Os componentes do GKE on AWS, como o serviço de gestão, são executados na sub-rede privada. Esta sub-rede tem de estar dentro do intervalo CIDR da VPC especificado em vpcCIDRBlock. 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 sua sub-rede pública. Precisa de uma sub-rede para cada zona de disponibilidade. A sub-rede pública expõe os serviços de cluster, como balanceadores de carga, aos grupos de segurança e aos intervalos de endereços especificados nas ACLs de rede da AWS e nos grupos de segurança, por exemplo, 10.0.100.0/24.

    • SSH_CIDR_BLOCK com o bloco CIDR que permite SSH de entrada para o seu host de bastião, por exemplo, 203.0.113.0/24. Se quiser permitir o SSH a partir de qualquer endereço IP, use 0.0.0.0/0.

    • (opcional) PROXY_JSON_FILE com o caminho relativo do ficheiro de configuração do proxy. Se não estiver a usar um proxy, elimine esta linha.

  4. Execute anthos-gke aws management init para gerar um ficheiro anthos-gke.status.yaml com configuração adicional. O comando init também valida o objeto AWSManagementService no seu ficheiro anthos-gke.yaml.

    anthos-gke aws management init
    
  5. Execute o comando anthos-gke aws management apply para criar o serviço de gestão no AWS.

    anthos-gke aws management apply
    

    O comando anthos-gke aws management apply pode demorar até dez minutos a ser concluído. Após a conclusão do comando, o serviço de gestão é executado na AWS.

Campos opcionais

O ficheiro anthos-gke.yaml acima mostra um conjunto típico de campos que a maioria dos clientes vai precisar. A configuração em anthos-gke.yaml também suporta vários campos opcionais. Por exemplo:

  • spec.bootstrapS3Bucket para especificar um contentor do AWS S3 para dados de configuração do GKE no AWS
  • spec.tags para etiquetar recursos da AWS relacionados com o cluster
  • spec.securityGroupIDs para atribuir IDs de grupos de segurança adicionais ao cluster de gestão
  • spec.*Volume e os respetivos subcampos volumeType, iops e kmsKeyARN para ajustar os parâmetros de volume do EBS
  • spec.terraform.stateGCSBucket para especificar um contentor do Google Cloud Service para dados de configuração do Terraform

Para mais informações sobre todos os campos suportados em anthos-gke.yaml, consulte a referência do serviço de gestão da AWS.

Estabeleça ligação ao serviço de gestão

Em seguida, use anthos-gke para se ligar e autenticar no seu serviço de gestão do GKE na AWS.

Quando cria um serviço de gestão com as definições predefinidas, o plano de controlo tem um endereço IP privado que não é acessível a partir do exterior da VPC da AWS. Pode aceder ao seu serviço de gestão de uma das seguintes três formas:

  • através do serviço AWS Direct Connect da Amazon
  • através de um anfitrião bastion que encaminha as ligações entre a Internet e as suas sub-redes do GKE no AWS
  • através de uma VPN

Quando cria um serviço de gestão numa VPC dedicada, o GKE on AWS cria automaticamente um anfitrião de bastion numa sub-rede pública. Se estiver a estabelecer ligação ao serviço de gestão através de uma VPN ou do AWS Direct Connect, este anfitrião de bastion não é necessário. Caso contrário, para se ligar ao seu serviço de gestão através do host bastion, siga estes passos:

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

    Terraform 0.12 e 0.13

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

    Terraform 0.14.3 ou superior

    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 anfitrião bastion em ~/.ssh/anthos-gke.

  2. Para abrir o túnel, execute o script bastion-tunnel.sh. O túnel encaminha de localhost:8118 para o anfitrião de bastião.

    Para abrir um túnel para o anfitrião bastion, execute o seguinte comando:

    ./bastion-tunnel.sh -N -4
    

    As mensagens do túnel SSH aparecem nesta janela. Quando estiver pronto para fechar a ligação, pare o processo com Control+C ou fechando a janela.

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

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

    anthos-gke aws management get-credentials
    
  5. Verifique se consegue estabelecer ligação ao serviço de gestão com kubectl.

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

    O resultado inclui o URL do servidor da API do serviço de gestão.

O que se segue?