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. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    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. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    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