Como instalar o serviço de gerenciamento

Um serviço de gerenciamento cria, atualiza e exclui clusters do Anthos em clusters da AWS (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 clusters do Anthos na AWS, verifique se você realizou as tarefas a seguir:

  • 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 da AWS e as zonas de disponibilidade em que os clusters do Anthos na AWS criam o cluster de gerenciamento.

Configurar o serviço de gerenciamento

Configure o serviço de gerenciamento dos clusters do Anthos na 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 dos clusters do Anthos na AWS e mude para ele. A documentação dos clusters do Anthos na AWS usam anthos-aws como o 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 Anthos.

    • 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 dos clusters do Anthos na chave da conta de serviço do nó da AWS;

    • VPC_CIDR_BLOCK pelo intervalo total de CIDR (em inglês) 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 (em inglês) na documentação da AWS.

    • ZONE_1, ZONE_2 e ZONE_3 com as zonas de disponibilidade (em inglês) de EC2 da AWS em que você quer criar nós e planos de controle. Os clusters do Anthos na AWS criam sub-redes nessas zonas. Quando você usa anthos-gke para gerar a configuração de um cluster de usuário, os clusters do Anthos na AWS criam 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 de clusters do Anthos na AWS, como o serviço de gerenciamento, são executados na sub-rede particular. 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 elas:

  • spec.bootstrapS3Bucket para especificar um bucket S3 da AWS para clusters do Anthos em 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 o serviço de gerenciamento de clusters do Anthos na 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 meio de um host bastion que envia proxies entre a Internet e os clusters do Anthos em sub-redes da AWS
  • por meio de uma VPN

Quando você cria um serviço de gerenciamento em uma VPC dedicada, os clusters do Anthos na AWS criam 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 dos clusters do Anthos 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