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

  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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

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

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable container.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  8. Install the Google Cloud CLI.

  9. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  10. Para inicializar a CLI gcloud, execute o seguinte comando:

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

  12. Verify that billing is enabled for your Google Cloud project.

  13. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable container.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  14. Criar ou ter acesso a uma conta do GitHub.
  15. 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.

    Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

    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:

    1. No navegador de Internet, abra o GitHub.

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

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

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

    5. Mantenha a opção Público selecionada como visibilidade do repositório.

    6. Selecione Criar repositório.

    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:

    1. Abra a página do Cloud Build na Google Cloud consola e, de seguida, selecione Repositórios.

      Abra a página Repositórios

    2. Certifique-se de que está na página Repositórios de 2.ª geração. Se necessário, selecione Ver repositórios (2.ª geração).

    3. Clique em Criar associação de anfitrião.

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

    5. No campo Nome, escreva fleet-package-quickstart-connection como o nome da ligação.

    6. Clique em Ligar.

    7. Se for a primeira vez que associa o Cloud Build à sua conta do GitHub, conclua os seguintes passos:

      1. 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.
      2. Instale o Cloud Build no seu repositório do GitHub. Selecione Instalar numa nova conta.
      3. 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.
      4. Siga todas as instruções de autenticação para confirmar a 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 pendente que apresenta os repositórios, selecione o seu repositório fleet-package-tutorial.
      7. Clique em Guardar.
    8. 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.

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

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

    11. Selecione Associar.

    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:

    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 o seguinte:

      • PROJECT_ID com o ID do seu projeto.
      • REGION com a região na qual 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
      

    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:

    1. Na Google Cloud consola, aceda à página Gestor de funcionalidades.

      Aceda ao Gestor de funcionalidades

    2. No painel Sincronização de configuração, clique em Configurar.

    3. Clique em Personalizar definições da frota. Na caixa de diálogo apresentada, selecione a versão do Config Sync a instalar.

    4. Clique em Configurar.

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

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

    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:

    1. Crie a conta de serviço:

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

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

    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:

    1. Numa janela do navegador de Internet do seu repositório do GitHub, clique em Adicionar ficheiro e, de seguida, em Criar novo ficheiro.

    2. 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
      
    3. Clique em Aplicar alterações…

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

    5. Na página principal do repositório, selecione Lançamentos na barra lateral.

    6. Na parte superior da página, escolha Criar um novo lançamento.

    7. Selecione o menu Escolher uma etiqueta e escreva v1.0.0 como etiqueta. Clique em Criar nova etiqueta.

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

    1. 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 formato USERNAME-REPOSITORY_NAME.

    2. Crie o pacote de frota para iniciar a implementação:

      gcloud container fleet packages create fp-nginx \
         --source=fleet-package.yaml \
         --project=PROJECT_ID
      
    3. 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.

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

      Abra a página Workloads

      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 como 1 na definição do pacote de frota, a API Fleet Package aguarda até que o nginx-deployment esteja totalmente implementado num cluster antes de iniciar a implementação no segundo cluster. Se alterou a estratégia de implementação para maxConcurrent: 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.

    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:

    1. Numa janela do navegador de Internet do seu repositório do GitHub, abaixo do nome do repositório, clique em Definições.

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

    3. Clique em Quero eliminar este repositório.

    4. Leia os avisos e clique em Li e compreendi estes efeitos.

    5. Para verificar se está a eliminar o repositório correto, no campo de texto, escreva o nome do repositório.

    6. Clique em Eliminar este repositório.

    O que se segue?