Implantar aplicativo

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, descrevemos como usar o Google Cloud Deploy para colocar o aplicativo nos seus ambientes de execução de destino pretendido. Antes de fazer isso, é preciso criar o pipeline de entrega e os destinos.

Antes de começar

Nesta seção, descrevemos as etapas necessárias para implantar o aplicativo usando o Google Cloud Deploy.

Configure o Google Cloud Deploy para o ambiente de execução de sua escolha

O Google Cloud Deploy pode implantar seu aplicativo em qualquer um destes ambientes de execução:

Invocar o pipeline de entrega para criar uma versão

Depois de configurar o Google Cloud Deploy para implantar no seu ambiente de execução, agora é possível enviar seu aplicativo para ser implantado de acordo com o pipeline de entrega criado.

  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 --region=REGION
    

    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.

    É possível especificar nomes de versões dinâmicas incluindo '$DATE', '$TIME' ou ambos. Por exemplo, se você invocar esse comando às 15h07 UTC, 'rel-$TIME' será resolvido como rel-1507. '$DATE' e '$TIME' precisam estar entre aspas simples, e a hora é UTC no computador em que você invoca o comando.

    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.

    REGION é o nome da região em que você está criando a versão, por exemplo, us-central1. Obrigatório.

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.

Também é possível incluir uma das seguintes sinalizações para que o Google Cloud Deploy gere um arquivo skaffold.yaml para você:

  • --from-k8s-manifest=K8S_MANIFEST

    A configuração gerada do Skaffold é baseada no manifesto do Kubernetes que você transmite essa sinalização. O uso dessa sinalização com a sinalização --skaffold-file ou --source gera um erro. Consulte Como gerar skaffold.yaml para ver mais detalhes.

  • --from-run-manifest=RUN_MANIFEST

    A configuração gerada do Skaffold é baseada no YAML de serviço do Cloud Run transmitido por essa sinalização. O uso dessa sinalização com a sinalização --skaffold-file ou --source gera um erro. Consulte Como gerar skaffold.yaml para ver mais detalhes.

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

Alterar o tempo limite da implantação

Para implantações nos clusters de destino do GKE e do Anthos, há três tempos limite separados que afetam o tempo que o sistema aguarda até que o Kubernetes informe uma implantação estável:

  • O Cloud Build tem um tempo limite de uma hora em operações que o Cloud Build executa no Google Cloud Deploy.

    É possível alterar esse tempo limite na configuração do seu ambiente de execução.

  • O Skaffold tem um tempo limite de verificação de integridade (deploy.statusCheckDeadlineSeconds), que é o tempo, em segundos, para aguardar a estabilização das implantações.

    O padrão é 600 segundos (10 minutos). Para usar esse tempo limite, deploy.statusCheck precisa ser definido como true. Por padrão, é. Se statusCheck for false, não há verificação de status, e o lançamento é marcado como concluído depois que kubectl apply é concluído.

  • Para os recursos do Kubernetes de kind: Deployment, Deployment.spec.progressDeadlineSeconds, que é o tempo que o Kubernetes aguarda a implantação ser informada como stable.

    Este tempo limite se aplica apenas a recursos Deployment. Veja como esses dois primeiros tempos limite funcionam juntos:

    • Se Deployment.spec.progressDeadlineSeconds, no Kubernetes, não estiver definido, o tempo limite de verificação de integridade do Skaffold será o tempo limite efetivo, seja ele o padrão ou explicitamente definido.

    • Se Deployment.spec.progressDeadlineSeconds, no Kubernetes, estiver definido, o Skaffold ignorará o próprio tempo limite de verificação de integridade, e o prazo de progresso do Kubernetes será o tempo limite efetivo. No entanto, se o tempo limite do Kubernetes for explicitamente definido como 600 (10 minutos), o Skaffold vai presumir que ele é o padrão (não definido) e o ignorará, e o tempo limite do Skaffold será usado (se definido).

    • Se nenhum tempo limite for definido, o tempo limite efetivo será o padrão do Skaffold de 600 (10 minutos).

    Além de Deployments, outros recursos do Kubernetes podem ter tempos limite, que não influenciam o tempo limite de estabilidade. Se houver algum deles, analise-o para garantir que não esteja em conflito com o tempo limite de estabilidade.

    Se o Skaffold (ou o Cloud Build) expirar, a implantação do GKE continuará em execução. O Google Cloud Deploy mostra uma falha, mas ainda pode ter êxito ou falhar no cluster do GKE.

Para alterar o tempo limite de estabilidade da implantação:

  1. Verifique se deploy.statusCheck está definido como true em skaffold.yaml.

    O padrão é true. Quando true, o Skaffold aguarda as verificações de integridade informarem uma implantação estável, sujeita ao valor de tempo limite na próxima etapa.

  2. Em skaffold.yaml, defina statusCheckDeadlineSeconds como o número de segundos que você quer esperar.

    deploy:
      ...
      statusCheck: true
      statusCheckDeadlineSeconds: 600
      ...
    

    O padrão é 600 (10 minutos). O Skaffold aguarda esse tempo para uma implantação estável. Se esse tempo for excedido antes da implantação estável, a implantação falhará.

  3. No manifesto do Kubernetes, para recursos de kind: Deployment, defina Deployment.spec.progressDeadlineSeconds com o mesmo valor definido para statusCheckDeadlineSeconds.

A seguir