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:
Crie uma configuração do Skaffold.
O arquivo de configuração do Skaffold é onde você configura o comportamento do destino. Essa configuração faz referência a imagens de contêiner e comandos de shell para execução nessas imagens, que são as ações para operações de renderização e implantação.
Defina um tipo de segmentação personalizada e uma segmentação que faça referência a esse tipo.
Definir o pipeline de entrega do Cloud Deploy.
Esse pipeline inclui apenas um estágio e usa apenas um destino. Nessa fase, você vai fazer referência ao destino configurado.
Crie uma versão, que cria automaticamente um lançamento, resultando na representação personalizada e nas operações de implantação.
Como parte do lançamento, as operações de renderização e implantação definidas na configuração do Skaffold sejam executados.
Confira os resultados das operações personalizadas. Isso inclui um arquivo de configuração renderizado enviado para o Cloud Storage, uma string gravada nesse arquivo e um arquivo de resultados que inclui o status da operação.
Antes de começar
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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. Estas etapas são incluídas para projetos que desativam concessões automáticas de papéis para contas de serviç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 o ambiente de execução específico.
-
Adicione o papel
iam.serviceAccountUser
, que inclui a permissãoactAs
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
Se você já tem a Google Cloud CLI instalada, verifique se está executando a versão mais recente versão:
gcloud components update
Preparar a configuração do Skaffold e o manifesto do aplicativo
O Cloud Deploy usa o Skaffold para fornecer os detalhes sobre o que implantar e como implantar no destino.
Neste guia de início rápido, você vai criar um arquivo skaffold.yaml
, que define
ações personalizadas que representam as operações de renderização e implantação do
tipo de segmentação.
Observe que as ações personalizadas fornecidas neste guia de início rápido não implantam realmente de qualquer aplicativo para o 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 cumprir o contrato de destino personalizado entre o Cloud Deploy e a renderização e implantação definidas pelo usuário.
Abra uma janela de terminal.
Crie um novo diretório e navegue até ele.
mkdir custom-target-quickstart cd custom-target-quickstart
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 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:66e2681aa3099b4e517e4cdcdefff8f2aa45d305007124ccdc09686f6712d018 command: ['/bin/bash'] args: - '-c' - |- echo {\"resultStatus\": \"SUCCEEDED\"} > results.json gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
Esse arquivo inclui a estrofe
customActions:
, que define 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 um imagem de contêiner a ser executada e 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, 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 ou em arquivos separados. Neste guia de início rápido, você criará um único arquivo com todos os três.
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
Registre o pipeline e os destinos no serviço do 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 é o destino que usa 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 do 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 uma versão
Uma versão é o recurso central do Cloud Deploy que representa 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 saber mais sobre esse ciclo de vida.
Execute o seguinte comando no diretório custom-target-quickstart
para
crie 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
Assim como acontece com todas as versões (a menos que incluam --disable-initial-rollout
),
O Cloud Deploy cria automaticamente um
rollout também. 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 ecoar 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 conferir o arquivo e as strings nele:
No console do 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 não 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. Neste caso, o arquivo é a saída a ação de renderização personalizada definida na configuração
skaffold.yaml
que contém a string "Exemplo de conteúdo renderizado de manifesto".Encontre os buckets do Cloud Storage criados por essa versão.
Abrir a página "Procurar" do Cloud Storage
A página Buckets é exibida, mostrando dois buckets criados para este lançamento. 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 nosso está configurada para criação.Clique no bucket cujo nome começa com
us-central1.deploy-artifacts
...Clique na pasta com nome que começa com
custom-targets-pipeline-
e clique na pastatest-release-001
.Clique na pasta com o nome do lançamento, que deve ser
test-release-001-to-sample-env-0001
.Clique na pasta mostrada, que é um UUID, e na pasta
custom-output
.Clique em
results.json
e, em seguida, no URL com hiperlink no campo URL autenticado.Esse arquivo contém a string que você configurou como saída do
custom-deploy
, no seuskaffold.yaml
:
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
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
Exclua os dois buckets do Cloud Storage que o Cloud Deploy criados.
Pronto, você concluiu as etapas deste início rápido.