Crie um alvo personalizado

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:

  1. 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.

  2. Defina uma ação personalizada em skaffold.yaml que faça referência a esse contentor e especifique o comando ou os comandos a executar no mesmo.

  3. Crie uma definição de CustomTargetType que faça referência à ação personalizada do passo anterior e registe-a como um recurso do Cloud Deploy.

  4. Defina um novo alvo com uma propriedade customTarget que identifica o seu novo tipo de alvo personalizado.

  5. Faça referência a essa segmentação a partir da progressão da sua pipeline de fornecimento.

  6. Crie um lançamento.

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 CustomTargetType faz referência a este nome na propriedade renderAction ou na propriedade deployAction.

  • A secção containers inclui a sua referência, além de comandos para executar esse contentor.

    A secção containers permite 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.name definido em skaffold.yaml para a ação render.

  • DEPLOY_ACTION_NAME

    É o nome da ação de implementação personalizada. Este valor é o customAction.name definido em skaffold.yaml para 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:

  1. Crie uma configuração do Skaffold com a sua ação ou ações personalizadas.

  2. Armazene a configuração num repositório Git ou num contentor do Cloud Storage.

  3. Na definição do tipo de alvo personalizado, adicione uma secção customActions.includeSkaffoldModules.

  4. Em includeSkaffoldModules, especifique o seguinte:

    • Opcionalmente, um ou mais elementos configs:

      - configs: ["name1", "name2"]

      O valor de configs é uma lista de strings que correspondem à propriedade metadata.name em 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, git ou googleCloudBuildRepo.

      Para o Cloud Storage:

      googleCloudStorage:
        source: PATH_TO_GCS_BUCKET
        path: FILENAME
      

      Para o Git:

      git:
        repo: REPO_URL
        path: PATH_TO_FILE
        ref: BRANCH_NAME
      

      Para repositórios do Cloud Build (2.ª geração):

       googleCloudBuildRepo:
        repository: PATH_TO_GCB_REPO
        path: PATH_TO_FILE
        ref: BRANCH_NAME
      

      Onde:

      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.