Instalando o serviço de gerenciamento

Um serviço de gerenciamento cria, atualiza e exclui clusters do GKE na AWS. Este tópico explica como criar um serviço de gerenciamento dentro de uma Nuvem Privada Virtual (VPC) dedicada da AWS. Se você já tiver uma VPC, consulte Integração com a infraestrutura existente .

Antes de começar

Antes de começar a usar o GKE na AWS, certifique-se de ter executado as seguintes tarefas:

  • Conclua os pré-requisitos .
  • Autentique com o Google Cloud CLI.
    gcloud auth login && \
        gcloud auth application-default login

Valores que você precisa

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

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

Configure seu serviço de gerenciamento

Configure seu serviço de gerenciamento do GKE na AWS com um arquivo YAML. O arquivo se assemelha a uma configuração de recurso personalizada do Kubernetes, mas não é uma representação de um recurso.

  1. Abra um terminal no computador onde 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 acesse-o. A documentação do GKE na AWS usa anthos-aws como 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 seguinte conteúdo 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 com a região da AWS para executar seu cluster.

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

    • KMS_KEY_ARN com o nome de recurso da Amazon da chave KMS da AWS ou alias da chave KMS que protege os dados do seu 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 com o nome do recurso da Amazon da chave do AWS KMS ou alias da chave que protege os bancos de dados etcd do seu serviço de gerenciamento — por exemplo, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab .

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

    • MANAGEMENT_KEY_PATH com a localização do seuGoogle Cloud chave da conta do serviço de gerenciamento.

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

    • NODE_KEY_PATH com o local da sua chave de conta de serviço do nó do GKE na AWS.

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

    • ZONE_1 , ZONE_2 e ZONE_3 com as zonas de disponibilidade do AWS EC2 onde você deseja 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 quiser usar anthos-gke para criar clusters de usuários em apenas uma zona, você 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 sua sub-rede privada. Os componentes do GKE na AWS, como o serviço de gerenciamento, são executados na sub-rede privada. Essa sub-rede deve 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 para sua sub-rede pública. Você precisa de uma sub-rede para cada zona de disponibilidade. A sub-rede pública expõe serviços de cluster, como balanceadores de carga, aos grupos de segurança e intervalos de endereços especificados nas ACLs de rede e grupos de segurança da AWS — por exemplo, 10.0.100.0/24 .

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

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

  4. Execute anthos-gke aws management init para gerar um arquivo anthos-gke.status.yaml com configurações adicionais. O comando init também valida o objeto AWSManagementService no seu 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. Após a conclusão do comando, seu serviço de gerenciamento será executado na AWS.

Campos opcionais

O arquivo anthos-gke.yaml acima mostra um conjunto típico de campos que a maioria dos clientes precisará. A configuração em anthos-gke.yaml também suporta diversos campos opcionais. Entre eles:

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

Para obter mais informações sobre todos os campos suportados em anthos-gke.yaml , consulte a referência do AWS Management Service .

Conecte-se ao serviço de gerenciamento

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

Ao criar um serviço de gerenciamento usando as configurações padrão, o plano de controle terá um endereço IP privado que não pode ser acessado de fora da VPC da AWS. Você pode acessar seu serviço de gerenciamento de uma das três maneiras a seguir:

  • por meio do serviço AWS Direct Connect da Amazon
  • por meio de um host bastião que faz proxy de conexões entre a Internet e seu GKE em sub-redes da AWS
  • através de uma VPN

Ao criar 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 seu 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 seu 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 host Bastion. 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 host 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 host bastion.

    Para abrir um túnel para o host bastião, execute o seguinte comando:

    ./bastion-tunnel.sh -N -4
    

    As mensagens do túnel SSH aparecem nesta janela. Quando estiver pronto para encerrar 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 sua configuração do GKE na 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 você consegue se conectar ao serviço de gerenciamento com kubectl .

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

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

O que vem a seguir