Este documento descreve como funcionam os destinos personalizados no Cloud Deploy.
O Cloud Deploy inclui suporte integrado para vários ambientes de tempo de execução como alvos. No entanto, a lista de tipos de segmentação suportados é finita. Com as segmentações personalizadas, pode implementar noutros sistemas além dos tempos de execução suportados.
Um destino personalizado é um destino que representa um ambiente de saída arbitrário que não seja um tempo de execução suportado pelo Cloud Deploy.
A página Crie um alvo personalizado descreve o processo de definição de um tipo de alvo personalizado e a respetiva implementação como alvo num pipeline de entrega.
O que é preciso para criar um alvo personalizado?
Cada alvo personalizado é composto pelos seguintes componentes:
Ações personalizadas, definidas em
skaffold.yamlSão semelhantes à forma como define os hooks de implementação. No ficheiro
skaffold.yaml, definecustomActions, em que cada ação personalizada identifica uma imagem de contentor a usar e comandos a executar nesse contentor.Desta forma, a segmentação personalizada é simplesmente uma ação ou um conjunto de ações definidas de forma personalizada.
Para qualquer tipo de segmentação personalizada, configura uma ação de renderização personalizada e uma ação de implementação personalizada. Estas ações consomem valores fornecidos pelo Cloud Deploy e têm de cumprir um conjunto de resultados necessários.
A ação de renderização personalizada é opcional, mas tem de criar uma, a menos que o seu destino personalizado funcione corretamente se for renderizado por
skaffold render, que é a predefiniçã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 no seuskaffold.yaml) que os destinos deste tipo usam para atividades de renderização de lançamentos e implementação de implementações.-
A definição do alvo para um alvo personalizado é igual à de qualquer tipo de alvo, exceto que inclui a propriedade
customTarget, cujo valor é o nome deCustomTargetType.
Com esses componentes implementados, pode usar o destino como qualquer outro destino, fazendo referência ao mesmo a partir da progressão do pipeline de implementação e tirando o máximo partido das funcionalidades do Cloud Deploy, como a promoção e as aprovações, e as reversões.
Um exemplo
O início rápido Definir e usar um tipo de destino personalizado cria um tipo de destino personalizado que inclui comandos simples para executar numa imagem de contentor: um comando para renderização e outro para implementação. Os comandos, neste caso, apenas adicionam texto aos ficheiros de saída necessários para a renderização e a implementação.
Para ver mais exemplos, consulte Exemplos de alvos personalizados.
Entradas e saídas necessárias
Qualquer tipo de segmentação personalizada definido para a implementação na nuvem tem de satisfazer os requisitos de entrada e saída, tanto para a renderização como para a implementação. Esta secção indica as entradas e saídas necessárias, bem como a forma como são fornecidas.
O Cloud Deploy fornece as entradas necessárias, tanto para a renderização como para a implementação, como variáveis de ambiente. As secções seguintes listam estas entradas, bem como as saídas que as ações de renderização e implementação personalizadas têm de devolver.
Implemente parâmetros como variáveis de ambiente
Além das variáveis de ambiente indicadas nesta secção, o Cloud Deploy pode transmitir aos seus contentores personalizados quaisquer parâmetros de implementação que tenha definido.
Entradas para renderizar ações
Para ações de renderização personalizadas, o Cloud Deploy fornece as seguintes entradas como variáveis de ambiente. Para implementações em várias fases (implementações canary), o Cloud Deploy fornece estas variáveis para cada fase.
CLOUD_DEPLOY_PROJECTO Google Cloud número do projeto no qual o alvo personalizado é criado.
CLOUD_DEPLOY_PROJECT_IDO Google Cloud ID do projeto.
CLOUD_DEPLOY_LOCATIONA Google Cloud região do tipo de segmentação personalizada.
CLOUD_DEPLOY_DELIVERY_PIPELINEO nome do pipeline de fornecimento do Cloud Deploy que faz referência ao tipo de destino personalizado.
CLOUD_DEPLOY_RELEASEO nome do lançamento para o qual a operação de renderização é invocada.
CLOUD_DEPLOY_TARGETO nome do destino do Cloud Deploy que usa o tipo de destino personalizado.
CLOUD_DEPLOY_PHASEA fase de implementação à qual a renderização corresponde.
CLOUD_DEPLOY_REQUEST_TYPEPara a ação de renderização personalizada, esta é sempre
RENDER.CLOUD_DEPLOY_FEATURESUma lista separada por vírgulas de funcionalidades do Cloud Deploy que o contentor personalizado tem de suportar. Esta variável é preenchida com base nas funcionalidades configuradas no seu pipeline de entrega.
Se a sua implementação não suportar as funcionalidades nesta lista, recomendamos que falhe durante a renderização.
Para implementações padrão, este campo está vazio. Para implementações canary, o valor é
CANARY. Se o valor fornecido pelo Cloud Deploy forCANARY, a ação de renderização é invocada para cada fase no teste canário. A percentagem de testes canários para cada fase é fornecida na variável de ambienteCLOUD_DEPLOY_PERCENTAGE_DEPLOY.CLOUD_DEPLOY_PERCENTAGE_DEPLOYA percentagem de implementação associada a esta operação de renderização. Se a variável de ambiente
CLOUD_DEPLOY_FEATURESestiver definida comoCANARY, a ação de renderização personalizada é chamada para cada fase, e esta variável é definida como a percentagem de teste canário para cada fase. Para implementações padrão e para implementações de teste que atingiram a fasestable, isto é100.