Implemente recursos numa frota
Este tutorial ensina a usar um pacote de frota para implementar manifestos de recursos do Kubernetes numa frota de clusters. A utilização de ferramentas GitOps, como os pacotes de frotas do Config Sync, pode ajudar a dimensionar a gestão de configuração em grandes números de clusters.
Neste tutorial, conclui as seguintes tarefas:
- Associe um repositório Git ao Cloud Build
- Crie e registe clusters numa frota
- Instale o Config Sync como predefinição da frota
- Implemente recursos do seu repositório na sua frota de clusters
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the GKE, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the GKE, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - Criar ou ter acesso a uma conta do GitHub.
No navegador de Internet, abra o GitHub.
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 o repositório com a sua conta pessoal.
Na barra de ferramentas, selecione Adicionar add e, de seguida, clique em Novo repositório.
Escreva
fleet-package-tutorial
como o nome do repositório.Mantenha a opção Público selecionada como visibilidade do repositório.
Selecione Criar repositório.
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
fleet-package-quickstart-connection
como o nome da ligaçã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 o fork do Cymbal Bank anteriormente. Num ambiente de produção, pode selecionar outras contas ou repositórios aos quais delegou 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 seu repositório
fleet-package-tutorial
. - 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
fleet-package-quickstart-connection
.No menu Repositórios, selecione o seu repositório
fleet-package-tutorial
.Selecione Associar.
Crie um cluster do GKE:
gcloud container clusters create-auto cluster1 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Substitua o seguinte:
PROJECT_ID
com o ID do seu projeto.REGION
com a região na qual quer criar o cluster, comous-central1
.
Crie um segundo cluster do GKE:
gcloud container clusters create-auto cluster2 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Na Google Cloud consola, aceda à página Gestor de funcionalidades.
No painel Sincronização de configuração, clique em Configurar.
Clique em Personalizar definições da frota. Na caixa de diálogo apresentada, selecione a versão do Config Sync a instalar.
Clique em Configurar.
Na caixa de diálogo de confirmação Configurar definições da frota, clique em Confirmar. Se não ativou anteriormente a sincronização de configuração, clicar em Confirmar também ativa a API
anthosconfigmanagement.googleapis.com
.Na tabela Clusters na frota, selecione ambos os clusters e, de seguida, clique em Sincronizar com as definições da frota. Esta ação instala o Config Sync nos seus clusters com as definições que configurou.
A sincronização dos clusters pode demorar alguns minutos. Pode avançar para os passos seguintes quando o Config Sync for apresentado como Instalado.
Crie a conta de serviço:
gcloud iam service-accounts create "quickstart-service-account"
Conceda à conta de serviço autorização para obter recursos do seu repositório Git adicionando uma associação de política do IAM para a função de publicador do pacote de recursos:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-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 Escritor de registos:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'
Se lhe for pedido, selecione
None
como condição para a política.Numa janela do navegador de Internet do seu repositório do GitHub, clique em Adicionar ficheiro e, de seguida, em Criar novo ficheiro.
Atribua o nome
deployment.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, selecione Lançamentos na barra lateral.
Na parte superior da página, escolha Criar um novo lançamento.
Selecione o menu Escolher uma etiqueta e escreva
v1.0.0
como etiqueta. Clique em Criar nova etiqueta.Clique em Publicar lançamento.
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 quaisquer clusters futuros adicionados à frota terão a implementação do nginx adicionada automaticamente.
No Cloud Shell, crie um ficheiro denominado
fleet-package.yaml
com o seguinte conteúdo:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/fleet-package-quickstart-connection/repositories/REPOSITORY_NAME tag: v1.0.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com path: target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1
Substitua
REPOSITORY_NAME
pelo nome do repositório do Cloud Build. Normalmente, está no formatoUSERNAME-REPOSITORY_NAME
.Crie o pacote de frota para iniciar a implementação:
gcloud container fleet packages create fp-nginx \ --source=fleet-package.yaml \ --project=PROJECT_ID
Verifique se o pacote de frota foi criado:
gcloud 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.
Na página do Google Kubernetes Engine da Google Cloud consola, 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:
As cargas de trabalho podem demorar alguns minutos a ficar disponíveis. Também pode notar erros de disponibilidade enquanto o Autopilot ajusta os seus pedidos de recursos para a nova implementação.
Repare que, como
maxConcurrent:
está definido como1
na definição do pacote de frota, a API Fleet Package aguarda até que onginx-deployment
esteja totalmente implementado num cluster antes de iniciar a implementação no segundo cluster. Se alterou a estratégia de implementação paramaxConcurrent: 2
ou superior, os recursos são implementados em ambos os clusters em simultâneo.Após alguns minutos, verá duas novas cargas de trabalho para o
nginx-deployment
em ambos os clusters. Pode ter de atualizar a página.Numa janela do navegador de Internet do seu repositório do GitHub, abaixo do nome do repositório, clique em Definições.
Na página Definições gerais (que está selecionada por predefinição), aceda à secção Zona de perigo 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.
Clique em Eliminar este repositório.
- Saiba mais sobre os pacotes de frotas.
- Saiba como implementar pacotes de frotas.
- Experimente o tutorial da app Apps escaláveis, uma série de tutoriais que lhe ensinam a implementar, executar e gerir ambientes de aplicações modernos no GKE. Inclui o tutorial Centralize change management, que explora o aumento das alterações de configuração com pacotes de frotas.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Associar ao Git
O seu repositório Git contém os recursos que quer implementar numa frota. Para implementar esses recursos com um pacote de frota, tem de associar o seu repositório Git ao Cloud Build.
Crie o seu repositório Git
Este tutorial usa o GitHub como fornecedor de Git. Para criar um novo repositório do GitHub, conclua os seguintes passos:
Associe o repositório ao Cloud Build
O serviço de pacotes da frota do Config Sync usa o Cloud Build para sincronizar e obter os recursos do Kubernetes do seu repositório Git.
Para associar o seu repositório do GitHub ao Cloud Build, conclua os seguintes passos:
Configure a sua frota
Nesta secção, configura a sua frota criando clusters, registando-os numa frota e instalando o Config Sync como um pacote de frotas.
Crie clusters
Para demonstrar como pode usar pacotes de frotas para implementar recursos em vários clusters, este tutorial mostra como criar dois clusters.
Para criar os dois clusters e registá-los na frota do seu projeto:
Instale o Config Sync como predefinição da frota
Para usar o serviço de pacote de frotas, o Config Sync tem de estar instalado em ambos os clusters. Pode instalar o Config Sync em vários clusters em simultâneo e em quaisquer clusters futuros registados na frota, concluindo os seguintes passos:
Configure uma conta de serviço para o Cloud Build
Para criar a conta de serviço e conceder as autorizações necessárias ao Cloud Build, conclua os passos seguintes:
Implemente recursos na sua frota
Neste tutorial, adiciona um manifesto do Kubernetes com uma implementação do nginx ao seu repositório Git, publica um lançamento e, em seguida, cria um pacote de frota para implementar a aplicação nginx.
Confirme um manifesto do Kubernetes no seu repositório
Para adicionar os seus recursos ao GitHub e publicar uma versão, conclua os seguintes passos:
Implemente um recurso em clusters com um pacote de frota
Para implementar o novo recurso, crie um novo pacote de frota:
Pode continuar a explorar diferentes estratégias de implementação com pacotes de frota. Por exemplo, pode adicionar um novo cluster à sua frota para observar que a carga de trabalho é implementada automaticamente nesse novo cluster. Para mais informações acerca das estratégias de implementação e das variações, consulte o artigo Implemente pacotes de frotas.
Limpar
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Pode eliminar o seu repositório concluindo os seguintes passos: