Atualizar cargas de trabalho sem estado

Este documento explica como atualizar cargas de trabalho sem estado em execução em um cluster do Kubernetes do Google Distributed Cloud (GDC) com isolamento físico. À medida que o aplicativo evolui com base no uso de recursos e nas otimizações de configuração, é necessário atualizar a especificação do pod no cluster do Kubernetes para refletir essas mudanças na carga de trabalho.

Este documento é destinado a desenvolvedores do grupo de operadores de aplicativos, que são responsáveis por atualizar as cargas de trabalho de aplicativos da organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para concluir as tarefas neste documento, você precisa dos seguintes recursos e papéis:

  • Para executar comandos em um cluster do Kubernetes, verifique se você tem os seguintes recursos:

    • Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma.

    • Faça login e gere o arquivo kubeconfig para o cluster do Kubernetes se você não tiver um.

    • Use o caminho kubeconfig do cluster do Kubernetes para substituir KUBERNETES_CLUSTER_KUBECONFIG nestas instruções.

  • Para receber as permissões necessárias para atualizar cargas de trabalho sem estado em um cluster compartilhado, peça ao administrador do IAM da organização para conceder a você o papel de administrador do namespace (namespace-admin) no namespace do projeto.

  • Para receber as permissões necessárias para atualizar cargas de trabalho sem estado em um cluster padrão, peça ao administrador do IAM da organização para conceder a você a função de desenvolvedor de cluster (cluster-developer) em um cluster padrão.

Atualizar a implantação

Para atualizar um objeto Deployment, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f DEPLOYMENT_FILE

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, esse precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_FILE: o nome do arquivo de manifesto Deployment a ser atualizado.

O comando kubectl apply aplica um arquivo de manifesto a um recurso. Se o recurso especificado não existir, ele será criado pelo comando.

Há também várias outras maneiras de atualizar recursos na sua implantação.

Atualizar uma imagem de contêiner

Para mudar a imagem de um objeto Deployment, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    set image deployment DEPLOYMENT_NAME \
    IMAGE=IMAGE:TAG

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, esse precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_NAME: o nome do objeto Deployment que contém a imagem.

  • IMAGE: o nome da imagem do contêiner.

  • TAG: a tag a ser atualizada para a imagem do contêiner.

Atualizar a imagem de uma implantação é útil para mudar campos de seleção ou recursos, como solicitações ou limites.

Por exemplo, para atualizar um objeto Deployment chamado nginx para usar a versão 1.9.1, execute:

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    set image deployment nginx nginx=nginx:1.9.1

Reverter uma atualização

Se você quiser reverter uma atualização, por exemplo, quando a implantação ficar instável, use a CLI kubectl. O histórico de implantação de um objeto Deployment é preservado no sistema para que você possa fazer reverter a qualquer momento.

Para reverter uma atualização em andamento ou concluída para a revisão anterior, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, esse precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_NAME: o nome do objeto Deployment a ser revertido.

Para reverter para uma revisão específica, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME \
    --to-revision=REVISION_NUMBER

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, esse precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_NAME: o nome do objeto Deployment a ser revertido.

  • REVISION_NUMBER: o número inteiro que define a revisão para reverter, como 3.

A seguir