Implantar recursos em uma frota
Neste tutorial, você vai aprender a usar um pacote de frota para implantar manifestos de recursos do Kubernetes em uma frota de clusters. O uso de ferramentas do GitOps, como os pacotes de frota do Config Sync, pode ajudar a escalonar verticalmente o gerenciamento de configuração em um grande número de clusters.
Neste tutorial, você irá:
- Conectar um repositório Git ao Cloud Build
- Criar e registrar clusters em uma frota
- Instalar o Config Sync como padrão da frota
- Implante recursos do repositório na frota de clusters
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative as APIs GKE, Config Delivery (pacotes da frota), Cloud Build e Developer Connect:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com -
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative as APIs GKE, Config Delivery (pacotes da frota), Cloud Build e Developer Connect:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - Crie ou tenha acesso a uma conta do GitHub.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Conectar ao Git
Seu repositório Git contém os recursos que você quer implantar em uma frota. Para implantar esses recursos com um pacote de frota, conecte seu repositório do Git ao Cloud Build.
Criar seu repositório Git
Neste tutorial, usamos o GitHub como provedor do Git. Para criar um repositório do GitHub, siga estas etapas:
No navegador da Web, abra o GitHub.
Se necessário, faça login na sua conta do GitHub. Se você tiver acesso a outras organizações ou equipes no GitHub, verifique se você está criando o repositório com sua conta pessoal.
Na barra de ferramentas, selecione Adicionar add e clique em Novo repositório.
Digite
fleet-package-tutorialcomo o nome do repositório.Mantenha Público selecionado como a visibilidade do repositório.
Selecione Criar repositório.
Conectar o repositório ao Cloud Build
O serviço de pacote de frota do Config Sync usa o Cloud Build para sincronizar e buscar os recursos do Kubernetes no seu repositório do Git.
Para conectar seu repositório do GitHub ao Cloud Build, siga estas etapas:
Abra a página do Cloud Build no console Google Cloud e selecione Repositórios.
Confira se você está na página Repositórios de 2ª geração. Se necessário, selecione Visualizar repositórios (2ª geração).
Clique em Criar conexão de host.
No menu Região, selecione us-central1 (Iowa) como sua região.
No campo Nome, digite
fleet-package-quickstart-connectioncomo o nome da sua conexão.Clique em Conectar.
Se esta for a primeira vez que você conecta o Cloud Build à sua conta do GitHub, siga estas etapas:
- Aceite a solicitação do token OAuth do GitHub. O token é armazenado no Secret Manager para uso com a conexão do GitHub do Cloud Build. Clique em Continuar.
- Instale o Cloud Build no seu repositório do GitHub. Selecione Instalar em uma nova conta.
- Na nova janela aberta, selecione a conta do GitHub em que você criou a bifurcação do Cymbal Bank. Em um ambiente de produção, é possível selecionar outras contas ou repositórios para os quais você delegou acesso.
- Siga todos os prompts de autenticação para confirmar sua identidade no GitHub.
- Na janela do GitHub para acesso ao repositório do Cloud Build, escolha Apenas repositórios selecionados.
- No menu suspenso que lista os repositórios, selecione o repositório
fleet-package-tutorial. - Clique em Salvar.
Na página do Cloud Build no console do Google Cloud , clique em Vincular repositório para conectar um novo repositório Git ao Cloud Build.
No menu Conexão, selecione
fleet-package-quickstart-connection.No menu Repositórios, selecione o repositório
fleet-package-tutorial.Selecione Vincular.
Configurar seus dispositivos
Nesta seção, você configura sua frota criando clusters, registrando-os em uma frota e instalando o Config Sync como um pacote da frota.
Crie clusters
Para demonstrar como usar pacotes de frota para implantar recursos em vários clusters, este tutorial mostra como criar dois clusters.
Para criar os dois clusters e registrá-los na frota do projeto:
Crie um cluster do GKE:
gcloud container clusters create-auto cluster1 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapidSubstitua:
PROJECT_IDpelo código do projeto;REGIONpela região onde você 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
Instalar o Config Sync como padrão da frota
Para usar o serviço de pacote da frota, o Config Sync precisa ser instalado nos dois clusters. É possível instalar o Config Sync em vários clusters de uma só vez e em todos os clusters futuros registrados na frota seguindo estas etapas:
No console do Google Cloud , acesse a página Gerenciador de recursos.
No painel Config Sync, clique em Configurar.
Clique em Personalizar as configurações da frota. Na caixa de diálogo que aparece, selecione a versão do Config Sync para instalar.
Clique em Configurar.
Na caixa de diálogo de confirmação Configurar as configurações da frota, clique em Confirmar. Se você ainda não tiver ativado o Config Sync, clicar em Confirmar também ativa a API
anthosconfigmanagement.googleapis.com.Na tabela Clusters na frota, selecione os dois clusters e clique em Sincronizar com as configurações da frota. Isso instala o Config Sync nos dois clusters com as configurações que você configurou.
A sincronização dos clusters pode levar alguns minutos. Você pode continuar com as próximas etapas quando o Config Sync aparecer como Instalado.
Configurar uma conta de serviço para o Cloud Build
Para criar a conta de serviço e conceder as permissões necessárias ao Cloud Build, siga estas etapas:
Crie a conta de serviço:
gcloud iam service-accounts create "quickstart-service-account"Conceda permissão à conta de serviço para buscar recursos do seu repositório Git adicionando uma vinculação de política do IAM para o papel de Editor 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 solicitado, selecione
Nonecomo a condição da política.Para conceder à conta de serviço permissão para gravar registros, adicione uma vinculação de política do IAM para o papel Gravador de registros:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'Se solicitado, selecione
Nonecomo a condição da política.Adicione uma vinculação de política do IAM para o papel Gravador do Artifact Registry:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'Se solicitado, selecione
Nonecomo a condição da política.
Implantar recursos em toda a frota
Neste tutorial, você vai adicionar um manifesto do Kubernetes com uma implantação do nginx ao seu repositório Git, publicar um lançamento e criar um pacote de frota para implantar o aplicativo nginx.
Fazer commit de um manifesto do Kubernetes no repositório
Para adicionar seus recursos ao GitHub e publicar um lançamento, siga estas etapas:
Em uma janela do navegador da Web do seu repositório do GitHub, clique em Adicionar arquivo e em Criar novo arquivo.
Nomeie o arquivo como
deployment.yamle cole o seguinte conteúdo nele: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: 80Clique em Fazer commit das alterações...
Na caixa de diálogo de confirmação, mantenha a opção Fazer commit diretamente na ramificação do
mainselecionada e clique em Confirmar mudanças.Na página principal do repositório, selecione Versões na barra lateral.
Na parte de cima da página, escolha Criar uma nova versão.
Selecione o menu Escolher uma tag e digite
v1.0.0como a tag. Clique em Criar nova tag.Clique em Publicar lançamento.
Implantar um recurso em clusters com um pacote de frota
Para implantar o novo recurso, crie um pacote de frota:
Esse pacote de frota tem como destino todos os clusters da sua frota, já que ele não define um seletor de cluster (na seção
target.fleet). Ele está configurado para implantar a variante de implantação (derivada do arquivodeployment.yaml) em todos esses clusters.No Cloud Shell, crie um arquivo chamado
fleet-package.yamlcom 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: # Match all files (including deployment.yaml) to generate variants variantsPattern: "*.yaml" target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1 variantSelector: # Explicitly match the variant generated from "deployment.yaml" variantNameTemplate: "deployment"Substitua
REPOSITORY_NAMEpelo nome do repositório do Cloud Build. Geralmente, está no formatoUSERNAME-REPOSITORY_NAME.Crie o pacote de frota para iniciar o lançamento:
gcloud container fleet packages create fp-nginx \ --source=fleet-package.yaml \ --project=PROJECT_IDVerifique se o pacote de frota foi criado:
gcloud container fleet packages listClique no link fornecido para visualizar os logs de streaming do job do Cloud Build.
O pacote de frota começa a lançar os recursos do Kubernetes em sua frota.
Na página do Google Kubernetes Engine do console Google Cloud , acesse a página Cargas de trabalho para conferir uma visualização agregada das cargas de trabalho que estão sendo implantadas em todos os clusters do GKE:
Abrir a página Cargas de trabalho
Pode levar alguns minutos para que as cargas de trabalho fiquem disponíveis. Também é possível notar erros de disponibilidade enquanto o Autopilot ajusta suas solicitações de recursos para a nova implantação.
Como
maxConcurrent:está definido como1na definição do pacote de frota, a API Fleet Package aguarda até que onginx-deploymentseja totalmente implantado em um cluster antes de iniciar a implantação no segundo cluster. Se você mudou a estratégia de lançamento paramaxConcurrent: 2ou mais recente, os recursos seriam implantados nos dois clusters simultaneamente.Depois de alguns minutos, você vai ver duas novas cargas de trabalho para o
nginx-deploymentnos dois clusters. Talvez seja necessário atualizar a página.
Você pode continuar explorando diferentes estratégias de implantação com pacotes de frota. Por exemplo, você pode adicionar um novo cluster à sua frota para observar que sua carga de trabalho é implantada automaticamente nesse novo cluster. Para mais informações sobre estratégias e variações de implantação, consulte Implantar pacotes de frota.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.
- No console Google Cloud , acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
Para excluir o repositório, siga estas etapas:
Em uma janela do navegador da Web do seu repositório do GitHub, abaixo do nome do repositório, clique em Configurações.
Na página de configurações gerais (selecionada por padrão), acesse a seção "Zona de perigo" e clique em Excluir este repositório.
Clique em Quero excluir este repositório.
Leia os alertas e clique em Li e entendi esses efeitos.
Para verificar se você está excluindo o repositório correto, digite o nome dele no campo de texto.
Clique em Excluir este repositório.
A seguir
- Saiba mais sobre os pacotes de frota.
- Saiba como implantar pacotes de frota.
- Confira o tutorial de apps escalonáveis, uma série de tutoriais que ensinam a implantar, executar e gerenciar ambientes de aplicativos modernos no GKE. Ele inclui o tutorial Centralizar a gestão da mudança, que explora o escalonamento vertical das mudanças de configuração com pacotes de frota.