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
eanthos-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.
Abra um terminal no computador onde você instalou e configurou as ferramentas de linha de comando
aws
,terraform
eanthos-gke
.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
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
, executeaws 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, executeaws 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 usaranthos-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, use0.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.
Execute
anthos-gke aws management init
para gerar um arquivoanthos-gke.status.yaml
com configurações adicionais. O comandoinit
também valida o objetoAWSManagementService
no seu arquivoanthos-gke.yaml
.anthos-gke aws management init
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:
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
.Para abrir o túnel, execute o script
bastion-tunnel.sh
. O túnel encaminha delocalhost: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.
Abra um novo terminal e altere o diretório para o diretório com sua configuração do GKE na AWS.
Gere um
kubeconfig
para autenticação. Useanthos-gke
para anexar credenciais à sua configuração armazenada em~/.kube/config
.anthos-gke aws management get-credentials
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
- Crie um cluster de usuários .
- Use um proxy com o GKE na AWS.
- Altere sua configuração
kubectl
para se conectar ao GKE na AWS com menos opções de linha de comando.