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
eanthos-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.
Abra um terminal no computador em que 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 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
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
, executeaws 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, executeaws 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 usaranthos-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, use0.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.
Execute
anthos-gke aws management init
para gerar um arquivoanthos-gke.status.yaml
com configuração extra. O comandoinit
também valida o objetoAWSManagementService
no 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. 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:
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
.Para abrir o túnel, execute o script
bastion-tunnel.sh
. O túnel encaminha dolocalhost: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.
Abra um novo terminal e altere o diretório para o diretório com a configuração do GKE na AWS.
Gere um
kubeconfig
para autenticação. Useanthos-gke
para anexar credenciais à 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 o URL do servidor da API de serviço de gerenciamento.
A seguir
- Crie um cluster de usuários.
- Usar um proxy com o GKE na AWS.
- Altere sua configuração de
kubectl
para se conectar ao GKE na AWS com menos opções de linha de comando.