Implantar recursos em uma frota

Este tutorial ensina como 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 do Git ao Cloud Build
  • Criar e registrar clusters em uma frota
  • Instalar o Config Sync como padrão da frota
  • Implantar recursos do repositório para a frota de clusters

Antes de começar

  1. 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.
  2. Install the Google Cloud CLI.
  3. To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. 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.

  6. Make sure that billing is enabled for your Google Cloud project.

  7. 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
  8. Install the Google Cloud CLI.
  9. To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. 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.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. 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
  14. Crie ou tenha acesso a uma conta do GitHub.

Custos

Neste documento, você 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. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Conectar ao Git

O 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 novo repositório do GitHub, siga estas etapas:

  1. No navegador da Web, abra o GitHub.

  2. 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 está criando o repositório com sua conta pessoal.

  3. Na barra de ferramentas, selecione Adicionar e clique em Novo repositório.

  4. Digite fleet-package-tutorial como o nome do repositório.

  5. Mantenha Público selecionado como a visibilidade do repositório.

  6. 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:

  1. Abra a página do Cloud Build no console do Google Cloud e selecione Repositórios.

    Abrir a página Repositórios

  2. Confira se você está na página Repositórios de 2ª geração. Se necessário, selecione Visualizar repositórios (2ª geração).

  3. Clique em Criar conexão de host.

  4. No menu Região, selecione us-central1 (Iowa) como sua região.

  5. No campo Nome, digite fleet-package-quickstart-connection como o nome da sua conexão.

  6. Clique em Conectar.

  7. Se esta for a primeira vez que você conecta o Cloud Build à sua conta do GitHub, siga estas etapas:

    1. 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.
    2. Instale o Cloud Build no seu repositório do GitHub. Selecione Instalar em uma nova conta.
    3. Na nova janela aberta, selecione a conta do GitHub em que você criou a bifurcação do Cymbal Bank anteriormente. Em um ambiente de produção, é possível selecionar outras contas ou repositórios para os quais você delegou acesso.
    4. Siga todos os prompts de autenticação para confirmar sua identidade no GitHub.
    5. Na janela do GitHub para acesso ao repositório do Cloud Build, escolha Apenas repositórios selecionados.
    6. No menu suspenso que lista os repositórios, selecione o repositório fleet-package-tutorial.
    7. Clique em Salvar.
  8. 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.

  9. No menu Conexão, selecione fleet-package-quickstart-connection.

  10. No menu Repositórios, selecione o repositório fleet-package-tutorial.

  11. Selecione Vincular.

Configurar seus dispositivos

Nesta seção, você configura a 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:

  1. 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, como us-central1.
  2. 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 de frota, o Config Sync precisa estar instalado em ambos os 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:

  1. No console do Google Cloud , acesse a página Gerenciador de recursos.

    Acessar o gerenciador de recursos

  2. No painel Config Sync, clique em Configurar.

  3. Clique em Personalizar configurações da frota. Na caixa de diálogo exibida, selecione Upgrades automáticos. Essa configuração garante que os clusters tenham uma versão do Config Sync compatível com pacotes de frota.

  4. Clique em Salvar alterações.

  5. Clique em Configurar.

  6. 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, clique em Confirmar para ativar a API anthosconfigmanagement.googleapis.com.

  7. 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ê definiu.

    A sincronização dos clusters pode levar alguns minutos. Prossiga para as próximas etapas quando o Config Sync aparecer como Installed.

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:

  1. Crie a conta de serviço:

    gcloud iam service-accounts create "quickstart-service-account"
    
  2. 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.

  3. Para conceder à conta de serviço permissão para gravar registros, adicione uma vinculação de política do IAM para o papel de 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.

Implantar recursos na frota

Neste tutorial, você vai adicionar um manifesto do Kubernetes com uma implantação do Nginx ao seu repositório do Git, publicar uma versão e criar um pacote de frota para implantar o aplicativo Nginx.

Confirmar um manifesto do Kubernetes no repositório

Para adicionar seus recursos ao GitHub e publicar uma versão, siga estas etapas:

  1. Em uma janela do navegador da Web do repositório do GitHub, clique em Adicionar arquivo e em Criar novo arquivo.

  2. 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
    
  3. Clique em Fazer commit das alterações...

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

  5. Na página principal do repositório, selecione Versões na barra lateral.

  6. Na parte de cima da página, escolha Criar uma nova versão.

  7. Selecione o menu Escolher uma tag e digite v1.0.0 como a tag. Clique em Criar nova tag.

  8. Clique em Publicar versão.

Implantar um recurso em clusters com um pacote de frota

Para implantar o novo recurso, crie um pacote de frota:

  1. 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. Ele geralmente está no formato USERNAME-REPOSITORY_NAME.

  2. Crie o pacote de frota para iniciar o lançamento:

    gcloud alpha container fleet packages create fp-nginx.yaml \
       --source=fleet-package.yaml \
       --project=PROJECT_ID
    
  3. Verifique se o pacote de frota foi criado:

    gcloud alpha container fleet packages list
    

    Clique no link fornecido para conferir 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.

  4. Na página do Google Kubernetes Engine do console do 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. Você também pode notar erros de disponibilidade enquanto o Autopilot ajusta suas solicitações de recursos para a nova implantação.

    Como maxConcurrent: está definido como 1 na definição do pacote de frota, a API do pacote de frota espera até que o nginx-deployment seja totalmente implantado em um cluster antes de iniciar a implantação no segundo cluster. Se você mudasse a estratégia de lançamento para maxConcurrent: 2 ou mais recente, os recursos seriam implantados nos dois clusters simultaneamente.

    Depois de alguns minutos, você vai notar duas novas cargas de trabalho para o nginx-deployment em ambos os 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, é possível adicionar um novo cluster à frota para observar se a 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 sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto Google Cloud com os recursos.

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto criado.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Para excluir o repositório, siga estas etapas:

  1. Em uma janela do navegador da Web da sua bifurcação do Cymbal Bank no GitHub, embaixo do nome do repositório, clique em Settings.

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

  3. Clique em Quero excluir este repositório.

  4. Leia os alertas e clique em Li e entendi esses efeitos.

  5. Para verificar se você está excluindo o repositório correto, digite o nome dele no campo de texto.

  6. Clique em Excluir este repositório.

A seguir