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
eanthos-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.
Abra um terminal no computador onde instalou e configurou as ferramentas de linha de comandos
aws
,terraform
eanthos-gke
.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
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
, executeaws 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, executeaws 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 usaranthos-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, use0.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.
Execute
anthos-gke aws management init
para gerar um ficheiroanthos-gke.status.yaml
com configuração adicional. O comandoinit
também valida o objetoAWSManagementService
no seu ficheiroanthos-gke.yaml
.anthos-gke aws management init
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:
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
.Para abrir o túnel, execute o script
bastion-tunnel.sh
. O túnel encaminha delocalhost: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.
Abra um novo terminal e mude o diretório para o diretório com a sua configuração do GKE on 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 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?
- Crie um cluster de utilizadores.
- Use um proxy com o GKE na AWS.
- Altere a
kubectl
configuração para se ligar ao GKE no AWS com menos opções de linha de comandos.