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:
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.
Defina um tipo de alvo personalizado e um alvo que faça referência a esse tipo.
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.
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.
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
- 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.
-
Verify 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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify 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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- 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.
- 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"
- Adicione a função de programador para o seu tempo de execução específico.
-
Adicione a função
iam.serviceAccountUser
, que inclui a autorizaçãoactAs
para 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
Abra uma janela de terminal.
Crie um novo diretório e navegue para o mesmo.
mkdir custom-target-quickstart cd custom-target-quickstart
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.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
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.
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.
Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de fornecimento para ver o seu pipeline de fornecimento (
custom-targets-pipeline
).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ó.
O lançamento é apresentado no separador Lançamentos em Detalhes do pipeline de envio.
Clique no nome da versão.
É apresentada a página Detalhes do lançamento.
Clique no separador Artefactos.
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".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.Clique no contentor cujo nome começa por
us-central1.deploy-artifacts
…Clique na pasta cujo nome começa por
custom-targets-pipeline-
e, de seguida, clique na pastatest-release-001
.Clique na pasta cujo nome é o nome da implementação, que deve ser
test-release-001-to-sample-env-0001
.Clique na pasta apresentada, que é um UUID, e, de seguida, clique na pasta
custom-output
.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 seuskaffold.yaml
: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
Elimine ambos os contentores do Cloud Storage criados pelo Cloud Deploy.
Se já tiver a Google Cloud CLI instalada, certifique-se de que está a executar a versão mais recente:
gcloud components update
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.
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.
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:
Limpar
Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.
É tudo. Concluiu este início rápido!