Definir e usar um tipo de segmentação personalizada

Neste guia de início rápido, mostramos como usar o Cloud Deploy para criar um tipo de destino personalizado e, em seguida, implantar em um destino personalizado desse tipo.

Neste guia de início rápido, você fará o seguinte:

  1. Crie uma configuração do Skaffold.

    O arquivo de configuração do Skaffold é onde você define o comportamento do destino. Essa configuração faz referência a imagens de contêiner e a comandos do shell para executar nessas imagens, que são as ações de renderização e implantação.

  2. Defina um tipo de segmentação personalizada e uma segmentação que faça referência a esse tipo.

  3. Definir o pipeline de entrega do Cloud Deploy.

    Este pipeline inclui apenas um estágio e usa apenas um destino. Nessa etapa, você fará referência ao destino configurado.

  4. Crie uma versão, que cria automaticamente um lançamento, resultando na execução das operações personalizadas de renderização e implantação.

    Como parte desta versão e lançamento, as operações de renderização e implantação definidas na configuração do Skaffold são executadas.

  5. Consultar os resultados das operações personalizadas. Isso inclui um arquivo de configuração renderizado enviado para o Cloud Storage e uma string gravada nesse arquivo, bem como um arquivo de resultados que inclui o status da operação.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, 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.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.

    Ative as APIs

  5. Instale a CLI do Google Cloud.
  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  8. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  9. Ative as APIs Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage.

    Ative as APIs

  10. Instale a CLI do Google Cloud.
  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Se você já tiver a Google Cloud CLI instalada, verifique se está executando a versão mais recente:

    gcloud components update
    
  13. Verifique se a conta de serviço padrão do Compute Engine tem permissões suficientes.

    A conta de serviço já pode ter as permissões necessárias. Essas etapas estão incluídas em projetos que desativam as concessões automáticas de papéis para contas de serviço padrão.

    1. Primeiro, adicione o papel clouddeploy.jobRunner:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/clouddeploy.jobRunner"
      
    2. Adicione a função de desenvolvedor para o ambiente de execução específico.
    3. Adicione o papel iam.serviceAccountUser, que inclui a permissão actAs para implantar no ambiente de execução:
      gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser" \
          --project=PROJECT_ID
      

Preparar a configuração e o manifesto do aplicativo do Skaffold

O Cloud Deploy usa o Skaffold para fornecer detalhes sobre o que implantar e como implantá-lo no destino.

Neste guia de início rápido, você cria um arquivo skaffold.yaml, que define ações personalizadas que representam as operações de renderização e implantação para o tipo de destino personalizado.

Observe que as ações personalizadas fornecidas neste guia de início rápido não implantam nenhum aplicativo em um ambiente de execução. As ações de renderização e implantação fazem upload de um arquivo de resultados para o Cloud Storage para atender ao contrato de destino personalizado entre o Cloud Deploy e a renderização e a implantação definidas pelo usuário.

  1. Abra uma janela de terminal.

  2. Crie um novo diretório e navegue até ele.

    mkdir custom-target-quickstart
    cd custom-target-quickstart
    
  3. Crie um arquivo chamado skaffold.yaml com o seguinte conteúdo:

    apiVersion: skaffold/v4beta7
    kind: Config
    customActions:
    - name: custom-render
      containers:
      - name: render
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo "Sample manifest rendered content" > manifest.txt
            gsutil cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt
            echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json
            gsutil cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    - name: custom-deploy
      containers:
      - name: deploy
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo {\"resultStatus\": \"SUCCEEDED\"} > results.json
            gsutil cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    

    Esse arquivo inclui a estrofe customActions:, definindo uma ação de renderização personalizada e uma ação de implantação personalizada. Cada uma dessas ações personalizadas faz referência a uma imagem de contêiner a ser executada e a comandos a serem executados nesse contêiner.

    Consulte a referência do skaffold.yaml para mais informações sobre esse arquivo de configuração.

Criar o pipeline de entrega, tipo de destino personalizado e destino

É possível definir o pipeline de entrega, o tipo de destino personalizado e o destino em um arquivo ou em arquivos separados. Neste guia de início rápido, você criará um único arquivo com os três.

  1. No diretório custom-target-quickstart, crie um novo arquivo, clouddeploy.yaml, com o seguinte conteúdo:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
      name: custom-targets-pipeline
    serialPipeline:
      stages:
      - targetId: sample-env
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
      name: sample-env
    customTarget:
      customTargetType: basic-custom-target
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: CustomTargetType
    metadata:
      name: basic-custom-target
    customActions:
      renderAction: custom-render
      deployAction: custom-deploy
    
  2. Registre o pipeline e os destinos com o serviço Cloud Deploy:

    gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
    

    Agora você tem um pipeline de entrega com um destino. Esse é seu destino que está usando o tipo de destino personalizado, e o pipeline não implanta um aplicativo em um ambiente de execução.

  3. Confirme o pipeline e os destinos:

    No console do Google Cloud, navegue até a página Pipelines de entrega do Cloud Deploy para ver uma lista de pipelines de entrega disponíveis.

    Abrir a página "Pipelines de entrega"

    O pipeline de entrega que você acabou de criar é mostrado, com um destino listado na coluna Destinos.

    página do pipeline de entrega no console do Google Cloud, mostrando o pipeline

Criar uma versão

Uma versão é o recurso central do Cloud Deploy que representa as alterações que estão sendo implantadas. O pipeline de entrega define o ciclo de vida dessa versão. Consulte Arquitetura de serviço do Cloud Deploy para ver detalhes sobre esse ciclo de vida.

Execute o seguinte comando no diretório custom-target-quickstart para criar um recurso release que represente a ação personalizada a ser implantada:

gcloud deploy releases create test-release-001 \
  --project=PROJECT_ID \
  --region=us-central1 \
  --delivery-pipeline=custom-targets-pipeline

Como acontece com todas as versões (a menos que elas incluam --disable-initial-rollout), o Cloud Deploy também cria automaticamente um recurso de lançamento. Todas as fases desse lançamento são executadas, incluindo renderização e implantação.

Conferir os resultados no console do Google Cloud

Após alguns minutos, a implantação será concluída. Nesse caso, como as duas ações personalizadas são comandos para transmitir strings em um arquivo e fazer upload dele para o Cloud Storage, nada é implantado no ambiente de execução de destino.

No entanto, você pode conferir o arquivo e as strings dele:

  1. No console do Google Cloud, navegue até a página Pipelines de entrega do Cloud Deploy para visualizar o pipeline de entrega (custom-targets-pipeline).

    Abrir a página "Pipelines de entrega"

  2. Clique no nome do pipeline de entrega (custom-targets-pipeline).

    A visualização do pipeline mostra o status da implantação do aplicativo. Como há apenas um estágio no pipeline, a visualização mostra apenas um nó.

    Visualização do pipeline de entrega mostrando o sucesso

    E sua versão é listada na guia Versões em Detalhes do pipeline de entrega.

  3. Clique no nome da versão.

    A página Detalhes da versão é exibida.

  4. Clique na guia Artefatos.

  5. Em Artefatos de destino, clique no link VER ARTIFATOS.

    O arquivo de manifesto renderizado é exibido. Nesse caso, o arquivo é a saída da ação de renderização personalizada que você definiu no arquivo de configuração skaffold.yaml, contendo a string "Sample manifesto renderizado conteúdo".

    Saída da ação de renderização personalizada

  6. Encontre os buckets do Cloud Storage criados por esta versão.

    Abrir a página "Procurar" do Cloud Storage

    A página Buckets é exibida, mostrando dois buckets criados para esta versão. Um bucket contém o arquivo de configuração do pipeline de entrega e o skaffold.yaml renderizado. O outro inclui o arquivo de saída que nossa ação personalizada está configurada para criar.

  7. Clique no bucket cujo nome começa com us-central1.deploy-artifacts...

    Lista de buckets do Cloud Storage

  8. Clique na pasta com um nome que começa com custom-targets-pipeline- e, em seguida, clique na pasta test-release-001.

  9. Clique na pasta que tem o nome do lançamento, que precisa ser test-release-001-to-sample-env-0001.

  10. Clique na pasta mostrada, que é um UUID, e na pasta custom-output.

  11. Clique em results.json e no URL com hiperlink no campo URL autenticado.

    Esse arquivo contém a string que você configurou como saída da ação custom-deploy no skaffold.yaml:

    Saída da ação personalizada de implantação

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

  1. Exclua o pipeline de entrega, o destino, a versão e o lançamento:

    gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
    
  2. Exclua os dois buckets do Cloud Storage criados pelo Cloud Deploy.

    Abrir a página "Procurar" do Cloud Storage

Pronto, você concluiu as etapas deste início rápido.

A seguir