Nesta página, explicamos como implantar um aplicativo Linux sem estado usando o Google Kubernetes Engine (GKE). Saiba também como implantar um aplicativo sem estado do Windows.
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 a Implantação para implantar aplicativos sem estado como pods uniformese 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 são diferentes dos com estado, que usam armazenamento permanente (em inglês) para salvar dados e StatefulSets para implantar pods com identidades exclusivas.
Antes de começar
Antes de começar, veja se você realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
Verifique se o aplicativo em contêiner está armazenado em um registro de imagens, como o Artifact 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 arquivo de manifesto de implantação simples. Essa
implantação cria três pods replicados rotulados como run=my-app
, que executam a
imagem hello-app
armazenada no Artifact 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: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Neste exemplo:
.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 deve ser executado.spec.containers
inclui o nome do contêiner a ser executado em cada pod e a imagem do contêiner que deve ser executada.
Para 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 de implantação no menu Cargas de trabalho do console do Google Cloud para criar uma implantação simples a partir de uma imagem de contêiner armazenada no Artifact Registry.
Escreva um manifesto de Implantação e execute
kubectl apply
(em inglês) para criar o recurso.
kubectl apply
Use kubectl apply
para criar e atualizar declarativamente (em inglês) as Implantações a partir de arquivos de manifesto. 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
Substitua DEPLOYMENT_FILE
pelo 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 etapas a seguir:
Acesse a página Cargas de trabalho no console do Google Cloud.
Clique em add_box Implantar.
Em Especificar contêiner, selecione uma das seguintes opções:
Imagem de contêiner atual para escolher uma imagem de contêiner disponível no Artifact Registry ou no DockerHub. Em Caminho da imagem, insira o caminho para a imagem do contêiner e a versão.
Nova imagem de contêiner para usar uma imagem criada com o Cloud Source Repositories e o Cloud Build.
Se quiser, configure a implantação com:
- as variáveis de ambiente a serem transmitidas para o contêiner;
- os comandos iniciais para personalizar o entrypoint do contêiner no ambiente de execução.
Clique em Concluído e em Continuar.
Na seção Configuração, insira um Nome do aplicativo para a implantação e especifique o Namespace do Kubernetes para implantá-lo nela.
Opcionalmente, em Rótulos, é possível adicionar rótulos do Kubernetes à implantação.
Para salvar o YAML que cria essa implantação para atualizá-lo depois, clique em Ver YAML. Copie e cole o YAML em um arquivo, salve-o e clique em Fechar na caixa de diálogo Saída YAML.
No menu suspenso Cluster do Kubernetes, escolha o cluster que quiser.
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:
- O menu Cargas de trabalho
É possível usar
kubectl describe
ekubectl get
kubectl
Para ver informações detalhadas sobre a implantação, execute o seguinte comando:
kubectl describe deployment DEPLOYMENT_NAME
Substitua DEPLOYMENT_NAME
pelo nome do Deployment.
Para listar os pods criados pela implantação, execute o comando a seguir:
kubectl get pods -l KEY=VALUE
Neste comando, a sinalização -l
instrui kubectl
a obter todos os pods com um rótulo de valor-chave. Por exemplo, se você identificou a implantação run: my-app
, você executaria kubectl get pods -l run=my-app
para ver os pods com essa etiqueta.
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:
Acesse a página Cargas de trabalho no console do Google Cloud.
Na lista de cargas de trabalho, clique no nome da implantação que você quer inspecionar.
Na página Detalhes da implantação, siga um destes procedimentos:
- Clique na guia Histórico de revisões para ver o histórico de revisões da implantação.
- Clique na guia Eventos para ver todos os eventos relacionados à implantação.
- Clique na guia Registros para ver os registros de atividade do contêiner na implantação.
- Clique na guia YAML para ver, copiar e fazer o download do manifesto YAML para a implantação.
Como atualizar a implantação
É possível lançar 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 métodos a seguir:
- Use o menu Atualização gradual e o editor de YAML no menu Cargas de trabalho no Console do Google Cloud.
- Faça alterações em um arquivo de manifesto e os aplique com
kubectl apply
(em inglês). - Atualize os campos
image
,resources
ouselector
da especificação do pod usandokubectl set
. Atualize uma Implantação diretamente do shell ou em um editor de preferência usando
kubectl edit
(em inglês).
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 comando a seguir:
kubectl apply -f DEPLOYMENT_FILE
Substitua DEPLOYMENT_FILE
pelo 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
Use kubectl set
para modificar a imagem, recursos (solicitações ou limites) ou campos de seleção 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 este comando:
kubectl set image deployment nginx nginx=nginx:1.9.1
Console
Para acessar o menu Atualização gradual da implantação:
Acesse a página Cargas de trabalho no console do Google Cloud.
Na lista de cargas de trabalho, clique no nome da implantação que você quer modificar.
Clique em list Ações > Atualização gradual.
Configure os seguintes parâmetros opcionais para a estratégia de atualizaçã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.
- Sobrecarga máxima: 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: 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.
Em Imagens de contêiner, digite o caminho e a versão da imagem do contêiner atualizada.
Clique em Atualizar.
Reversão de uma atualização
Use kubectl rollout undo
para reverter uma atualização.
É possível 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
Use o console do Google Cloud ou
o kubectl scale
para escalonar manualmente uma implantação.
Saiba mais sobre o escalonamento automático de Implantações.
kubectl
kubectl scale
pode ser usado a qualquer momento para escalonar sua implantação.
Para escalonar uma implantação manualmente, execute o comando a seguir:
kubectl scale deployment DEPLOYMENT_NAME --replicas NUMBER_OF_REPLICAS
Substitua NUMBER_OF_REPLICAS
pelo número pretendido de pods replicados.
Console
Para escalonar uma implantação, siga as etapas a seguir:
Acesse a página Cargas de trabalho no console do Google Cloud.
Na lista de cargas de trabalho, clique no nome da implantação que você quer modificar.
Clique em list Ações > Escalonar > Editar réplicas
Digite o novo número de Réplicas da implantação.
Clique em Escalonar.
Como excluir uma implantação
É possível excluir uma implantação usando o console do Google Cloud ou o
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:
Acesse a página Cargas de trabalho no console do Google Cloud.
Na lista de cargas de trabalho, selecione uma ou mais implantações a serem excluídas.
Clique em delete Excluir.
Quando solicitado a confirmar, clique em Excluir.