Neste tópico, configura uma nuvem virtual privada (VPC) da AWS existente com sub-redes públicas e privadas e executa anthos-gke
para concluir a instalação de um serviço de gestão.
Antes de começar
Para concluir os passos seguintes, precisa do seguinte:
Autorizações do AWS IAM, conforme descrito nos requisitos.
Um VPC da AWS existente com:
- Pelo menos, uma sub-rede pública.
- Pelo menos, uma sub-rede privada.
- Um gateway de Internet com um trajeto para a sub-rede pública.
- Um gateway NAT com um encaminhamento para a sub-rede privada.
- Nomes de anfitrião DNS ativados.
- Nenhum valor personalizado de
domain-name
nos seus conjuntos de opções de DHCP. Para mais informações, consulte a secção Resolução de problemas. O GKE on AWS não suporta valores que não sejam os nomes de domínio do EC2 predefinidos.
Para mais informações sobre a configuração da sua VPC da AWS, consulte o artigo VPC com sub-redes públicas e privadas.
Os IDs de sub-redes públicas e privadas da sua VPC existente. Por exemplo,
subnet-1234567890abcdefg
.Para versões de clusters 1.20 ou inferiores, um grupo de segurança da AWS que permite a entrada de SSH (porta 22) a partir dos grupos de segurança ou dos intervalos de IP onde vai gerir a sua instalação do GKE na AWS.
Para versões de clusters 1.21 ou superiores, um grupo de segurança da AWS que permite ligações de saída da Konnectivity (porta 8132) a partir dos intervalos de IP da VPC que alojam os seus node pools do GKE na AWS.
Criar o espaço de trabalho
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 securityGroupIDs: - SECURITY_GROUP_IDS googleCloud: projectID: GCP_PROJECT_ID serviceAccountKeys: managementService: MANAGEMENT_KEY_PATH connectAgent: HUB_KEY_PATH node: NODE_KEY_PATH existingVPC: subnetID: VPC_SUBNET_ID allowedSSHSecurityGroupIDs: - SSH_SECURITY_GROUP # Optional fields rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE iops: ROOT_VOLUME_IOPS kmsKeyARN: ROOT_VOLUME_KEY bastionHost: subnetID: BASTION_HOST_SUBNET_ID allowedSSHCIDRBlocks: - SSH_CIDR_BLOCK rootVolume: # Optional kmsKeyARN: BASTION_VOLUME_KEY proxy: PROXY_JSON_FILE
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 da chave do AWS IAM do administrador.
- KMS_KEY_ARN com o nome de recurso da Amazon da chave do AWS KMS que protege os dados do seu serviço de gestão quando o serviço de gestão é criado.
- DATABASE_KMS_KEY_ARN com o nome de recurso da Amazon da
chave do AWS KMS que
protege as suas bases de dados
etcd
. - SECURITY_GROUP_IDS com IDs de grupos de segurança adicionais que permitem o acesso às suas VMs de serviço de gestão.
- GCP_PROJECT_ID com o Google Cloud projeto que aloja o seu ambiente do GKE na AWS.
- MANAGEMENT_KEY_PATH com a localização da sua Google Cloud conta de serviço de gestão.
- HUB_KEY_PATH com a localização da sua Google Cloud Associar chave da conta de serviço.
- NODE_KEY_PATH com a localização da chave da conta de serviço do nó do GKE on AWS.
- VPC_SUBNET_ID com o ID da sub-rede onde o serviço de gestão é executado.
- SSH_SECURITY_GROUP com a lista de IDs de grupos de segurança com acesso SSH permitido nas instâncias do serviço de gestão.
Opcional: se quiser encriptar os volumes do serviço de gestão, substitua os seguintes valores:
- ROOT_VOLUME_SIZE com o tamanho do volume em gigabytes para o serviço de gestão. Por exemplo,
10
. - ROOT_VOLUME_TYPE com o
tipo de volume EBS.
Por exemplo,
gp3
. - ROOT_VOLUME_IOPS com a quantidade de operações de E/S aprovisionadas por segundo (IOPS) para o volume. Só é válido quando
volumeType
éGP3
. Para mais informações, consulte o artigo Volumes SSD de uso geral (gp3). - ROOT_VOLUME_KEY com o nome de recurso da Amazon da chave do AWS KMS que encripta os volumes raiz da instância do serviço de gestão. Para mais informações, consulte o artigo Usar uma CMK gerida pelo cliente para encriptar volumes.
Opcional: se quiser criar um anfitrião de bastião para aceder ao seu ambiente do GKE no AWS com um túnel SSH, substitua os seguintes valores:
- BASTION_HOST_SUBNET_ID com o ID da sub-rede onde o anfitrião de bastion é executado. Certifique-se de que VPC_SUBNET_ID permite ligações de entrada de BASTION_HOST_SUBNET_ID.
- SSH_CIDR_BLOCK com o bloco CIDR a partir do qual o seu anfitrião de bastião permite a ligação SSH de entrada. Por exemplo,
203.0.113.0/24
. Se quiser permitir o SSH a partir de qualquer endereço IP, use o comando0.0.0.0/0
. - BASTION_VOLUME_KEY com o nome do recurso da Amazon da chave do AWS KMS que protege o volume raiz da estação de trabalho.
Opcional: se quiser tráfego direto através de um proxy HTTP, substitua o seguinte valor:
- PROXY_JSON_FILE com o caminho relativo do ficheiro de configuração do proxy. Se não estiver a usar um proxy, remova esta linha.
Execute
anthos-gke aws management init
para criar ficheiros de configuração:anthos-gke aws management init
Execute
anthos-gke aws management apply
para criar o cluster.anthos-gke aws management apply
O comando
anthos-gke aws management apply
pode demorar até dez minutos a ser concluído. Quando aanthos-gke
terminar, o seu serviço de gestão é executado na AWS.
Etiquete as suas sub-redes com o nome do cluster
Se estiver a usar sub-redes da AWS existentes com o GKE na AWS e quiser criar equilibradores de carga, tem de etiquetar a sua VPC e sub-redes com o nome do serviço de gestão. Se criou a sua VPC com anthos-gke
ou já etiquetou as suas sub-redes, ignore este passo.
Para etiquetar as suas sub-redes, siga estes passos:
Altere para o diretório com a configuração do GKE na AWS. Criou este diretório quando Instalou o serviço de gestão.
cd anthos-aws
Exporte o ID do cluster como a variável de ambiente
$CLUSTER-ID
. Escolha a sua versão do Terraform e, de seguida, execute os seguintes comandos:Terraform 0.12 e 0.13
export CLUSTER_ID=$(terraform output cluster_id)
Terraform 0.14.3 ou superior
export CLUSTER_ID=$(terraform output -raw cluster_id)
Exporte o ID da VPC da AWS como a variável de ambiente
$VPC_ID
. Escolha a sua versão do Terraform e, de seguida, execute os seguintes comandos:Terraform 0.12 e 0.13
export VPC_ID=$(terraform output vpc_id)
Terraform 0.14.3 ou superior
export VPC_ID=$(terraform output -raw vpc_id)
Obtenha os IDs das suas sub-redes privadas com a ferramenta de CLI
aws
.aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text
Etiquete as suas sub-redes com o ID do cluster. Execute o seguinte comando para cada uma das suas sub-redes.
aws ec2 create-tags \ --resources SUBNET_IDS \ --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_ID
Substitua SUBNET_IDS pela lista de IDs de sub-redes, separados por espaços. Por exemplo,
subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef
.
A estabelecer ligação ao serviço de gestão
Nesta secção, estabelece uma ligação ao seu serviço de gestão. Pode encaminhar os seus comandos através de um host de bastião. Se tiver uma ligação direta à sua VPC da AWS, avance para a secção Gerar credenciais e estabelecer ligação.
Estabelecer ligação a um anfitrião bastion
Se usar um anfitrião de bastião para configurar o túnel SSH, primeiro
configure o anfitrião no seu anthos-gke.yaml
. Em seguida, crie um script para abrir o túnel através dos seguintes passos:
Use
terraform
para gerar um script que abra um túnel SSH para o anfitrião bastion.terraform output bastion_tunnel > bastion-tunnel.sh chmod 755 bastion-tunnel.sh
O Terraform cria o script
bastion-tunnel.sh
que usa a chave SSH do host bastion (~/.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
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.
Altere para o diretório com a configuração do GKE na AWS.
cd anthos-aws
Gere credenciais e estabeleça ligação
A documentação do GKE no AWS pressupõe que usa um túnel SSH na porta localhost
8118 para aceder ao seu cluster. Se usar outro tipo de ligação à sua VPC, como uma interligação direta, uma VPN ou outro método, pode remover a linha env HTTP_PROXY=http://localhost:8118
dos comandos.
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
kubectl
imprime o estado do cluster.
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. - Consulte os grupos de segurança mínimos necessários para o serviço de gestão do GKE on AWS e os clusters de utilizadores.