Implemente uma aplicação no GKE na AWS

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:

  1. Defina o projeto predefinido:

    gcloud config set project PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do seu projeto.

  2. 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, como us-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/20

  • Intervalo 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 registado
  • VPC_ID: o ID da VPC da AWS para este cluster que configurou no passo de pré-requisito Crie a sua VPC
  • CONTROL_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 privadas
  • POD_CIDR_BLOCK: o intervalo de endereços CIDR para os pods do seu cluster
  • SERVICE_CIDR_BLOCK: o intervalo de endereços CIDR para os serviços do cluster
  • API_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-Cloud
  • CONTROL_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 controlo
  • DB_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 KMS
  • CONFIG_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 privadas
  • NODEPOOL_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ós
  • CONFIG_KMS_KEY_ARN: o Amazon Resource Name (ARN) da chave do AWS KMS para encriptar os dados do utilizador
  • EC2_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 cluster
  • GOOGLE_CLOUD_LOCATION: o nome da Google Cloud localização que gere o cluster

Google Cloud consola

  1. Na Google Cloud consola, aceda à página Vista geral dos clusters do Google Kubernetes Engine.

    Aceda aos clusters do GKE

  2. Os seus clusters são apresentados por nome e localização.

  3. 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 com latest.

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

  1. Inspecione os pods em execução com kubectl get pods:

    kubectl get pods
    

    Deve ver um hello-server pod em execução no cluster.

  2. Inspeccione o hello-server serviço através de kubectl 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.

  3. 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

  1. Elimine o serviço e a implementação da aplicação:

    kubectl delete service hello-server
    kubectl delete deployment hello-server
    
  2. 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
    
  3. Elimine o cluster executando o comando gcloud container aws clusters delete:

    gcloud container aws clusters delete aws-cluster-0
    

O que se segue?