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

  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. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

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

    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. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

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

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

    Novos usuários do Google Cloud podem estar qualificados para um teste gratuito.

    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:

    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 você 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 Git.

    Para conectar seu repositório do GitHub ao Cloud Build, siga estas etapas:

    1. Abra a página do Cloud Build no console 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. 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 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:

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

    1. No console 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 as configurações da frota. Na caixa de diálogo que aparece, selecione a versão do Config Sync para instalar.

    4. Clique em Configurar.

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

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

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

    1. Em uma janela do navegador da Web do seu 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. 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 \
         --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 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.

    4. 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 como 1 na definição do pacote de frota, a API Fleet Package aguarda até que o nginx-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 para maxConcurrent: 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.

    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:

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

    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