Transmita parâmetros para a sua implementação

Com o Cloud Deploy, pode transmitir parâmetros para a sua versão, e esses valores são fornecidos ao manifesto ou aos manifestos antes de serem aplicados aos respetivos destinos. Esta substituição é feita depois de os manifestos serem rendered, como o passo final na operação de renderização do Cloud Deploy. Os valores são fornecidos a todos os manifestos identificados no seu ficheiro skaffold.yaml que contenham os marcadores de posição correspondentes.

Só tem de incluir marcadores de posição no manifesto e definir os valores desses marcadores de posição no pipeline de implementação do Cloud Deploy ou na configuração de destino, ou quando cria uma versão.

Este artigo descreve como o fazer.

Por que motivo deve usar parâmetros de implementação?

Uma utilização típica desta funcionalidade seria aplicar valores diferentes a manifestos para diferentes alvos numa implementação paralela. No entanto, pode usar parâmetros de implementação para tudo o que exija a substituição de pares de chave-valor pós-renderização no manifesto.

Como funciona

Os passos seguintes descrevem o processo geral de configuração dos parâmetros de implementação e fornecimento de valores:

  1. Configura a parametrização da implementação, conforme descrito aqui.

    Isto inclui o seguinte:

    • Adicione os marcadores de posição ao manifesto, incluindo um valor predefinido para cada um.

    • Adicione valores para esses marcadores de posição.

      Existem três formas de o fazer, descritas aqui.

  2. Quando cria um lançamento, o manifesto é rendered.

    Se começar com um manifesto baseado em modelos, os valores são aplicados agora às variáveis do modelo. Se começar com um manifesto não processado, este permanece inalterado. Esta renderização é feita pelo Skaffold.

    No entanto, pode ter variáveis adicionais no manifesto para as quais os valores não são aplicados no momento da renderização. Estes são os parâmetros de implementação descritos neste documento.

    Na criação da versão, todos os parâmetros de implementação são compilados num dicionário, que é usado para substituir valores antes de os manifestos serem aplicados.

  3. Após a renderização, o Cloud Deploy substitui os valores dos parâmetros de implementação.

    Estes são os valores que configurou no primeiro passo.

    O processo de renderização já aplicou valores aos modelos de manifesto, substituindo alguns valores e adicionando etiquetas específicas do Cloud Deploy. No entanto, os valores destes parâmetros de implementação são substituídos após a renderização. As diferenças entre os modelos de manifesto e os parâmetros de implementação estão descritas aqui.

  4. O manifesto é aplicado ao tempo de execução de destino para implementar a sua aplicação.

    Isto inclui os valores substituídos no momento da renderização e os valores de quaisquer parâmetros de implementação

Diferentes formas de transmitir valores

Pode fornecer parâmetros e valores para esses parâmetros de três formas:

  • Na definição do pipeline de entrega

    Fornece o parâmetro e o respetivo valor na definição de uma fase na progressão do pipeline de entrega. O parâmetro é transmitido ao destino representado por essa fase. Se essa fase fizer referência a uma segmentação múltipla, os valores definidos aqui são usados para todos os alvos secundários.

    Este método permite-lhe substituir um valor para todos os lançamentos num determinado pipeline, para todos os destinos afetados. Os parâmetros definidos para uma fase identificam uma etiqueta e o destino correspondente para essa fase tem de ter uma etiqueta correspondente.

  • Na definição do alvo

    Configura o parâmetro e o respetivo valor na definição do alvo. Este método permite-lhe substituir um valor para esse alvo em todos os lançamentos.

  • Na linha de comandos, quando cria um lançamento

    Inclui o parâmetro e o respetivo valor através da flag --deploy-parameters no comando gcloud deploy releases create.

    Este método permite-lhe substituir um valor no momento da criação do lançamento, aplicando esse valor aos manifestos de todos os alvos afetados.

A configuração destas opções é explicada mais detalhadamente aqui.

Posso usar mais do que um destes métodos?

Sim, pode incluir parâmetros de implementação na fase do pipeline, na configuração de destino e na linha de comandos. O resultado é que todos os parâmetros são aceites e adicionados ao dicionário. No entanto, se um parâmetro específico for transmitido em mais de um local, mas com valores diferentes, o comando gcloud deploy releases create falha com um erro.

Em que medida é que isto é diferente dos modelos de manifesto

Os parâmetros de implementação, conforme descrito neste artigo, distinguem-se dos marcadores de posição num manifesto baseado em modelos pela sintaxe. No entanto, se se questionar por que motivo precisa de implementar parâmetros em vez de usar apenas as técnicas padrão para manifestos baseados em modelos, a tabela seguinte mostra os diferentes objetivos:

Técnica Tempo de substituição Aplica-se a
Modelo de manifesto Fase de renderização Lançamento específico; alvo específico
Na linha de comandos Pós-renderização Lançamento específico; todos os alvos
No pipeline de fornecimento Pós-renderização Todos os lançamentos; alvos específicos (por editora)
Dentro do objetivo Pós-renderização Todos os lançamentos; alvo específico

Este documento aborda apenas os parâmetros de implementação (na linha de comandos, no pipeline e no destino) e não os manifestos baseados em modelos.

Limitações

  • Para cada tipo de parâmetro, pode criar um máximo de 50 parâmetros.

  • Uma segmentação secundária pode, adicionalmente, herdar até 50 parâmetros da respetiva segmentação múltipla principal, até um máximo de 200 parâmetros nas segmentações, incluindo os definidos na fase do pipeline.

  • O nome da chave está limitado a um máximo de 63 carateres e à seguinte expressão regular:

    ^[a-zA-Z0-9]([-A-Za-z0-9_.]{0,61}[a-zA-Z0-9])?$
    

    Uma exceção a isto ocorre quando usa um parâmetro de implementação como uma variável de ambiente num alvo personalizado. Nesse caso, tem de usar uma barra entre a palavra-chave customTarget e o nome da variável (customTarget/VAR_NAME). Consulte as entradas e saídas necessárias para ver a sintaxe suportada.