Criar uma segmentação personalizada

Neste documento, descrevemos como criar um tipo de destino personalizado do Cloud Deploy e usar esse tipo de segmentação personalizada como um destino em um aplicativo do Cloud Deploy pipeline de entrega.

Veja a seguir o processo de alto nível para criar um tipo de segmentação personalizada e usando no pipeline de entrega:

  1. Crie um aplicativo conteinerizado ou aplicativos que incluem a funcionalidade de implantar no destino personalizado, e que atendam aos requisitos do requisitos para tipos de segmentações personalizadas.

  2. Defina uma ação personalizada no skaffold.yaml que faz referência a esse contêiner e especifica os comandos a serem executados nele.

  3. Criar uma definição de CustomTargetType referenciando a ação personalizada da etapa anterior e registrá-la como um recurso do Cloud Deploy.

  4. Defina um novo destino com uma propriedade customTarget que seu novo tipo de segmentação personalizada.

  5. Faça referência ao destino do pipeline de entrega. progressão.

  6. Crie uma versão.

Cada uma dessas etapas é descrita em detalhes no restante deste documento.

Crie seus aplicativos conteinerizados

A funcionalidade que será implantada no seu destino personalizado é definida em contêineres aplicativos, que você fornece ao Cloud Deploy ao referenciando-as a partir do arquivo skaffold.yaml. Quando seu pipeline de entrega incluir um destino que usa um tipo de destino personalizado, O Cloud Deploy chama os contêineres de ação personalizada definidos para esse de destino personalizado, no Skaffold, para executar as ações de renderização e implantação definido.

O comportamento dos seus aplicativos depende de você. No entanto, ele precisa consumir variáveis de ambiente de entrada fornecidas pelo Cloud Deploy e retornar as saídas necessárias.

Na maioria dos casos, você cria um contêiner para a ação de renderização e outro para sua ação de implantação para cada tipo de destino personalizado que você criar. A ação de renderização opcional, mas se você não fornecer um, o Cloud Deploy usará o skaffold render padrão.

Definir ações personalizadas no Skaffold

Com as imagens ou imagens do contêiner de ação personalizada no lugar, você pode referenciá-las do seu arquivo de configuração skaffold.yaml.

Você configura cada ação personalizada para um destino personalizado em uma customActions. estrofe. Para qualquer tipo de segmentação personalizada, você cria uma ação personalizada, no Skaffold, para e outra para implantação. O CustomTargetType identifica qual ação personalizada é usada para renderização e qual é usada para implantação.

A seguir está a configuração para ações personalizadas de renderização e implantação no 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 personalizada de renderização ou implantação. O A definição de CustomTargetType se refere a esse nome, nos renderAction ou a propriedade deployAction.

  • A estrofe containers inclui sua referência e os comandos para executá-la contêiner do Docker.

    A estrofe containers permite mais de um contêiner, mas o Google recomenda use apenas uma.

  • customActions.containers.name

    É um nome arbitrário para o contêiner específico que você está usando para essa ação. Como prática recomendada, esse nome de contêiner deve sempre ter qualificação SHA.

  • image

    É o caminho para a imagem do contêiner.

  • command

    São os comandos a serem executados no contêiner.

  • args

    É uma coleção de argumentos para o command.

Consulte a referência YAML do Skaffold para documentação detalhada sobre as propriedades de configuração usadas em customActions.

Defina seu tipo de segmentação personalizada

Para definir uma segmentação personalizada, primeiro crie um tipo de segmentação personalizada, usando a propriedade CustomTargetType. É possível criar o CustomTargetType no mesmo arquivo que o pipeline de entrega ou com definições de destino, ou em um arquivo separado.

A definição de CustomTargetType é a seguinte:

# Custom target type config (preview)
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 você dá para essa definição de tipo de destino personalizado. Este nome é mencionado na definição de destino para qualquer que usa o tipo de segmentação personalizada que você está definindo.

  • RENDER_ACTION_NAME

    É o nome da ação de renderização personalizada. Esse valor é o customAction.name definido em skaffold.yaml para o render.

  • DEPLOY_ACTION_NAME

    É o nome da ação de implantação personalizada. Esse valor é o customAction.name definido em skaffold.yaml para o deploy.

  • includeSkaffoldModules

    É uma estrofe opcional para usar se você estiver usando configurações remotas do Skaffold. O propriedades nesta estrofe são mostradas na seção Use configurações remotas do Skaffold.

Usar configurações remotas do Skaffold

É possível armazenar configurações do Skaffold em um repositório Git público, um bucket do Cloud Storage ou o repositório do Cloud Build de 2a geração e consulte essas configurações na definição de tipo de destino personalizado.

O uso de configurações remotas do Skaffold significa que o skaffold.yaml fornecido em o lançamento não precisa ter ações personalizadas definidas. Isso permite compartilhar ações personalizadas em toda a organização.

Para usar as configurações remotas do Skaffold:

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

  2. Armazene a configuração em um repositório Git ou em um do bucket do Cloud Storage.

  3. Na definição do tipo de segmentação personalizada, adicione um customActions.includeSkaffoldModules estrofe.

  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 a metadata.name. em cada configuração do Skaffold a ser incluída. Se for omitido, O Cloud Deploy recebe todas as configurações do caminho especificado.

    • Uma estrofe de googleCloudStorage, git ou googleCloudBuildRepo.

      Para o Cloud Storage:

      googleCloudStorage:
        source: PATH_TO_GCS_BUCKET
        path: FILENAME
      

      Para Git:

      git:
        repo: REPO_URL
        path: PATH_TO_FILE
        ref: BRANCH_NAME
      

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

       googleCloudBuildRepo:
        repository: PATH_TO_GCB_REPO
        path: PATH_TO_FILE
        ref: BRANCH_NAME
      

      Em que:

      PATH_TO_GCS_BUCKET é o caminho para um diretório do Cloud Storage; terminando com /*, onde as configurações do Skaffold são armazenadas. Downloads do Skaffold todos os arquivos nesse diretório, em seguida, encontra o arquivo Skaffold relevante com as configurações, com base no caminho relativo configurado.

      PATH_TO_GCB_REPO é o caminho para o repositório de 2a geração do Cloud Build. em que as configurações do Skaffold são armazenadas. O caminho tem o seguinte formato: projects/{project}/locations/{location}/connections/{connection}/repositories/{repository}: O Skaffold faz o download de todos os arquivos do diretório e encontra o arquivo com base no caminho relativo configurado.

      FILENAME é o nome do arquivo que inclui as configurações do Skaffold. Isso a propriedade path: é opcional. se você não especificá-lo, O Cloud Deploy assume skaffold.yaml. Se não houver skaffold.yaml, ou se o nome do arquivo especificado não estiver lá, o falha na criação da versão.

      REPO_URL é o URL do repositório Git.

      PATH_TO_FILE é o caminho nesse repositório para o arquivo que contém o Configurações do Skaffold.

      BRANCH_NAME é o nome da ramificação (por exemplo, main) a partir da qual usando as configurações do Skaffold.

Exemplo

O seguinte YAML de tipo de destino personalizado é uma estrofe de customActions com um estrofe includeSkaffoldModules, que aponta para as configurações do Skaffold armazenadas em um Bucket do Cloud Storage:

customActions:
  renderAction: my-custom-action
  deployAction: my-custom-action
  includeSkaffoldModules:
    - configs: ["myConfig"]
      googleCloudStorage:
        source: "gs://my-custom-target-bucket/my-custom/*"
        path: "skaffold.yaml

O YAML a seguir é uma configuração do Skaffold, cuja ação personalizada mostrada é fazendo referência:

apiVersion: skaffold/v4beta7
kind: Config
metadata:
  name: myConfig
customActions:
  - name: my-custom-action
    containers:
      - name: my-custom-container
        image: us-east1-docker.pkg.dev/abcdefg/foldername/myimage@sha256:c56fcf6e0a7637ddf0df3d56a0dd23bfce03ceca06a6fc527b0e0e7430e6e9f9

Registrar seu tipo de segmentação personalizada

Depois de configurar o CustomTargetType, execute o Comando gcloud deploy apply para registrar o recurso CustomTargetType em um projeto do Google Cloud:

gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]

Em que:

FILE é o nome do arquivo em que você definiu esse tipo de segmentação personalizada.

PROJECT é o projeto do Google Cloud em que o recurso será criado. O CustomTargetType precisa estar no mesmo projeto que o recurso Target. que faz referência a ele. Você não precisa especificar o projeto se o tiver definido como o projeto padrão para a Google Cloud CLI.

REGION é a região (por exemplo, us-centra1) em que este será criado; recurso. O CustomTargetType precisa estar na mesma região que o Target recurso que faz referência a ele. Você não precisa especificar a região se tiver defini-la como a região padrão para a CLI gcloud.

Com o CustomTargetType criado como um recurso do Cloud Deploy, Agora é possível usá-lo em uma definição de Target para criar uma segmentação personalizada.

Para mais informações sobre a definição de CustomTargetType, consulte a Referência do esquema de configuração do Cloud Deploy.

Defina sua meta

A única diferença entre uma definição de destino para um tipo de segmentação compatível e uma definição de destino personalizado é que ela inclui um customTarget estrofe. A sintaxe de um customTarget é a seguinte:

customTarget:
  customTargetType: [CUSTOM_TARGET_TYPE_NAME]

Em que CUSTOM_TARGET_TYPE_NAME é o valor da propriedade name definida em sua configuração de tipo de segmentação personalizada.

Adicionar o destino ao pipeline de entrega

É possível usar um destino personalizado em um pipeline de entrega exatamente como você usaria tipo de destino com suporte. Ou seja, não há diferença no pipeline de entrega progressão entre destinos de um tipo de segmentação compatível e destinos personalizados.

Todos os destinos em um pipeline de entrega precisam usar o mesmo tipo. Por exemplo: não é possível ter um pipeline de entrega com alguns destinos implantados Google Kubernetes Engine e alguns destinos personalizados.

Assim como nos tipos de destino aceitos, é possível incluir implantar parâmetros no estágio do pipeline.

Criar uma versão

Com o tipo de segmentação personalizada totalmente definido e uma segmentação criada para usar esse tipo, agora é possível criar uma versão da maneira normal:

gcloud deploy releases create [RELEASE_NAME] \
  --project=[PROJECT_NAME] \
  --region=[REGION] \
  --delivery-pipeline=[PIPELINE_NAME]

Após a criação da versão, a ação de renderização personalizada é executada para cada destino na o pipeline de entrega, incluindo o processamento parâmetros de implantação configurados na versão, destinos ou o pipeline de entrega. O Cloud Deploy oferece implantar parâmetros como entrada para o contêiner de renderização personalizado.

Conferir a saída das segmentações personalizadas

Se a ação personalizada atender requisitos para destinos personalizados, use o console do Google Cloud para exibir os artefatos.

Siga estas etapas para conferir o resultado da sua ação de renderização personalizada.

  1. No console do Google Cloud, acesse a página do Cloud Deploy Pipelines de entrega para ver o pipeline de entrega.

    Abrir a página "Pipelines de entrega"

  2. Clique no nome do pipeline de entrega.

    A visualização do pipeline mostra o status de implantação do aplicativo e as está listado na guia Lançamentos em Pipeline de entrega detalhes.

  3. Clique no nome da versão.

    A página Detalhes da versão é exibida.

  4. Clique na guia Artefatos.

  5. Em Artefatos de destino, clique na seta ao lado de Exibir artefatos.

    Os artefatos renderizados são listados, incluindo o skaffold.yaml renderizado. e renderizado gerado pelo renderizador personalizado. E você pode clique no link Local de armazenamento ao lado de cada um para acessar o do bucket do Cloud Storage para visualizar esses arquivos.

    Também é possível clicar no link Exibir artefatos para ver esses arquivos lançamento, por destino ou por fase, usando a Inspetor de versão.

A seguir