Este documento descreve como criar um tipo de destino do Cloud Deploy personalizado e usar esse tipo de destino personalizado como um destino num pipeline de entrega do Cloud Deploy.
Segue-se o processo de nível superior para criar um tipo de alvo personalizado e usá-lo no seu pipeline de fornecimento:
Crie uma aplicação contentorizada ou aplicações que incluam a funcionalidade de implementação no seu alvo personalizado e que cumpram os requisitos do Cloud Deploy para tipos de alvos personalizados.
Defina uma ação personalizada em
skaffold.yamlque faça referência a esse contentor e especifique o comando ou os comandos a executar no mesmo.Crie uma definição de
CustomTargetTypeque faça referência à ação personalizada do passo anterior e registe-a como um recurso do Cloud Deploy.Defina um novo alvo com uma propriedade
customTargetque identifica o seu novo tipo de alvo personalizado.Faça referência a essa segmentação a partir da progressão da sua pipeline de fornecimento.
Cada um destes passos é descrito detalhadamente no resto deste documento.
Crie as suas aplicações contentorizadas
A funcionalidade de implementação no destino personalizado é definida em aplicações
em contentores, que fornece ao Cloud Deploy fazendo referência às mesmas a partir do ficheiro skaffold.yaml. Quando a pipeline de implementação inclui um destino que usa um tipo de destino personalizado, o Cloud Deploy chama os contentores de ações personalizadas definidos para esse tipo de destino personalizado, no Skaffold, para executar as ações de renderização e implementação que definiu.
O comportamento das suas aplicações depende de si. No entanto, tem de consumir as variáveis de ambiente de entrada fornecidas pelo Cloud Deploy e devolver as saídas necessárias.
Na maioria dos casos, cria um contentor para a ação de renderização e um para a ação de implementação, para cada tipo de segmentação personalizada que criar. A ação de renderização é opcional, mas, se não fornecer uma, o Cloud Deploy usa a predefinição skaffold render.
Defina as suas ações personalizadas no Skaffold
Com a imagem ou as imagens do contentor de ação personalizada no lugar, faz referência às mesmas a partir do ficheiro de configuração skaffold.yaml.
Configura cada ação personalizada para um alvo personalizado numa secção customActions. Para qualquer tipo de segmentação personalizada, cria uma ação personalizada, no Skaffold, para a renderização e outra para a implementação. A definição CustomTargetType identifica a ação personalizada usada para a renderização e a ação usada para a implementação.
Segue-se a configuração para ações de renderização e implementação personalizadas em
skaffold.yaml:
apiVersion: skaffold/v4beta7
kind: Config
customActions:
# custom render action
- name:
containers:
- name:
image:
command:
args:
# custom deploy action
- name:
containers:
- name:
image:
command:
args:
Nesta configuração do Skaffold:
customActions.nameÉ um nome arbitrário para a ação de renderização ou implementação personalizada. A definição de
CustomTargetTypefaz referência a este nome na propriedaderenderActionou na propriedadedeployAction.A secção
containersinclui a sua referência, além de comandos para executar esse contentor.A secção
containerspermite mais do que um contentor, mas a Google recomenda que use apenas um.customActions.containers.nameÉ um nome arbitrário para o contentor específico que está a usar para esta ação. Como prática recomendada, o nome deste contentor deve ser sempre qualificado com SHA.
imageÉ o caminho para a imagem do contentor.
commandÉ o comando ou os comandos a executar no contentor.
argsÉ uma coleção de argumentos para a função
command.
Consulte a referência YAML do Skaffold
para ver documentação detalhada sobre as propriedades de configuração usadas em
customActions.
Defina o tipo de segmentação personalizada
Primeiro, defina um objetivo personalizado criando um tipo de objetivo personalizado através da configuração CustomTargetType.
Pode criar o CustomTargetType no mesmo ficheiro que a definição do pipeline de entrega, ou com definições de destino, ou num ficheiro separado.
A definição de CustomTargetType é a seguinte:
# Custom target type config
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
name: [CUSTOM_TARGET_TYPE_NAME]
annotations:
labels:
description:
customActions:
renderAction: [RENDER_ACTION_NAME]
deployAction: [DEPLOY_ACTION_NAME]
includeSkaffoldModules:
Onde
CUSTOM_TARGET_TYPE_NAMEÉ um nome arbitrário que atribui a esta definição de tipo de segmentação personalizada. Este nome é referenciado na definição do alvo para qualquer alvo que use o tipo de alvo personalizado que está a definir.
RENDER_ACTION_NAMEÉ o nome da ação de renderização personalizada. Este valor é o
customAction.namedefinido emskaffold.yamlpara a ação render.DEPLOY_ACTION_NAMEÉ o nome da ação de implementação personalizada. Este valor é o
customAction.namedefinido emskaffold.yamlpara a ação deploy.includeSkaffoldModulesÉ uma secção opcional a usar se estiver a usar configurações do Skaffold remotas. As propriedades nesta secção são apresentadas na secção Usar configurações remotas do Skaffold.
Use configurações remotas do Skaffold
Pode armazenar configurações do Skaffold num repositório Git público, num contentor do Cloud Storage ou num repositório de 2.ª geração do Cloud Build e referenciar essas configurações a partir da definição do tipo de destino personalizado.
A utilização de configurações do Skaffold remotas significa que o skaffold.yaml que fornece no momento do lançamento não tem de ter as ações personalizadas definidas. Isto permite a partilha de ações personalizadas na sua organização.
Para usar configurações do Skaffold remotas:
Crie uma configuração do Skaffold com a sua ação ou ações personalizadas.
Armazene a configuração num repositório Git ou num contentor do Cloud Storage.
Na definição do tipo de alvo personalizado, adicione uma secção
customActions.includeSkaffoldModules.Em
includeSkaffoldModules, especifique o seguinte:Opcionalmente, um ou mais elementos
configs:- configs: ["name1", "name2"]O valor de
configsé uma lista de strings que correspondem à propriedademetadata.nameem cada configuração do Skaffold a incluir. Se for omitido, o Cloud Deploy usa todas as configurações no caminho especificado.Uma secção
googleCloudStorage,gitougoogleCloudBuildRepo.Para o Cloud Storage:
googleCloudStorage: source: PATH_TO_GCS_BUCKET path: FILENAMEPara o Git:
git: repo: REPO_URL path: PATH_TO_FILE ref: BRANCH_NAMEPara repositórios do Cloud Build (2.ª geração):
googleCloudBuildRepo: repository: PATH_TO_GCB_REPO path: PATH_TO_FILE ref: BRANCH_NAMEOnde:
PATH_TO_GCS_BUCKETé o caminho para um diretório do Cloud Storage que termina com/*, onde as configurações do Skaffold estão armazenadas. O Skaffold transfere todos os ficheiros neste diretório e, em seguida, encontra o ficheiro do Skaffold relevante com as configurações, com base no caminho relativo configurado.