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 implantar em um destino personalizado desse tipo.
Neste guia de início rápido, você fará o seguinte:
Defina um tipo de destino personalizado, em que você vai configurar o comportamento do destino. Essa configuração faz referência a imagens de contêiner e comandos do shell para serem executados nessas imagens, que são as ações para operações de renderização e implantação.
Defina uma meta que faça referência ao tipo de meta personalizada.
Defina o pipeline de entrega do Cloud Deploy.
Esse pipeline inclui apenas um estágio e usa apenas uma meta. Nessa etapa, você vai referenciar o destino configurado.
Crie uma configuração do Skaffold, que é necessária para a versão.
Crie um lançamento, que cria automaticamente um lançamento gradual, resultando na execução das operações personalizadas de renderização e implantação.
Como parte dessa versão e lançamento, as operações de renderização e implantação definidas na configuração do tipo de destino personalizado são executadas.
Confira os resultados das operações personalizadas. Isso inclui um arquivo de configuração renderizado enviado ao Cloud Storage, uma string gravada nesse arquivo e um arquivo de resultados que inclui o status da operação.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, 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.
-
In the Google Cloud console, on the project selector page, select or create 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init - 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 para projetos que desativam as concessões automáticas de papéis para contas de serviço padrão.
- 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" - Adicione a função de desenvolvedor para seu ambiente de execução específico.
-
Adicione o papel
iam.serviceAccountUser, que inclui a permissãoactAspara implantação 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
Se você já tiver a Google Cloud CLI instalada, verifique se está executando a versão mais recente:
gcloud components update
Criar o pipeline de entrega, o tipo de destino personalizado e o 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ê cria um único arquivo com os três.
Abra uma janela do terminal.
Crie um novo diretório e navegue até ele.
mkdir custom-target-quickstart cd custom-target-quickstartNo diretório custom-target-quickstart, crie um arquivo
clouddeploy.yamlcom 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 tasks: render: type: 'container' 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 deploy: type: 'container' 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.jsonA definição de tipo de destino personalizado inclui a estância
tasks, que define uma tarefa de renderização e uma tarefa de implantação. Cada uma dessas tarefas faz referência a uma imagem do contêiner para execução e comandos a serem executados nesse contêiner.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 usando o tipo de destino personalizado, e esse pipeline não implanta um aplicativo em um ambiente de execução.
Confirme o pipeline e os destinos:
No console Google Cloud , navegue até a página Pipelines de entrega do Cloud Deploy para conferir a lista dos seus 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.

Criar o arquivo de configuração do Skaffold
A versão neste guia de início rápido requer um arquivo de configuração do Skaffold, mas ele não exige uma configuração significativa.
Crie um arquivo chamado
skaffold.yamlcom o seguinte conteúdo:apiVersion: skaffold/v4beta7 kind: Config
Criar uma versão
Uma versão é o recurso central do Cloud Deploy que representa as mudanças 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 mais detalhes sobre esse ciclo de vida.
Execute o seguinte comando no diretório custom-target-quickstart para criar um recurso release que representa 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
Assim como em todas as versões (a menos que incluam --disable-initial-rollout),
o Cloud Deploy também cria automaticamente um recurso de
implantação. E todas as fases desse
lançamento são executadas, incluindo renderização e implantação.
Conferir os resultados no console do Google Cloud
Depois de alguns minutos, a implantação será concluída. Nesse caso, como as duas ações personalizadas são comandos para repetir strings em um arquivo e fazer upload dele para o Cloud Storage, nada é implantado em nenhum ambiente de execução de destino.
No entanto, é possível ver o arquivo e as strings nele:
No console Google Cloud , navegue até a página Pipelines de entrega do Cloud Deploy para conferir seu pipeline de entrega (
custom-targets-pipeline).Clique no nome do pipeline de entrega (
custom-targets-pipeline).A visualização do pipeline mostra o status de implantação do app. Como há apenas um estágio no pipeline, a visualização mostra apenas um nó.

E sua versão é listada na guia Versões em Detalhes do pipeline de entrega.
Clique no nome da versão.
A página Detalhes da versão é mostrada.
Clique na guia Artefatos.
Em Artefatos de destino, clique no link VER ARTEFATOS.
O arquivo de manifesto renderizado é mostrado. Nesse caso, o arquivo é a saída da ação de renderização personalizada definida na configuração do tipo de destino personalizado, contendo a string "Sample manifest rendered content".

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.yamlrenderizado. O outro inclui o arquivo de saída que nossa ação personalizada está configurada para criar.Clique no bucket cujo nome começa com
us-central1.deploy-artifacts...
Clique na pasta cujo nome começa com
custom-targets-pipeline-e depois na pastatest-release-001.Clique na pasta com o nome da sua implantação, que deve ser
test-release-001-to-sample-env-0001.Clique na pasta mostrada, que é um UUID, e depois na pasta
custom-output.Clique em
results.jsone depois 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, na definição de tipo de destino personalizada:
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.
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_IDExclua os dois buckets do Cloud Storage criados pelo Cloud Deploy.
Pronto, você concluiu as etapas deste início rápido.