Esta página fornece instruções de início rápido para criar um cluster e um conjunto de nós e, em seguida, implementar uma aplicação de exemplo através do GKE na AWS.
Esta página destina-se a administradores de TI e operadores que querem configurar, monitorizar e gerir a infraestrutura na nuvem. Para saber mais sobre as funções comuns e exemplos de tarefas que referimos no Google Cloud conteúdo, consulte Funções e tarefas comuns do utilizador do GKE.
Inicie rapidamente o seu cluster com o Terraform
Pode usar o Terraform para criar um cluster e um node pool. Antes de criar o cluster, os scripts do Terraform também preparam a sua VPC da AWS.
Pode saber mais sobre o Terraform num ambiente da AWS na referência do cluster do Terraform e na referência do node pool do Terraform.
Depois de criar uma VPC e um cluster com o Terraform, avance para a secção Implemente uma aplicação no cluster para implementar uma aplicação de exemplo.
Inicie rapidamente o cluster sem o Terraform
Se preferir preparar a sua VPC da AWS e criar um cluster e um conjunto de nós sem o Terraform, siga estas instruções.
Antes de começar
Antes de criar um cluster, tem de concluir os pré-requisitos. Em particular, tem de fornecer os seguintes recursos:
- Uma VPC da AWS onde o cluster vai ser executado.
- Até três sub-redes da AWS para as três réplicas do plano de controlo. Cada um tem de estar numa zona de disponibilidade da AWS diferente.
- A função do IAM da AWS que o GKE na AWS assume quando gere o seu cluster. Isto requer um conjunto específico de autorizações da IAM.
- Chaves CMK simétricas do KMS para encriptação em repouso de dados do cluster (etcd) e configuração.
- O perfil da instância do AWS IAM para cada réplica do plano de controlo. Isto requer um conjunto específico de autorizações de IAM.
- Um par de chaves SSH do EC2 (opcional) se precisar de acesso SSH às instâncias do EC2 que executam cada réplica do plano de controlo.
É da sua responsabilidade criar e gerir estes recursos, que podem ser partilhados entre todos os seus clusters do GKE no AWS. Todos os outros recursos da AWS subjacentes ao âmbito do cluster são geridos pelo GKE na AWS.
Defina as predefinições para a CLI gcloud
Use a CLI gcloud para configurar as predefinições do seu projeto e região predefinidos. Google Cloud
O seu projeto tem um ID do projeto como identificador exclusivo. Quando cria um projeto, pode usar o ID do projeto gerado automaticamente ou criar o seu próprio.
A sua Google Cloud região é uma localização a partir da qual os seus clusters são geridos. Por exemplo, us-west1
. Consulte o artigo
Regiões de gestão para ver mais detalhes.
Quando configura estas predefinições, não tem de as incluir quando
executa a CLI Google Cloud. Também pode especificar definições ou substituir as definições predefinidas ao transmitir as flags --project
e --location
para a Google Cloud CLI.
Quando cria recursos do GKE on AWS depois de configurar o projeto e a localização predefinidos, os recursos são criados automaticamente nesse projeto e localização.
Para definir predefinições, siga estes passos:
Defina o projeto predefinido:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo ID do seu projeto.Defina a localização de gestão predefinida:
gcloud config set container_aws/location GOOGLE_CLOUD_LOCATION
Substitua
GOOGLE_CLOUD_LOCATION
pela sua localização, comous-west1
.
Selecione intervalos CIDR para o seu cluster
O Kubernetes requer que sejam fornecidos dois intervalos CIDR para o cluster. Estes intervalos CIDR devem ser escolhidos de forma a não se sobreporem aos intervalos CIDR usados pelas sub-redes de VPC. Devem ser suficientemente grandes para o tamanho máximo esperado do cluster.
Intervalo CIDR do endereço do pod: quando é criado um novo
Pod
, é-lhe atribuído um endereço IP deste intervalo. Intervalo de exemplo: 192.168.208.0/20Intervalo CIDR do endereço de serviço: quando é criado um novo
Service
, é-lhe atribuído um endereço IP a partir deste intervalo. Intervalo de exemplo: 192.168.224.0/20
Crie um cluster
Use o seguinte comando para criar um cluster no GKE no AWS. Para mais informações sobre este comando, incluindo os respetivos parâmetros opcionais, consulte a página de referência gcloud container aws create.
gcloud container aws clusters create aws-cluster-0 \
--cluster-version 1.32.4-gke.200 \
--aws-region AWS_REGION \
--fleet-project FLEET_PROJECT_ID \
--vpc-id VPC_ID \
--subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
--pod-address-cidr-blocks POD_CIDR_BLOCK \
--service-address-cidr-blocks SERVICE_CIDR_BLOCK \
--role-arn API_ROLE_ARN \
--iam-instance-profile CONTROL_PLANE_PROFILE \
--database-encryption-kms-key-arn DB_KMS_KEY_ARN \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
Substitua o seguinte:
AWS_REGION
: a região da AWS na qual criar o cluster.FLEET_PROJECT_ID
: o projeto anfitrião do Fleet onde o cluster vai ser registadoVPC_ID
: o ID da VPC da AWS para este cluster que configurou no passo de pré-requisito Crie a sua VPCCONTROL_PLANE_SUBNET_1
,CONTROL_PLANE_SUBNET_2
,CONTROL_PLANE_SUBNET_3
: os IDs das sub-redes das três instâncias do plano de controlo do cluster que criou no passo de pré-requisito Crie sub-redes privadasPOD_CIDR_BLOCK
: o intervalo de endereços CIDR para os pods do seu clusterSERVICE_CIDR_BLOCK
: o intervalo de endereços CIDR para os serviços do clusterAPI_ROLE_ARN
: o ARN da função de IAM para o serviço GKE Multi-Cloud que criou no passo de pré-requisito Criar função da API GKE Multi-CloudCONTROL_PLANE_PROFILE
: o nome do perfil da instância do IAM associada ao cluster que escolheu no passo de pré-requisito Criar função do plano de controloDB_KMS_KEY_ARN
: o nome de recurso da Amazon (ARN) de uma das chaves do AWS KMS que criou no passo de pré-requisito Crie uma chave do AWS KMSCONFIG_KMS_KEY_ARN
: o nome de recurso da Amazon (ARN) da outra chave do AWS KMS que criou no passo de pré-requisito Crie uma chave do AWS KMS
Se estiver presente, o parâmetro --tags
aplica a etiqueta da AWS especificada a todos os recursos da AWS subjacentes geridos pelo GKE na AWS. Este exemplo etiqueta os nós do plano de controlo com o nome do cluster ao qual pertencem.
Crie um node pool
Use o seguinte comando para criar um node pool:
gcloud container aws node-pools create pool-0 \
--cluster aws-cluster-0 \
--node-version 1.32.4-gke.200 \
--min-nodes 1 \
--max-nodes 5 \
--max-pods-per-node 110 \
--root-volume-size 50 \
--subnet-id NODEPOOL_SUBNET_ID \
--iam-instance-profile NODEPOOL_PROFILE \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--ssh-ec2-key-pair EC2_KEY_PAIR \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
Substitua o seguinte:
NODEPOOL_SUBNET_ID
: o ID de uma das sub-redes privadas que criou no passo de pré-requisito Criar sub-redes privadasNODEPOOL_PROFILE
: o nome do perfil de instância do IAM para as instâncias do EC2 no conjunto de nós que escolheu no passo de pré-requisito Crie uma função de IAM do conjunto de nósCONFIG_KMS_KEY_ARN
: o Amazon Resource Name (ARN) da chave do AWS KMS para encriptar os dados do utilizadorEC2_KEY_PAIR
(opcional): o nome do par de chaves do EC2 criado para acesso SSH (opcional) que criou no passo de pré-requisito Crie um par de chaves SSH
Veja o estado do cluster
Depois de criar um cluster e um conjunto de nós, pode ver o estado de um cluster com a CLI Google Cloud ou a Google Cloud consola. Para ver o estado do cluster, escolha se está a usar a CLI Google Cloud ou a Google Cloud consola e siga estes passos:
gcloud
Use o comando gcloud container aws clusters describe
para obter detalhes
sobre o seu cluster:
gcloud container aws clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Substitua o seguinte:
CLUSTER_NAME
: o nome do clusterGOOGLE_CLOUD_LOCATION
: o nome da Google Cloud localização que gere o cluster
Google Cloud consola
Na Google Cloud consola, aceda à página Vista geral dos clusters do Google Kubernetes Engine.
Os seus clusters são apresentados por nome e localização.
Clique no nome do cluster. É apresentado um painel com informações sobre o cluster, incluindo o respetivo estado e funcionalidades ativadas.
Obtenha credenciais de autenticação para o cluster
Depois de criar o cluster, tem de obter credenciais de autenticação para interagir com o cluster:
gcloud container aws clusters get-credentials aws-cluster-0
Este comando configura o kubectl
para aceder ao cluster que criou através do gateway de ligação. Precisa de, pelo menos, uma pool de nós para usar o gateway Connect, uma vez que depende do agente Connect, que é executado como uma implementação no cluster.
Implemente uma aplicação no cluster
Agora que criou um cluster, pode implementar uma aplicação em contentor no mesmo. Para este início rápido, pode implementar a nossa aplicação Web de exemplo,
hello-app
.
Usa objetos do Kubernetes para criar e gerir os recursos do cluster. Usa o objeto Deployment para implementar aplicações sem estado, como servidores Web. Os objetos Service definem regras e balanceadores de carga para aceder à sua aplicação a partir da Internet.
Crie a implementação
Para executar o hello-app
no seu cluster, tem de implementar a aplicação executando o seguinte comando:
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Este comando do Kubernetes,
kubectl create deployment
cria uma implementação com o nome hello-server
. O pod da implementação executa a imagem do contentor hello-app
.
Neste comando:
--image
especifica uma imagem de contentor a implementar. Neste caso, o comando extrai a imagem de exemplo de um repositório do Artifact Registry,us-docker.pkg.dev/google-samples/containers/gke/hello-app
. O elemento:1.0
indica a versão específica da imagem a obter. Se não especificar uma versão, é usada a imagem etiquetada comlatest
.
Exponha a implementação
Depois de implementar a aplicação, tem de a expor à Internet para que os utilizadores possam aceder à mesma. Pode expor a sua aplicação criando um serviço, um recurso do Kubernetes que expõe a sua aplicação ao tráfego externo.
Para expor a sua aplicação, execute o seguinte comando
kubectl expose
:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
A transmissão da flag --type LoadBalancer
cria um equilibrador de carga da AWS para o seu contentor. A flag --port
inicializa a porta pública 80 para a Internet e a flag --target-port
encaminha o tráfego para a porta 8080 da aplicação.
Os balanceadores de carga são faturados de acordo com os preços dos balanceadores de carga da AWS.
Inspecione e veja a aplicação
Inspecione os pods em execução com
kubectl get pods
:kubectl get pods
Deve ver um
hello-server
pod em execução no cluster.Inspeccione o
hello-server
serviço através dekubectl get service
:kubectl get service hello-server
A partir do resultado deste comando, copie o endereço IP externo do serviço da coluna
EXTERNAL-IP
.Veja a aplicação a partir do navegador de Internet através do IP externo com a porta exposta:
http://EXTERNAL-IP
Acabou de implementar uma aplicação Web contentorizada no GKE na AWS.
Limpar
Elimine o serviço e a implementação da aplicação:
kubectl delete service hello-server kubectl delete deployment hello-server
Elimine o node pool executando o comando
gcloud container aws node-pools delete
:gcloud container aws node-pools delete pool-0 --cluster aws-cluster-0
Elimine o cluster executando o comando
gcloud container aws clusters delete
:gcloud container aws clusters delete aws-cluster-0