Este documento descreve como os destinos personalizados funcionam no Cloud Deploy.
O Cloud Deploy inclui suporte integrado a vários ambientes de execução como destinos. No entanto, a lista de tipos de destino compatíveis é finita. Com os destinos personalizados, é possível implantar em outros sistemas além dos runtimes com suporte.
Um destino personalizado representa um ambiente de saída arbitrário, diferente de um ambiente de execução compatível com o Cloud Deploy.
A página Criar um destino personalizado descreve o processo de definição de um tipo de destino personalizado e sua implementação como destino em um pipeline de entrega.
O que é incluído em um destino personalizado?
Cada destino personalizado consiste nos seguintes componentes:
Ações personalizadas, definidas em
skaffold.yaml
Elas são semelhantes à forma como você define deploy hooks. No arquivo
skaffold.yaml
, você definecustomActions
, em que cada ação personalizada identifica uma imagem de contêiner a ser usada e os comandos a serem executados nesse contêiner.Dessa forma, a segmentação personalizada é simplesmente uma ação ou um conjunto de ações definido pelo usuário.
Para qualquer tipo de segmentação personalizada, você configura uma ação de renderização personalizada e uma ação de implantação personalizada. Essas ações consomem valores fornecidos pelo Cloud Deploy e precisam atender a um conjunto de saídas necessárias.
A ação de renderização personalizada é opcional, mas você precisa criar uma, a menos que o destino personalizado funcione corretamente se renderizado por
skaffold render
, que é o padrão do Cloud Deploy.Uma definição de tipo de segmentação personalizada
O
CustomTargetType
é um recurso do Cloud Deploy que identifica as ações personalizadas (definidas separadamente noskaffold.yaml
) que usam esse tipo de destino para atividades de renderização de lançamento e implantação.-
A definição de destino personalizado é igual a qualquer tipo de destino, exceto por incluir a propriedade
customTarget
, cujo valor é o nome doCustomTargetType
.
Com esses componentes em vigor, você pode usar o destino como faria com qualquer outro, fazendo referência a ele na progressão do pipeline de entrega e usando todos os recursos do Cloud Deploy, como promoção e aprovações e reversão.
Um exemplo
O início rápido Definir e usar um tipo de segmentação personalizada cria um tipo de segmentação personalizada que inclui comandos simples para executar em uma imagem de contêiner: um comando para renderização e outro para implantação. Os comandos, neste caso, apenas adicionam texto aos arquivos de saída necessários para renderização e implantação.
Para mais exemplos, consulte Exemplos de destino personalizado.
Entradas e saídas obrigatórias
Qualquer tipo de destino personalizado definido para o Cloud Deploy precisa atender aos requisitos de entrada e saída, para renderização e implantação. Esta seção lista quais entradas e saídas são necessárias e como elas são fornecidas.
O Cloud Deploy fornece as entradas necessárias, para renderização e implantação, como variáveis de ambiente. As seções a seguir listam essas entradas, bem como as saídas que suas ações de renderização e implantação personalizadas precisam retornar.
Implantar parâmetros como variáveis de ambiente
Além das variáveis de ambiente listadas nesta seção, o Cloud Deploy pode transmitir aos contêineres personalizados todos os parâmetros de implantação definidos.
Entradas para renderizar ações
Para ações de renderização personalizadas, o Cloud Deploy fornece as seguintes entradas obrigatórias como variáveis de ambiente. Para lançamentos em várias fases (implantações canário), o Cloud Deploy fornece essas variáveis para cada fase.
CLOUD_DEPLOY_PROJECT
O projeto do Google Cloud em que o tipo de destino personalizado foi criado.
CLOUD_DEPLOY_LOCATION
A região do Google Cloud para o tipo de destino personalizado.
CLOUD_DEPLOY_DELIVERY_PIPELINE
O nome do pipeline de entrega do Cloud Deploy que faz referência ao tipo de destino personalizado.
CLOUD_DEPLOY_RELEASE
O nome da versão para a qual a operação de renderização é invocada.
CLOUD_DEPLOY_TARGET
O nome do destino do Cloud Deploy que usa o tipo de destino personalizado.
CLOUD_DEPLOY_PHASE
A fase de lançamento a que o render corresponde.
CLOUD_DEPLOY_REQUEST_TYPE
Para a ação de renderização personalizada, é sempre
RENDER
.CLOUD_DEPLOY_FEATURES
Uma lista separada por vírgulas dos recursos do Cloud Deploy aos quais o contêiner personalizado precisa oferecer suporte. Essa variável é preenchida com base nos recursos configurados no pipeline de entrega.
Se a implementação não oferecer suporte aos recursos desta lista, recomendamos que ela falhe durante a renderização.
Para implantações padrão, ele fica vazio. Para implantações canário, o valor é
CANARY
. Se o valor fornecido pelo Cloud Deploy forCANARY
, a ação de renderização será invocada para cada fase no canário. A porcentagem de canário para cada fase é fornecida na variável de ambienteCLOUD_DEPLOY_PERCENTAGE_DEPLOY
.CLOUD_DEPLOY_PERCENTAGE_DEPLOY
A porcentagem de implantação associada a essa operação de renderização. Se a variável de ambiente
CLOUD_DEPLOY_FEATURES
estiver definida comoCANARY
, a ação de renderização personalizada será chamada para cada fase, e essa variável será definida como a porcentagem de canário para cada fase. Para implantações padrão e implantações canário que alcançaram a fasestable
, esse valor é100
.CLOUD_DEPLOY_STORAGE_TYPE
O provedor de armazenamento. Sempre
GCS
.CLOUD_DEPLOY_INPUT_GCS_PATH
O caminho do Cloud Storage para o arquivo de renderização gravado quando a versão foi criada.
CLOUD_DEPLOY_OUTPUT_GCS_PATH
O caminho do Cloud Storage em que o contêiner de renderização personalizado precisa fazer upload de artefatos para uso na implantação. A ação de renderização precisa fazer upload de um arquivo chamado
results.json
contendo os resultados dessa operação de renderização. Para mais informações, consulte Saídas da ação de renderização.
Saídas da ação de renderização
Sua ação de renderização personalizada precisa fornecer as informações descritas nesta
seção. As informações precisam ser incluídas no arquivo de resultados, chamado
results.json
, localizado no bucket do Cloud Storage fornecido pelo
Cloud Deploy.
Arquivos de configuração renderizados
Um arquivo
results.json
, contendo as seguintes informações:Uma indicação do estado de sucesso ou falha da ação personalizada.
Os valores válidos são:
SUCCEEDED
eFAILED
.(Opcional) todas as mensagens de erro geradas pela ação personalizada.
O caminho do Cloud Storage para o arquivo de configuração renderizado ou arquivos.
O caminho de todos os arquivos de configuração renderizados é o URI completo. Ela é preenchida parcialmente usando o valor do
CLOUD_DEPLOY_OUTPUT_GCS_PATH
fornecido pelo Cloud Deploy.É necessário fornecer o arquivo de configuração renderizado, mesmo que ele esteja vazio. O conteúdo do arquivo pode ser qualquer coisa, em qualquer formato, desde que seja consumível pela sua ação de implantação personalizada. Recomendamos que esse arquivo seja legível por humanos, para que você e outros usuários da sua organização possam acessá-lo no Release Inspector.
(Opcional) Um mapa de todos os metadados que você quer incluir
O destino personalizado cria esses metadados. Esses metadados são armazenados na versão, no campo
custom_metadata
.
Se você precisar examinar o arquivo results.json
, por exemplo, para depuração,
encontre o URI do Cloud Storage nos registros do Cloud Build.
Exemplo de arquivo de resultados de renderização
Confira a seguir um exemplo de saída de arquivo results.json
de uma ação de renderização
personalizada:
{
"resultStatus": "SUCCEEDED",
"manifestFile": "gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/manifest.yaml",
"failureMessage": "",
"metadata": {
"key1": "val",
"key2": "val"
}
}
Entradas para implantar ações
Para ações de implantação personalizadas, o Cloud Deploy fornece as seguintes entradas necessárias como variáveis de ambiente:
CLOUD_DEPLOY_PROJECT
O projeto do Google Cloud em que o destino personalizado é criado.
CLOUD_DEPLOY_LOCATION
A região do Google Cloud para o tipo de destino personalizado.
CLOUD_DEPLOY_DELIVERY_PIPELINE
O nome do pipeline de entrega do Cloud Deploy que faz referência ao destino que usa o tipo de destino personalizado.
CLOUD_DEPLOY_RELEASE
O nome da versão para a qual a operação de implantação é invocada.
CLOUD_DEPLOY_ROLLOUT
O nome do lançamento do Cloud Deploy para o qual esta implantação se destina.
CLOUD_DEPLOY_TARGET
O nome do destino do Cloud Deploy que usa o tipo de destino personalizado.
CLOUD_DEPLOY_PHASE
A fase de lançamento a que o deploy corresponde.
CLOUD_DEPLOY_REQUEST_TYPE
Para a ação de implantação personalizada, é sempre
DEPLOY
.CLOUD_DEPLOY_FEATURES
Uma lista separada por vírgulas dos recursos do Cloud Deploy aos quais o contêiner personalizado precisa oferecer suporte. Essa variável é preenchida com base nos recursos configurados no pipeline de entrega.
Se a implementação não oferecer suporte aos recursos desta lista, recomendamos que ela falhe durante a renderização.
Para implantações padrão, ele fica vazio. Para implantações canário, o valor é
CANARY
. Se o valor fornecido pelo Cloud Deploy forCANARY
, a ação de renderização será invocada para cada fase no canário. A porcentagem de canário para cada fase é fornecida na variável de ambienteCLOUD_DEPLOY_PERCENTAGE_DEPLOY
.CLOUD_DEPLOY_PERCENTAGE_DEPLOY
A porcentagem de implantação associada a essa operação. Se a variável de ambiente
CLOUD_DEPLOY_FEATURES
estiver definida comoCANARY
, a ação de implantação personalizada será chamada para cada fase e essa variável será definida como a porcentagem de canário para cada fase. Sua ação de implantação precisa ser executada para cada fase.CLOUD_DEPLOY_STORAGE_TYPE
O provedor de armazenamento. Sempre
GCS
.CLOUD_DEPLOY_INPUT_GCS_PATH
O caminho do Cloud Storage em que o renderizador personalizado gravou os arquivos de configuração renderizados.
CLOUD_DEPLOY_SKAFFOLD_GCS_PATH
O caminho do Cloud Storage para a configuração renderizada do Skaffold.
CLOUD_DEPLOY_MANIFEST_GCS_PATH
O caminho do Cloud Storage para o arquivo de manifesto renderizado.
CLOUD_DEPLOY_OUTPUT_GCS_PATH
O caminho para o diretório do Cloud Storage em que o contêiner de implantação personalizada precisa fazer upload dos artefatos de implantação. Para mais informações, consulte Saídas da ação de implantação.
Saídas da ação de implantação
A ação de implantação personalizada precisa gravar um arquivo de saída results.json
. Esse arquivo
precisa estar localizado no bucket do Cloud Storage fornecido pelo
Cloud Deploy (CLOUD_DEPLOY_OUTPUT_GCS_PATH
).
O arquivo precisa incluir o seguinte:
Uma indicação do estado de sucesso ou falha da ação de implantação personalizada.
Os status válidos são os seguintes:
SUCCEEDED
FAILED
SKIPPED
(para implantações canário em que as fases canário são puladas para ir direto parastable
.)
(Opcional) Uma lista de arquivos de artefato de implantação, na forma de caminhos do Cloud Storage
O caminho é o URI completo. Ela é preenchida parcialmente usando o valor do
CLOUD_DEPLOY_OUTPUT_GCS_PATH
fornecido pelo Cloud Deploy.Os arquivos listados aqui são preenchidos em recursos de execução de job como artefatos de implantação.
(Opcional) uma mensagem de falha, se a ação de implantação personalizada não tiver êxito (retornando um estado
FAILED
)Essa mensagem é usada para preencher o
failure_message
na execução do job para essa ação de implantação.(Opcional) uma mensagem de pular, para fornecer mais informações se a ação retornar um status
SKIPPED
.(Opcional) Um mapa de todos os metadados que você quer incluir
O destino personalizado cria esses metadados. Esses metadados são armazenados na execução do job e no lançamento, no campo
custom_metadata
.
Se você precisar examinar o arquivo results.json
, por exemplo, para depuração,
encontre o URI do Cloud Storage nos logs de renderização da versão do Cloud Build.
Exemplo de arquivo de resultados de implantação
Confira a seguir um exemplo de saída de arquivo results.json
de uma ação de implantação
personalizada:
{
"resultStatus": "SUCCEEDED",
"artifactFiles": [
"gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/file1.yaml",
"gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/file2.yaml"
],
"failureMessage": "",
"skipMessage": "",
"metadata": {
"key1": "val",
"key2": "val"
}
}
Mais informações sobre as ações personalizadas
Confira alguns pontos a serem considerados ao configurar e usar tipos de segmentação personalizados.
Como executar as ações personalizadas
Suas ações de renderização e implantação personalizadas são executadas no ambiente de execução do Cloud Deploy. Não é possível configurar as ações personalizadas para serem executadas em um cluster do Google Kubernetes Engine.
Como usar configurações remotas e reutilizáveis do Skaffold
Conforme descrito neste documento, você configura sua ação personalizada no
arquivo skaffold.yaml
fornecido na criação da versão. No entanto, também é possível armazenar
as configurações do Skaffold em um repositório do Git ou em um bucket do Cloud Storage e
fazer referência a elas na definição do tipo de destino personalizado.
Isso permite usar ações personalizadas definidas e armazenadas em um único local compartilhado, em vez de incluir as ações personalizadas com cada arquivo
skaffold.yaml
das versões.
Segmentações e estratégias de implantação personalizadas
Os destinos personalizados têm suporte total para implantações padrão.
O Cloud Deploy oferece suporte a implantações canário, desde que o renderizador e o implantador personalizados ofereçam suporte ao recurso canário.
Use a configuração de canário personalizada. Não é possível usar canários automatizados e personalizados.
Destinatários personalizados e parâmetros de implantação
É possível usar parâmetros de implantação com segmentos personalizados. É possível definir essas configurações na etapa do pipeline de entrega, no destino que usa um tipo de destino personalizado ou na versão.
Os parâmetros de implantação são transmitidos aos contêineres de renderização e implantação personalizados como variáveis de ambiente, além dos já fornecidos.
Exemplos de segmentações personalizadas
O repositório cloud-deploy-samples contém um conjunto de implementações de destino personalizadas de exemplo. Os seguintes exemplos estão disponíveis:
GitOps
Vertex AI
Terraform
Infrastructure Manager
Helm
Cada amostra inclui um início rápido.
Esses exemplos não são um produto do Google Cloud com suporte e não são abrangidos por um contrato de suporte do Google Cloud. Para informar bugs ou solicitar recursos em um produto do Google Cloud, entre em contato com o suporte do Google Cloud.
A seguir
Agora que você já sabe sobre os segmentos personalizados, saiba como configurar e usar.
Confira o guia de início rápido: definir e usar um tipo de meta personalizado.
Saiba mais sobre como configurar destinos do Cloud Deploy.
Saiba mais sobre os ambientes de execução do Cloud Deploy.