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
- 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.
-
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
-
Create or select a Google Cloud project.
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
gcloud services enable anthos.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com -
Install the Google Cloud CLI.
-
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
-
Create or select a Google Cloud project.
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
gcloud services enable anthos.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - Crie ou tenha acesso a uma conta do GitHub.
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-tutorial
como o nome do repositório.Mantenha Público selecionado como a visibilidade do repositório.
Selecione Criar repositório.
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-connection
como 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.
Crie um cluster do GKE:
gcloud container clusters create-auto cluster1 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Substitua:
PROJECT_ID
pelo código do projeto;REGION
pela 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
No console 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.
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
None
como 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
None
como a condição da política.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.yaml
e 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: 80
Clique 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
main
selecionada e clique em Confirmar alterações.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.0
como a tag. Clique em Criar nova tag.Clique em Publicar versão.
Este pacote de frota tem como alvo todos os clusters da sua frota, já que ele não contém um campo seletor. Isso também significa que a implantação do nginx será adicionada automaticamente a todos os clusters futuros adicionados à frota.
No Cloud Shell, crie um arquivo chamado
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. Geralmente, está no formatoUSERNAME-REPOSITORY_NAME
.Crie o pacote de frota para iniciar o lançamento:
gcloud alpha container fleet packages create fp-nginx \ --source=fleet-package.yaml \ --project=PROJECT_ID
Verifique se o pacote de frota foi criado:
gcloud alpha container fleet packages list
Clique 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 como1
na definição do pacote de frota, a API Fleet Package aguarda até que onginx-deployment
seja totalmente implantado em um cluster antes de iniciar a implantação no segundo cluster. Se você mudou a estratégia de lançamento paramaxConcurrent: 2
ou mais, os recursos seriam implantados nos dois clusters simultaneamente.Depois de alguns minutos, você verá duas novas cargas de trabalho para o
nginx-deployment
nos dois clusters. Talvez seja necessário atualizar a página.Em uma janela do navegador da Web da sua bifurcação do Cymbal Bank no 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.
- 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 ensina a implantar, executar e gerenciar ambientes de aplicativos modernos no GKE Enterprise. Ele inclui o tutorial Centralizar a gestão de mudanças, que mostra como aumentar as mudanças de configuração com pacotes de frota.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso,
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 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:
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 Git.
Para conectar seu repositório do GitHub ao Cloud Build, siga estas etapas:
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 de 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:
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:
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:
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 uma versão, siga estas etapas:
Implantar um recurso em clusters com um pacote de frota
Para implantar o novo recurso, crie um pacote de frota:
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.
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto criado.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Para excluir o repositório, siga estas etapas: