Defina e use um tipo de segmentação personalizado

Este início rápido mostra como usar o Cloud Deploy para criar um tipo de destino personalizado e, em seguida, implementá-lo num destino personalizado desse tipo.

Neste início rápido, vai fazer o seguinte:

  1. Crie uma configuração do Skaffold.

    O ficheiro de configuração do Skaffold é onde configura o comportamento do destino. Esta configuração faz referência a imagens de contentores, além de comandos de shell, a serem executados nessas imagens, que são as ações para operações de renderização e implementação.

  2. Defina um tipo de alvo personalizado e um alvo que faça referência a esse tipo.

  3. Defina o pipeline de entrega do Cloud Deploy.

    Este pipeline inclui apenas uma fase e usa apenas um alvo. Nessa fase, vai referenciar o alvo que configurou.

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

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

  5. Veja os resultados das operações personalizadas. Isto inclui um ficheiro de configuração renderizado carregado para o Cloud Storage, e uma string escrita nesse ficheiro, bem como um ficheiro de resultados que inclui o estado da operação.

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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

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

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

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  10. Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

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

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

    gcloud init
  14. Se já tiver a Google Cloud CLI instalada, certifique-se de que está a executar a versão mais recente:

    gcloud components update
    
  15. Certifique-se de que a conta de serviço predefinida do Compute Engine tem autorizações suficientes.

    A conta de serviço pode já ter as autorizações necessárias. Estes passos são incluídos para projetos que desativam as concessões de funções automáticas para contas de serviço predefinidas.

    1. Primeiro, adicione a função 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 programador para o seu tempo de execução específico.
    3. Adicione a função iam.serviceAccountUser, que inclui a autorização actAspara implementar no tempo 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
      

    Prepare a configuração do Skaffold

    O Cloud Deploy usa o Skaffold para fornecer os detalhes sobre o que implementar e como o implementar no seu destino.

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

    Tenha em atenção que as ações personalizadas fornecidas neste início rápido não implementam realmente nenhuma aplicação num tempo de execução. As ações de renderização e implementação carregam um ficheiro de resultados para o Cloud Storage para cumprir o contrato de destino personalizado entre o Cloud Deploy e a renderização e a implementação definidas pelo utilizador.

    1. Abra uma janela de terminal.

    2. Crie um novo diretório e navegue para o mesmo.

      mkdir custom-target-quickstart
      cd custom-target-quickstart
      
    3. Crie um ficheiro denominado 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:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e
          command: ['/bin/bash']
          args:
            - '-c'
            - |-
              echo "Sample manifest rendered content" > manifest.txt
              gcloud storage cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt
              echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json
              gcloud storage 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:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e
          command: ['/bin/bash']
          args:
            - '-c'
            - |-
              echo {\"resultStatus\": \"SUCCEEDED\"} > results.json
              gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
      

      Este ficheiro inclui a secção customActions:, que define uma ação de renderização personalizada e uma ação de implementação personalizada. Cada uma destas ações personalizadas faz referência a uma imagem de contentor para executar e a comandos a executar nesse contentor.

      Consulte a referência skaffold.yaml para mais informações acerca deste ficheiro de configuração.

    Crie o pipeline de entrega, o tipo de segmentação personalizado e o alvo

    Pode definir o pipeline de entrega, o tipo de alvo personalizado e o alvo num ficheiro ou em ficheiros separados. Neste início rápido, cria um único ficheiro com todos os três.

    1. No diretório custom-target-quickstart, crie um novo ficheiro, 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. Registe o pipeline e os destinos no serviço Cloud Deploy:

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

      Agora, tem um pipeline de entrega com um alvo. Este é o seu destino através do tipo de destino personalizado, e este pipeline não implementa uma aplicação num tempo de execução.

    3. Confirme o seu pipeline e alvos:

      Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de entrega para ver uma lista dos pipelines de entrega disponíveis.

      Abra a página Pipelines de fornecimento

      É apresentada a pipeline de fornecimento que acabou de criar, com um alvo apresentado na coluna Alvos.

      Página do pipeline de fornecimento na consola Google Cloud , que mostra o seu pipeline

    Crie um lançamento

    Um lançamento é o recurso central do Cloud Deploy que representa as alterações que estão a ser implementadas. O pipeline de fornecimento define o ciclo de vida dessa versão. Consulte a secção Arquitetura do serviço Cloud Deploy para ver detalhes sobre esse ciclo de vida.

    Execute o seguinte comando a partir do diretório custom-target-quickstart para criar um recurso release que represente a ação personalizada a implementar:

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

    Tal como acontece com todos os lançamentos (a menos que incluam --disable-initial-rollout), o Cloud Deploy também cria automaticamente um recurso de implementação. E todas as fases dessa implementação são executadas, incluindo a renderização e a implementação.

    Veja os resultados na Google Cloud consola

    Após alguns minutos, a implementação está concluída. Neste caso, uma vez que as duas ações personalizadas são comandos para repetir strings num ficheiro e carregar o ficheiro para o Cloud Storage, nada é implementado em nenhum tempo de execução de destino.

    No entanto, pode ver o ficheiro e as strings nesse ficheiro:

    1. Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de fornecimento para ver o seu pipeline de fornecimento (custom-targets-pipeline).

      Abra a página Pipelines de fornecimento

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

      A visualização do pipeline mostra o estado de implementação da app. Uma vez que existe apenas uma fase no pipeline, a visualização mostra apenas um nó.

      Visualização do pipeline de entrega a mostrar sucesso

      O lançamento é apresentado no separador Lançamentos em Detalhes do pipeline de envio.

    3. Clique no nome da versão.

      É apresentada a página Detalhes do lançamento.

    4. Clique no separador Artefactos.

    5. Em Artefactos de destino, clique no link VER ARTEFACTOS.

      É apresentado o ficheiro de manifesto renderizado. Neste caso, o ficheiro é o resultado da ação de renderização personalizada que definiu no ficheiro de configuração skaffold.yaml, que contém a string "Sample manifest rendered content".

      Resultado da ação de renderização personalizada

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

      Abra a página do navegador do Cloud Storage

      É apresentada a página Segmentos, que mostra dois segmentos criados para esta versão. Um contentor contém o ficheiro de configuração do pipeline de fornecimento e o resultado da renderização skaffold.yaml. O outro inclui o ficheiro de saída que a nossa ação personalizada está configurada para criar.

    7. Clique no contentor cujo nome começa por us-central1.deploy-artifacts

      Lista de contentores do Cloud Storage

    8. Clique na pasta cujo nome começa por custom-targets-pipeline- e, de seguida, clique na pasta test-release-001.

    9. Clique na pasta cujo nome é o nome da implementação, que deve ser test-release-001-to-sample-env-0001.

    10. Clique na pasta apresentada, que é um UUID, e, de seguida, clique na pasta custom-output.

    11. Clique em results.json e, de seguida, clique no URL com hiperligação no campo URL autenticado.

      Este ficheiro contém a string que configurou como resultado da ação custom-deploy no seu skaffold.yaml:

      Resultado da implementação da ação personalizada

    Limpar

    Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.

    1. Elimine o pipeline de envio, o destino, o lançamento e a implementação:

      gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
      
    2. Elimine ambos os contentores do Cloud Storage criados pelo Cloud Deploy.

      Abra a página do navegador do Cloud Storage

    É tudo. Concluiu este início rápido!

    O que se segue?