Como implantar um aplicativo sem estado

Nesta página, explicamos como implantar um aplicativo sem estado usando o Google Kubernetes Engine.

Visão geral

Aplicativos sem estado são aqueles que não armazenam dados ou o estado do aplicativo no cluster ou no armazenamento permanente. Em vez disso, os dados e o estado do aplicativo permanecem no cliente, o que torna os aplicativos sem estado mais escalonáveis. Por exemplo, um aplicativo de front-end é sem estado: você implanta várias réplicas para aumentar a disponibilidade dele e diminui quando a demanda é baixa, e as réplicas não precisam de identidades exclusivas.

O Kubernetes usa o controlador de implantação para implantar aplicativos sem estado como pods uniformes e não exclusivos. As implantações gerenciam o estado pretendido do aplicativo: quantos pods executarão seu aplicativo, qual versão da imagem do container será executada, como os pods serão rotulados e assim por diante. O estado pretendido pode ser alterado dinamicamente por meio de atualizações na especificação de pod da implantação.

Os aplicativos sem estado diferem dos aplicativos com estado, que usam armazenamento permanente para salvar dados e usam StatefulSets para implantar pods com identidades exclusivas.

Antes de começar

Prepare-se para a tarefa tomando as seguintes medidas:

  • Verifique se você ativou a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Verifique se o SDK do Cloud está instalado.
  • Defina o código do projeto padrão:
    gcloud config set project [PROJECT_ID]
  • Se você estiver trabalhando com clusters zonais, defina a zona de computação padrão:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Se você estiver trabalhando com clusters regionais, defina a região de computação padrão:
    gcloud config set compute/region [COMPUTE_REGION]
  • Atualize a gcloud para a versão mais recente:
    gcloud components update
  • Verifique se o aplicativo em contêiner está armazenado em um registro de imagens, como o Container Registry.

  • Se você é iniciante no GKE, precisará concluir o início rápido. Lá, você ativará a API GKE e saberá como o produto funciona.

Anatomia de uma implantação

Veja a seguir um exemplo de um arquivo de manifesto de implantação simples. Essa implantação cria três pods replicados rotulados como app=my-app, que executam a imagem hello-app armazenada no Container Registry:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      run: my-app
  template:
    metadata:
      labels:
        run: my-app
    spec:
      containers:
      - name: hello-app
        image: gcr.io/google-samples/hello-app:1.0

em que:

  • spec: replicas: é o número de pods replicados que a implantação gerencia.
  • spec: template: metadata: labels: é o rótulo dado a cada pod que a implantação usa para gerenciá-los.
  • spec: template: spec: é a especificação do pod que define como cada pod será executado. spec: containers inclui o nome do contêiner que será executado em cada pod e a imagem do contêiner que precisará ser executada.

Para ver mais informações sobre a especificação da implantação, consulte a referência da API Deployment.

Como criar uma implantação

Você cria uma implantação usando um dos seguintes métodos:

  • Use o recurso Implantar no menu Cargas de trabalho do Console do Google Cloud Platform para criar uma implantação simples a partir de uma imagem de contêiner armazenada no Container Registry.
  • Escreva um manifesto de implantação e execute kubectl apply para criar o recurso.

kubectl apply

É possível criar e atualizar declarativamente as implantações a partir de arquivos de manifesto usando kubectl apply. Esse método também mantém atualizações feitas em recursos ativos sem mesclar as alterações novamente nos arquivos de manifesto.

Para criar uma implantação a partir do seu arquivo de manifesto, execute o seguinte comando:

kubectl apply -f [DEPLOYMENT_FILE]

em que [DEPLOYMENT_FILE] é o arquivo de manifesto, como config.yaml.

Também é possível usar kubectl apply -f [DIRECTORY]/ para criar todos os objetos (exceto os atuais) definidos nos arquivos de manifesto armazenados em um diretório.

Console

Para criar uma implantação, execute as seguintes etapas:

  1. Acesse o menu "Cargas de trabalho" do Google Kubernetes Engine no Console do GCP.

    Acessar o menu "Cargas de trabalho"

  2. Clique em Implantar.

  3. Preencha o campo Imagem de contêiner com a devida imagem e a respectiva versão (como nginx:latest) ou clique em Selecionar a imagem atual do Google Container Registry e escolha a imagem.

  4. Configure o contêiner como quiser: adicione variáveis de ambiente, comandos iniciais, nome do aplicativo, namespace e rótulos.

  5. No menu suspenso Cluster, escolha o cluster que quiser.

  6. Clique em Implantar.

Como inspecionar a implantação

Depois de criar uma implantação, você pode usar um dos seguintes métodos para inspecioná-la:

kubectl

Para ver informações detalhadas sobre a implantação, execute o seguinte comando:

kubectl describe deployment [DEPLOYMENT_NAME]

em que [DEPLOYMENT_NAME] é o nome da implantação.

Para listar os pods criados pela implantação, execute o seguinte comando:

kubectl get pods -l [KEY]=[VALUE]

Nesse comando, a sinalização -l instrui kubectl a receber todos os pods com um rótulo de chave-valor. Por exemplo, se você rotulasse a implantação como app: my-app, executaria kubectl get pods -l app=my-app para ver os pods com esse rótulo.

Para ver informações sobre um pod específico:

kubectl describe pod [POD_NAME]

Para ver o manifesto de uma implantação, execute o seguinte comando:

kubectl get deployments [DEPLOYMENT_NAME] -o yaml

Esse comando exibe a configuração ativa da implantação no formato YAML.

Console

Para inspecionar uma implantação, siga as etapas a seguir:

  1. Acesse o menu "Cargas de trabalho" do Google Kubernetes Engine no console do GCP.

    Acessar o menu "Cargas de trabalho"

  2. Para ver mais informações sobre uma carga de trabalho, selecione-a no menu.

O menu "Cargas de trabalho" oferece vários menus:

  • Para ver a configuração ativa da implantação, clique em YAML.
  • Para ver todos os eventos relacionados à implantação, clique em Eventos.
  • Para ver o histórico de revisões da implantação, clique em Histórico de revisões.

Como atualizar a implantação

Você pode implementar atualizações na especificação de pod da implantação, como imagem, uso/solicitação de recursos ou configuração.

É possível atualizar uma implantação usando os seguintes métodos:

  • Usando o menu Atualização gradual e o editor de YAML no menu Cargas de trabalho no Console do GCP.
  • Fazendo alterações em um arquivo de manifesto e aplicando-as com kubectl apply.
  • Atualizando os campos image, resources ou selector da especificação do pod usando kubectl set.
  • Atualizando uma implantação diretamente do seu shell ou em um editor preferencial usando kubectl edit.

kubectl apply

Para atualizar a implantação, você pode aplicar um arquivo de manifesto novo ou atualizado. Isso é útil para fazer várias alterações na implantação. Por exemplo, ao fazer um escalonamento ou especificar uma nova versão do aplicativo.

Para atualizar uma implantação, execute o seguinte comando:

kubectl apply -f [DEPLOYMENT_FILE]

em que [DEPLOYMENT_FILE] é o arquivo de manifesto 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.

kubectl set

Você pode usar kubectl set para alterar a imagem, os recursos (solicitações ou limites) ou os campos do seletor de uma implantação.

Para alterar a imagem de uma implantação, execute o seguinte comando:

kubectl set image deployment [DEPLOYMENT_NAME] [IMAGE] [IMAGE]:[TAG]

Por exemplo, para atualizar uma implantação do nginx versão 1.7.9 para 1.9.1, execute o comando a seguir:

kubectl set image deployment nginx nginx=nginx:1.9.1

Console

O menu Atualização contínua, disponível no menu "Cargas de trabalho",

Para acessar o menu Atualização gradual da implantação, siga estas etapas:

  1. Acesse o menu "Cargas de trabalho" do Google Kubernetes Engine no Console do GCP.

    Acessar o menu "Cargas de trabalho"

  2. Selecione a carga de trabalho desejada no menu.

  3. Clique em Ações e, em seguida, em Atualização contínua.

É possível fazer as seguintes alterações na estratégia de atualização da implantação:

  • Mínimo de segundos para estar pronto: especifica o número mínimo de segundos em que os pods recém-criados precisam estar prontos para que sejam considerados disponíveis.
  • Máximo de sobretensão: campo opcional que especifica o número máximo de pods que podem ser criados além do número pretendido. O valor pode ser um número absoluto ou uma porcentagem.
  • Máximo indisponível: campo opcional que especifica o número máximo de pods que podem estar indisponíveis durante o processo de atualização. O valor pode ser um número absoluto ou uma porcentagem.

    Para editar um contêiner atual:

    1. No menu Atualização gradual, selecione o contêiner para expandir o menu correspondente.
    2. Para alterar o nome do contêiner, edite o campo Nome do contêiner.
    3. Para alterar a imagem ou a versão do contêiner, edite o campo Nome da imagem.
    4. Clique em Concluído para salvar as alterações.
    5. Para excluir o contêiner, clique no ícone de Lixeira.

    Para adicionar um novo contêiner:

    1. No menu Atualização gradual, clique em Adicionar contêiner.
    2. Preencha o campo Nome da imagem com a imagem e a versão usando o seguinte formato: [IMAGE_NAME]:[IMAGE_VERSION]. Por exemplo, nginx:1.7.9.
    3. Opcionalmente, preencha o campo Nome do contêiner com um nome para o contêiner.
    4. Clique em Concluído.
  • Clique em Atualizar.

Para editar a configuração ativa de uma implantação, siga as etapas a seguir:

  1. Acesse o menu "Cargas de trabalho" do Google Kubernetes Engine no console do GCP.

    Acessar o menu "Cargas de trabalho"

  2. Selecione a carga de trabalho desejada.

  3. Clique em Editar.

  4. Use o editor para fazer as alterações pretendidas no objeto.

  5. Clique em Salvar.

Como reverter uma atualização

É possível reverter uma atualização usando kubectl rollout undo.

Você pode reverter uma atualização em andamento ou concluída para a revisão anterior:

kubectl rollout undo deployment my-deployment

Você também pode reverter para uma revisão específica:

kubectl rollout undo deployment my-deployment --to-revision=3

Como escalonar uma implantação

É possível escalonar manualmente uma implantação usando o Console do GCP ou kubectl scale.

Para saber como fazer escalonamento automático de implantações, consulte Como fazer escalonamento automático de implantações.

kubectl

kubectl scale pode ser usado a qualquer momento para escalonar a implantação.

Para escalonar uma implantação manualmente, execute o comando a seguir:

kubectl scale deployment [DEPLOYMENT_NAME] --replicas [NUMBER_OF_REPLICAS]

em que [NUMBER_OF_REPLICAS] é o número pretendido de pods replicados.

Console

Para escalonar uma implantação, siga as etapas a seguir:

  1. Acesse o menu "Cargas de trabalho" do Google Kubernetes Engine no console do GCP.

    Acessar o menu "Cargas de trabalho"

  2. Selecione a carga de trabalho desejada no menu.

  3. Clique em Ações e depois em Escalonar.

  4. No campo Réplicas, insira o número desejado de réplicas.

  5. Clique em Escalonar.

Como excluir uma implantação

É possível excluir uma implantação usando o Console do GCP ou kubectl delete.

kubectl

Para excluir uma implantação, execute o comando a seguir:

kubectl delete deployment [DEPLOYMENT_NAME]

Console

Para excluir uma implantação, siga as etapas a seguir:

  1. Acesse o menu "Cargas de trabalho" do Google Kubernetes Engine no console do GCP.

    Acessar o menu "Cargas de trabalho"

  2. No menu, selecione a carga de trabalho pretendida.

  3. Clique em Excluir.

  4. No menu da caixa de diálogo de confirmação, clique em Excluir.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine