Este conjunto de tutoriais destina-se a administradores de TI e operadores que querem implementar, executar e gerir ambientes de aplicações modernos executados no Google Kubernetes Engine. À medida que avança neste conjunto de tutoriais, aprende a configurar a monitorização e os alertas, dimensionar cargas de trabalho e simular falhas, tudo isto usando a aplicação de microsserviços de exemplo do Cymbal Bank:
- Crie um cluster e implemente uma aplicação de exemplo
- Monitorize com o serviço gerido do Google Cloud para Prometheus
- Dimensione cargas de trabalho
- Simule uma falha
- Centralize a gestão de alterações (este tutorial)
Vista geral e objetivos
À medida que cria novos serviços e aplicações, pode querer testar as alterações em diferentes ambientes. À medida que a sua organização cresce, pode precisar de configurações de cluster diferentes para equipas diferentes. A gestão de vários clusters com configurações diferentes pode ser um desafio. Pode usar ferramentas GitOps, como o Config Sync, para ajudar a gerir estes desafios.
No tutorial de criação de um cluster, criou um cluster e implementou a aplicação Cymbal Bank nesse cluster.
Neste tutorial, vai aprender a armazenar os manifestos do Kubernetes para a sua aplicação num repositório Git centralizado e como usar ferramentas como o Config Sync para implementar uma aplicação em vários clusters numa frota. Aprende a concluir as seguintes tarefas:
Crie um repositório Git e associe-o ao Cloud Build
Crie um cluster, registe-o numa frota e instale o Config Sync na sua frota de clusters
Use um pacote de frota para implementar o Cymbal Bank e outros recursos num cluster ou numa frota
Custos
A ativação do GKE e a implementação da aplicação de exemplo do Cymbal Bank para esta série de tutoriais significa que incorre em custos por cluster para o GKE on Google Cloud , conforme indicado na nossa página de preços, até desativar o GKE ou eliminar o projeto.
Também é responsável por outros Google Cloud custos incorridos durante a execução da aplicação de exemplo do Cymbal Bank, como encargos de VMs do Compute Engine e equilibradores de carga.
Antes de começar
Para saber como armazenar, fazer alterações e implementar recursos a partir de um repositório Git, tem de concluir o primeiro tutorial para criar um cluster do GKE que use o modo Autopilot e implementar a aplicação baseada em microsserviços de exemplo do Cymbal Bank.
Recomendamos que conclua este conjunto de tutoriais para o Cymbal Bank pela ordem indicada. À medida que avança no conjunto de tutoriais, aprende novas competências e usa produtos e serviços Google Cloud adicionais.
Para usar o Config Sync para implementar manifestos do Kubernetes a partir de um repositório Git nos seus clusters, tem de ativar as seguintes APIs:
gcloud services enable configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com
Crie um repositório Git e associe-o ao Cloud Build
Um pacote de frota é uma coleção de manifestos de recursos do Kubernetes. Ao agrupar esses manifestos como um pacote, pode implementar uma aplicação em vários clusters numa frota diretamente a partir de um repositório Git. Com este fluxo de trabalho, tem as seguintes vantagens:
- Melhoria da escalabilidade através da implementação de recursos numa frota em vez de os aplicar manualmente cluster a cluster.
- Atualizações mais seguras com implementações progressivas.
- Fluxos de trabalho adicionais a partir da obtenção centralizada de ficheiros de configuração no Git, como o controlo de versões e as aprovações.
Para demonstrar como armazenar e fazer alterações no Git, bifurca o repositório do Cymbal Bank e associa-o ao Cloud Build.
Crie um fork do repositório Cymbal Bank
Neste tutorial, vai fazer alterações ao seu repositório Git para demonstrar como o Config Sync ajuda a gerir em segurança as alterações aos recursos do Kubernetes e a implementá-las. Para fazer essas alterações diretamente, tem de criar uma ramificação do repositório Git em vez de o clonar.
Para criar uma bifurcação do repositório, conclua os seguintes passos:
No GitHub, aceda ao repositório de exemplo Cymbal Bank (
bank-of-anthos
).Clique em Fork para obter uma cópia do repositório com os ficheiros de origem.
Se necessário, inicie sessão na sua conta do GitHub. Se tiver acesso a outras organizações ou equipas no GitHub, certifique-se de que está a criar um fork do repositório para a sua conta pessoal.
Agora, tem uma ramificação do repositório Cymbal Bank. Todos os manifestos do Kubernetes que implementar estão localizados na pasta /kubernetes-manifests
.
Associe o repositório ao Cloud Build
O Cloud Build é um serviço que pode executar compilações no Google Cloud, que pode usar para a entrega contínua ao estilo GitOps. O serviço de pacotes da frota do Config Sync usa o Cloud Build para obter os recursos do Kubernetes do seu repositório Git e implementá-los nos seus clusters. Quando usa um pacote de frota, tem de configurar o Cloud Build apenas uma vez por repositório que quer sincronizar. A API Fleet Package cria automaticamente os acionadores de compilação através do Cloud Build.
Para associar o seu repositório do GitHub ao Cloud Build:
Abra a página do Cloud Build na Google Cloud consola e, de seguida, selecione Repositórios.
Certifique-se de que está na página Repositórios de 2.ª geração. Se necessário, selecione Ver repositórios (2.ª geração).
Clique em Criar associação de anfitrião.
No menu Região, selecione us-central1 (Iowa) como a sua região.
No campo Nome, escreva
cymbal-bank-connection
como o nome da associação.Clique em Ligar.
Se for a primeira vez que associa o Cloud Build à sua conta do GitHub, conclua os seguintes passos:
- Aceite o pedido do seu token OAuth do GitHub. O token é armazenado no Secret Manager para utilização com a ligação do GitHub do Cloud Build. Clique em Continuar.
- Instale o Cloud Build no seu repositório do GitHub. Selecione Instalar numa nova conta.
- Na nova janela do GitHub apresentada, selecione a conta do GitHub na qual criou a ramificação do Cymbal Bank anteriormente. Num ambiente de produção, pode selecionar outras contas ou repositórios aos quais delegou o acesso.
- Siga todas as instruções de autenticação para confirmar a sua identidade no GitHub.
- Na janela do GitHub para acesso ao repositório do Cloud Build, escolha Apenas repositórios selecionados.
- No menu pendente que apresenta os repositórios, selecione o fork de
bank-of-anthos
. - Clique em Guardar.
Na página do Cloud Build na Google Cloud consola, clique em Associar repositório para associar um novo repositório Git ao Cloud Build.
No menu Ligação, selecione
cymbal-bank-connection
.No menu Repositórios, selecione o fork
bank-of-anthos
.Selecione Associar.
Crie clusters
No primeiro tutorial desta série, criou um cluster e implementou a aplicação Cymbal Bank nesse cluster. Num cenário real, é improvável que tenha apenas um cluster para gerir. O GKE permite-lhe agrupar clusters numa frota: um grupo lógico de clusters que podem ser geridos em conjunto. Numa frota, pode agrupar ainda mais os clusters, com alguns clusters a representar ambientes diferentes ou a pertencer a equipas diferentes. Por exemplo, pode ter um cluster de desenvolvimento, um cluster de preparação e um cluster de produção. Numa organização grande, as equipas individuais podem ter os seus próprios clusters para diferentes ambientes. Como administradores de TI ou operadores, isto pode significar que tem de gerir dezenas de clusters!
No que diz respeito à implementação de aplicações ou recursos individuais, como políticas personalizadas, em todos estes clusters, as funcionalidades do GKE, como o Config Sync, podem ajudar a gerir essas implementações em grande escala.
Para ajudar a demonstrar como implementar recursos em diferentes ambientes ou numa frota de clusters, crie um novo cluster e implemente a aplicação Cymbal Bank no mesmo:
Crie um cluster do GKE que simule um ambiente de desenvolvimento:
gcloud container clusters create-auto scalable-apps-dev \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Substitua o seguinte:
PROJECT_ID
com o ID gerado automaticamente do projeto que criou na secção anterior. O ID do projeto é frequentemente diferente do nome do projeto. Por exemplo, o seu projeto pode ser scalable-apps, mas o ID do projeto pode ser scalable-apps-567123.REGION
com a região na qual quer criar o cluster, comous-central1
.
Os marcadores são pares de chave-valor que pode adicionar aos recursos do GKE para ajudar a organizá-los. Para pacotes de frotas, pode usar etiquetas de associação à frota para personalizar os clusters que o pacote de frotas segmenta. Outros tipos de etiquetas não são suportados.
Adicione uma etiqueta à subscrição da frota:
gcloud container fleet memberships update scalable-apps-dev \ --update-labels=env=dev
Quando criar o pacote de frota mais tarde neste tutorial, esta etiqueta garante que os recursos só são implementados no cluster
scalable-apps-dev
e não no clusterscalable-apps
do primeiro tutorial desta série.
Instale o Config Sync
Instale o Config Sync em ambos os clusters:
- Na Google Cloud consola, aceda à página Configuração na secção Funcionalidades.
- Clique em add Instalar Config Sync.
- Mantenha a opção Atualizações manuais selecionada.
- O menu de versões deve ter como predefinição a versão mais recente do Config Sync. Se necessário, selecione a versão mais recente.
- Em Opções de instalação, selecione Instalar o Config Sync em toda a frota (recomendado).
- Clique em Instalar Config Sync.
- No separador Definições da sincronização de configuração, consulte o campo Estado da lista de clusters. Após alguns minutos, o estado é apresentado como "Pendente" até que o cluster seja configurado corretamente para a sincronização de configuração. O estado pode demorar até 10 minutos a mudar para Ativado.
Implemente o Cymbal Bank
No primeiro tutorial desta série, usou comandos kubectl
para aplicar as configurações da aplicação ao seu cluster. Neste tutorial, vai usar a funcionalidade de pacotes de frotas do Config Sync para implementar essas mesmas configurações num novo cluster. Numa secção
posterior, vai ver um exemplo de como adicionar um novo recurso ao seu
repositório Git e implementar esses recursos numa frota de clusters.
Configure uma conta de serviço para o Cloud Build
Uma conta de serviço é um tipo especial de conta normalmente usada por uma aplicação, em vez de uma pessoa. Como prática recomendada ao criar contas de serviço, deve criar contas de serviço para um único serviço ou tarefa específico e atribuir funções detalhadas à conta de serviço. Neste tutorial, cria uma conta de serviço para conceder autorizações do Cloud Build para obter recursos do Kubernetes do seu repositório Git e implementá-los nos seus clusters.
Para criar a conta de serviço e conceder as autorizações necessárias, conclua os seguintes passos:
Crie a conta de serviço:
gcloud iam service-accounts create "cymbal-bank-service-account"
Conceda à conta de serviço autorização para obter recursos do seu repositório Git adicionando uma associação de política de IAM para a função Publicador do pacote de recursos:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'
Se lhe for pedido, selecione
None
como condição para a política.Conceda à conta de serviço autorização para escrever registos adicionando uma associação de política de IAM para a função de escritor de registos:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'
Se lhe for pedido, selecione
None
como condição para a política.
Crie um lançamento para a aplicação Cymbal Bank
Um pacote de frota requer uma etiqueta de versão semântica para saber a partir de que versão do seu repositório deve ser implementado. É recomendável criar novos lançamentos quando faz alterações ao seu repositório, uma vez que isto ajuda no controlo de versões e facilita o regresso a uma versão estável, se necessário.
Numa janela do navegador de Internet da sua bifurcação do GitHub do Cymbal Bank, na secção Releases da barra lateral, clique em Create a new release.
Selecione o menu Escolher uma etiqueta e escreva
v1.0.0
como etiqueta. Clique em Criar nova etiqueta.Clique em Publicar lançamento.
Configure a autenticação
Tal como no primeiro tutorial desta série, tem de criar um JWT para processar a autenticação do utilizador e um segredo do Kubernetes para armazenar o JWT do novo cluster que criou. É uma boa ideia que cada cluster tenha um JWT exclusivo para autenticação.
No Cloud Shell, crie o JWT:
openssl genrsa -out jwtRS256.key 4096 openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
Crie o Secret do Kubernetes:
kubectl create secret generic jwt-key --from-file=./jwtRS256.key --from-file=./jwtRS256.key.pub
Implemente a aplicação Cymbal Bank com um pacote de frota
Um recurso FleetPackage
é uma API declarativa para implementar vários manifestos do Kubernetes numa frota de clusters.
Para criar um pacote de frota, define uma especificação FleetPackage
que aponta para o repositório com os seus recursos do Kubernetes que associou ao Cloud Build. Em seguida, aplica o recurso FleetPackage
, que obtém os recursos do Git e implementa-os em toda a frota.
No Cloud Shell, defina a localização predefinida para os comandos da CLI gcloud.
configdelivery
Tal como acontece com a associação do repositório ao Cloud Build, tem de usarus-central1
enquanto a funcionalidade de pacotes de frotas estiver em pré-visualização:gcloud config set config_delivery/location us-central1
Crie um ficheiro denominado
fleetpackage-spec.yaml
com o seguinte conteúdo:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/cymbal-bank-connection/repositories/REPOSITORY_NAME tag: v1.0.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com path: kubernetes-manifests target: fleet: project: projects/PROJECT_ID selector: matchLabels: env: dev rolloutStrategy: rolling: maxConcurrent: 1
Substitua
REPOSITORY_NAME
pelo nome do seu repositório, tal como aparece na associação do Cloud Build.Os campos do seletor correspondem à etiqueta de associação à frota que criou anteriormente. Isto garante que a aplicação Cymbal Bank só é implementada no cluster
scalable-apps-dev
. O clusterscalable-apps
do primeiro tutorial não é afetado. Na secção seguinte, vai ver um exemplo de um pacote de frota que segmenta todos os clusters numa frota.O campo de estratégia de implementação controla a forma como os recursos são implementados nos clusters. Neste exemplo, está a implementar apenas num cluster, pelo que este campo não altera a forma como a implementação é feita. No entanto, se tiver muitos clusters, esta definição garante que os ficheiros de recursos são todos aplicados a um cluster antes de passar para o cluster seguinte. Isto permite-lhe monitorizar o progresso da implementação.
Crie o pacote de frota:
gcloud alpha container fleet packages create cymbal-bank-fleet-package \ --source=fleetpackage-spec.yaml \ --project=PROJECT_ID
Verifique se o pacote de frota foi criado:
gcloud alpha container fleet packages list
O resultado apresenta o estado do acionador de compilação. Após alguns segundos, o campo
MESSAGE
é atualizado com um resultado semelhante ao seguinte:MESSAGES: Build status: WORKING. The release is still being built; see the build status on the following page:
Pode clicar no link fornecido para ver os registos de streaming da tarefa do Cloud Build. O Cloud Build pode demorar alguns minutos a processar o acionador de compilação.
Quando o acionador de compilação é concluído com êxito, o resultado de
gcloud alpha container fleet packages list
é semelhante ao seguinte:NAME: cymbal-bank-fleet-package STATE: ACTIVE CREATE_TIME: 2024-07-09T15:15:56 ACTIVE_ROLLOUT: rollout-20240709-153621 LAST_COMPLETED_ROLLOUT: MESSAGES:
O pacote de frotas começa a implementar os recursos do Kubernetes na sua frota.
Na página do Google Kubernetes Engine da Google Cloud consola, selecione o seu cluster
scalable-apps-dev
e, de seguida, aceda à página Cargas de trabalho para ver uma vista agregada das cargas de trabalho que estão a ser implementadas em todos os seus clusters do GKE:Pode ver alguns erros enquanto o Autopilot ajusta os seus pods para satisfazer os pedidos de recursos. Após alguns minutos, deve ver os seus pods a serem executados com o estado OK.
Para ver a interface Web do Cymbal Bank, conclua os seguintes passos:
Na página do Google Kubernetes Engine da Google Cloud consola, aceda à página Gateways, Services & Ingress.
Para encontrar a entrada do Cymbal Bank, clique no separador "Serviços" e encontre o serviço com o nome
frontend
.Clique no link Ponto final para a entrada
frontend
, como198.51.100.143:80
, para abrir a interface Web do Cymbal Bank.
Implemente recursos numa frota
Em seguida, imagine um cenário em que quer expandir a sua aplicação Cymbal Bank com um novo microsserviço. Quer implementar este microsserviço em todos os seus clusters atuais e em quaisquer clusters futuros adicionados à frota. Ao usar um pacote de frota, pode fazer a implementação em vários clusters e obter a implementação automática em novos clusters.
Adicione novos recursos ao seu repositório Git
Para demonstrar a adição de um novo serviço à sua aplicação, cria uma implementação básica do nginx e adiciona-a aos seus clusters:
Numa janela do navegador de Internet da sua bifurcação do GitHub do Cymbal Bank, clique em Add file e, de seguida, em Create new file.
Atribua o nome
new-resource/nginx.yaml
ao ficheiro e cole o seguinte conteúdo no mesmo:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.2 name: nginx ports: - containerPort: 80
Clique em Aplicar alterações…
Na caixa de diálogo de confirmação, mantenha a opção Aplicar diretamente à ramificação
main
selecionada e, de seguida, clique em Aplicar alterações.Na página principal do repositório do Cymbal Bank com fork, selecione Releases na barra lateral.
Na parte superior da página, escolha Criar um novo lançamento.
Selecione o menu Escolher uma etiqueta e escreva
v1.1.0
como etiqueta. Clique em Criar nova etiqueta.Clique em Publicar lançamento.
Implemente um recurso em clusters com um pacote de frota
Para implementar o novo recurso, crie um novo pacote de frota:
Este pacote de frotas segmenta todos os clusters na sua frota, uma vez que não contém um campo de seletor. Isto também significa que todos os clusters futuros adicionados à frota terão a implementação do nginx adicionada automaticamente.
No Cloud Shell, crie um ficheiro denominado
new-deployment-fleet-package.yaml
com o seguinte conteúdo:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/cymbal-bank-connection/repositories/REPOSITORY_NAME tag: v1.1.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com path: kubernetes-manifests/new-resource target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1
Crie o pacote de frota para iniciar a implementação:
gcloud alpha container fleet packages create new-deployment-fleet-package \ --source=new-deployment-fleet-package.yaml \ --project=PROJECT_ID
Verifique se o pacote de frota foi criado:
gcloud alpha container fleet packages list
Pode clicar no link fornecido para ver os registos de streaming da tarefa do Cloud Build.
O pacote da frota começa a implementar os recursos do Kubernetes na sua frota. O lançamento pode demorar alguns minutos a começar e a ser concluído.
Na página do Google Kubernetes Engine da consola Google Cloud , aceda à página Cargas de trabalho para ver uma vista agregada das cargas de trabalho que estão a ser implementadas em todos os seus clusters do GKE:
Pode continuar a explorar diferentes estratégias de implementação com pacotes de frota. Por exemplo, pode experimentar adicionar diferentes tipos de recursos ao repositório bifurcado e usar diferentes configurações de pacotes de frotas para os implementar. Também pode usar um pacote de frota para eliminar todos os recursos implementados nos seus clusters. Para mais informações sobre pacotes de frotas, consulte o artigo Implemente pacotes de frotas na documentação do Config Sync.
Elimine recursos numa frota
Tal como pode implementar recursos numa frota, pode eliminar recursos numa frota com um pacote de frotas.
Para remover recursos individuais, os passos gerais são os seguintes:
- Elimine o recurso do seu repositório Git.
- Crie um novo lançamento do Git e uma nova etiqueta.
- Atualize o campo
tag
do pacote de frota. - Execute o comando de atualização do pacote de frota.
Em alternativa, pode eliminar o próprio pacote de frota, o que também elimina todos os recursos que foram geridos pelo pacote de frota.
Por exemplo, se quiser remover a implementação do nginx da secção anterior, execute o seguinte comando:
gcloud alpha container fleet packages delete new-deployment-fleet-package --force
Limpar
Para evitar incorrer em custos na sua conta Google Cloud pelos recursos usados neste tutorial, elimine o projeto que criou.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Pode eliminar o repositório bifurcado através dos seguintes passos:
Numa janela do navegador de Internet da sua bifurcação do GitHub do Cymbal Bank, abaixo do nome do repositório, clique em Settings.
Na página de definições gerais (que está selecionada por predefinição), aceda à secção Danger Zone e clique em Eliminar este repositório.
Clique em Quero eliminar este repositório.
Leia os avisos e clique em Li e compreendi estes efeitos.
Para verificar se está a eliminar o repositório correto, no campo de texto, escreva o nome do repositório do Cymbal Bank com fork.
Clique em Eliminar este repositório.
O que se segue?
Antes de começar a criar o seu próprio ambiente de cluster do GKE semelhante ao que aprendeu neste conjunto de tutoriais, reveja algumas das considerações de produção.