Implantar o aplicativo

Nesta página, descrevemos como usar o Google Cloud Deploy para colocar o aplicativo nos seus ambientes de execução de destino pretendido.

O Google Cloud Deploy leva seu aplicativo a uma progressão de vários destinos de implantação, em sequência. Nesta página, você verá o processo de alto nível.

No processo descrito nesta página, você cria um pipeline de entrega e define seus destinos usando um ou mais arquivos de configuração YAML. Depois, registre esse pipeline e envie seu aplicativo como uma versão com implantação gerenciada por esse pipeline.

Antes de começar

  • Ter uma imagem de contêiner para implantar e um manifesto do Kubernetes que identifique essa imagem.

    Você precisa de um pipeline de integração contínua ou de outro processo para criar e posicionar imagens. Sua ferramenta de CI pode ser o Cloud Build, o Jenkins ou qualquer coisa que resulte em imagens de contêiner para fornecer ao pipeline de entrega do Google Cloud Deploy.

  • Crie um arquivo de configuração skaffold.yaml, se você ainda não tiver um, que informará ao Google Cloud Deploy como renderizar e implantar seu aplicativo do Kubernetes.

    O Google Cloud Deploy chama skaffold render para renderizar os manifestos do Kubernetes usando esse arquivo e skaffold apply para implantá-los no seu destino de dados.

    O arquivo skaffold.yaml precisa referenciar o namespace correspondente a uma versão compatível na primeira linha, como neste exemplo:

    apiVersion: skaffold/v2beta16

    Se você ainda não tiver um arquivo skaffold.yaml, use skaffold init para gerá-lo.

    Consulte Como usar o Skaffold no Google Cloud Deploy para mais detalhes. Além disso, Como gerenciar manifestos no Google Cloud Deploy tem mais detalhes sobre o uso do Skaffold e do Google Cloud Deploy com ferramentas de gerenciamento de manifestos, como Helm, Kustomize e kpt.

  • Verifique se a conta de serviço de execução tem os papéis e permissões do IAM necessários.

Como criar o pipeline de entrega

O pipeline de entrega descreve uma progressão dos destinos de implantação. É possível definir essas metas no mesmo arquivo que o pipeline de entrega ou em um ou mais arquivos separados.

Depois de criar o pipeline de entrega e o arquivo ou a definição de destino, execute gcloud deploy apply em cada um desses arquivos para registrá-los como recursos do Google Cloud Deploy.

Como definir o pipeline e os destinos de entrega

A estrutura do arquivo de configuração do pipeline de entrega é descrita aqui.

Você pode chamar esse arquivo como quiser. Por convenção, um config de pipeline de entrega que inclui definições de destino é chamado clouddeploy.yaml e um que, em vez disso, faz referência a destinos definidos em um ou mais arquivos separados são chamados de delivery-pipeline.yaml.

Como registrar o pipeline e os destinos de entrega

Para registrar seu pipeline de entrega no Google Cloud Deploy, execute gcloud deploy apply uma vez para cada arquivo de definição separado. Ou seja, se você definir três destinos em três arquivos, execute o comando quatro vezes: uma para o pipeline de entrega e outra para o destino.

O comando a seguir registra um pipeline de entrega com os destinos definidos no mesmo arquivo.

gcloud deploy apply --file=PIPELINE_CONFIG \
                         --region=LOCATION
                         --project=PROJECT

Agora você tem um pipeline de entrega que pode gerenciar a implantação das versões e segmentar recursos que podem ser usados por qualquer pipeline de entrega no mesmo projeto e região.

Um exemplo de arquivo único

O comando neste exemplo registra um pipeline de entrega e todos os destinos definidos no mesmo arquivo:

gcloud deploy apply --file=clouddeploy.yaml --region=us-central1

Um exemplo usando arquivos separados

Neste exemplo, existem três destinos definidos em três arquivos separados. Portanto, execute quatro comandos:

gcloud deploy apply --file=delivery-pipeline.yaml --region=us-central1 && \
gcloud deploy apply --file=target_dev.yaml --region=us-central1 && \
gcloud deploy apply --file=target_staging.yaml --region=us-central1 && \
gcloud deploy apply --file=target_prod.yaml --region=us-central1

A sinalização --region é obrigatória, a menos que você tenha definido um padrão (usando gcloud config set deploy/region [REGION]). A região precisa ser a mesma para o pipeline de entrega e todos os destinos referenciados por ele.

Como editar pipelines e destinos atuais

Posteriormente, será possível editar qualquer pipeline de entrega ou configuração de destino e executar gcloud deploy apply para atualizar o pipeline ou o recurso de destino. Mas essas alterações não afetam as versões atuais, já que são gerenciadas pelo pipeline de entrega original.

Como solicitar a aprovação manual para uma implantação

Para exigir aprovação manual de um determinado destino, inclua a seguinte propriedade na definição de destino:

requireApproval: true

O padrão é false. Se você omitir essa propriedade da configuração do pipeline de entrega ou não fornecer valor para ela, a implantação nesse destino não exigirá aprovação. No entanto, o autor da chamada que está tentando promover para o destino ainda precisa da permissão clouddeploy.rollouts.create do IAM.

Você pode até mesmo exigir a aprovação manual no primeiro destino. Quando uma versão é criada, usando a CLI, para o primeiro destino, o rollout é criado automaticamente. Se a aprovação for necessária, o Google Cloud Deploy criará o rollout, mas em um estado de lançamento pendente até que a aprovação seja concedida.

Como invocar o pipeline de entrega para implantar o aplicativo

Agora é possível enviar o aplicativo para ser implantado de acordo com o canal de entrega que você criou.

  1. Execute seu processo regular de integração contínua (CI, na sigla em inglês), criando os artefatos implantáveis.

  2. Inicie o pipeline de entrega chamando o Google Cloud Deploy para criar uma versão.

    Execute o seguinte comando no diretório que contém a configuração do Skaffold:

    gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME
    

    Em que:

    RELEASE_NAME é um nome que será atribuído à versão. O nome precisa ser exclusivo entre todas as versões do pipeline de entrega.

    PIPELINE_NAME é o nome do pipeline de entrega que gerenciará a implantação dessa versão por meio da progressão de destinos. Esse nome precisa corresponder ao campo name na definição do pipeline.

Esse comando faz upload de um tarball que contém os configs para um bucket do Cloud Storage e cria a versão. O Google Cloud Deploy também cria automaticamente um lançamento e implanta a imagem no primeiro destino definido no pipeline de entrega.

Além dos parâmetros exibidos com o comando, inclua qualquer uma das seguintes opções:

  • --images=<name=path/name:$IMAGE_SHA>,<name=path/name:$IMAGE_SHA>

    Uma coleção de nomes de imagens para substituições de caminhos completos.

  • --build_artifacts=<path/file>

    Uma referência a um arquivo de saída de artefatos de versão do Skaffold, que pode ser transmitido para representar as substituições de caminho completo da imagem

Essas duas opções são mutuamente exclusivas.

Como promover uma versão

Quando a versão é implantada em um destino definido no pipeline de entrega, você pode promovê-la para o próximo destino:

gcloud

gcloud deploy releases promote --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME

Em que:

RELEASE_NAME é o nome da versão promovida.

PIPELINE_NAME é o nome do pipeline de entrega que você está usando para gerenciar a implantação dessa versão.

Console

  1. Abra a página "Pipelines de entrega".

  2. Clique no pipeline mostrado na lista de pipelines de entrega.

    A página "Detalhes do pipeline de entrega" mostra uma representação gráfica do progresso do pipeline de entrega.

    visualização do pipeline de entrega no Console do Google Cloud

  3. No primeiro destino na visualização do pipeline de exibição, clique em Promover.

    A caixa de diálogo Promover versão é exibida. Ele mostra os detalhes do destino para o qual você está promovendo.

  4. Clique em Promover.

Se o pipeline ou o destino de entrega tiver sido alterado desde o lançamento, o Google Cloud Deploy retornará uma mensagem indicando uma possível incompatibilidade e solicitará que você confirme a promoção. É possível responder n ao prompt e examinar as diferenças entre as versões do pipeline antes de continuar. Se você optar por promovê-la mesmo assim, a versão será implantada de acordo com o pipeline de entrega do mesmo modo em que foi definida. Consulte Instâncias de pipeline por versão para mais informações sobre incompatibilidades de pipeline.

O Google Cloud Deploy cria um rollout para a versão no destino de destino, e a versão é enfileirada para implantação. Quando ele é implantado, a visualização do pipeline de entrega mostra esse fato:

visualização do pipeline de entrega no Console do Google Cloud

Como aprovar uma promoção

Cada destino pode solicitar aprovação antes que qualquer versão seja implantada.

Quando você promove para um destino que requer aprovação, o Google Cloud Deploy publica uma mensagem do Pub/Sub no tópico cd-approvals.

Consulte Como aprovar ou rejeitar um lançamento para mais informações sobre como as aprovações funcionam.

Como implantar manualmente

Durante o uso normal, o Google Cloud Deploy implanta o aplicativo em cada destino na progressão, em sequência. Mas você também pode implantar manualmente seu aplicativo em qualquer destino definido.

É possível implantar manualmente uma versão nova ou atual.

Como implantar manualmente uma versão atual

Se uma versão já tiver sido criada, basta promovê-la para o destino pretendido:

gcloud deploy releases promote --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --to-target=TARGET_NAME

Em que:

  • RELEASE_NAME é o nome da versão que você está promovendo manualmente ao destino pretendido.

  • PIPELINE_NAME é o nome do pipeline de entrega que descreve a progressão da implantação automatizada que você está substituindo.

  • TARGET_NAME é o nome do destino em que você está implantando manualmente.

Como implantar manualmente uma nova versão

Por padrão, quando você cria uma versão, o Google Cloud Deploy o implanta automaticamente no primeiro destino na sequência de promoção. Mas é possível especificar uma meta diferente da primeira.

Assim como no primeiro destino padrão na progressão, o Google Cloud Deploy cria automaticamente o rollout para o destino especificado e implanta a versão nele.

Para implantar uma nova versão manualmente, execute o seguinte comando:

gcloud deploy releases create --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --to-target=TARGET_NAME

Em que:

  • RELEASE_NAME é o nome da versão que você está promovendo manualmente ao destino pretendido.

  • PIPELINE_NAME é o nome do pipeline de entrega que descreve a progressão da implantação automatizada que você está substituindo.

  • TARGET_NAME é o nome do destino em que você está implantando manualmente.

Efeito da implantação manual na progressão

Quando você implanta manualmente em um destino específico e promove a versão sem especificar um destino, o Google Cloud Deploy o promove para o próximo destino correto na progressão. Isso ocorre porque o serviço rastreia o destino mais distante em que uma versão foi implantada. Se a versão já estiver no último destino da progressão, o Google Cloud Deploy retornará uma mensagem indicando que não há mais destinos a serem promovidos.

A seguir