Checkpoints
Create a Kubernetes cluster and deployments (Auth, Hello, and Frontend)
/ 50
Canary Deployment
/ 50
Como gerenciar implantações usando o Kubernetes Engine
- GSP053
- Informações gerais
- Objetivos
- Introdução às implantações
- Configuração e requisitos
- Definir a zona
- Receber um exemplo de código para este laboratório
- Tarefa 1: Saber mais sobre o objeto de implantação
- Tarefa 2: Criar uma implantação
- Tarefa 3: Atualização gradual
- Tarefa 4: Implantações canário
- Tarefa 5: Implantações azul-verde
- Parabéns!
GSP053
Informações gerais
Regularmente, as práticas do Dev Ops usam várias implantações para gerenciar cenários de implantação de aplicativos, como a "Implantação contínua", as "Implantações azul-verde", as "Implantações canário", entre outras. Este laboratório ensina a escalonar e gerenciar contêineres para que você crie esses cenários comuns em que várias implantações heterogêneas são usadas.
Objetivos
Neste laboratório, você vai aprender a:
- Usar a ferramenta
kubectl
- Criar arquivos
yaml
de implantação - Iniciar, atualizar e escalonar implantações
- Atualizar implantações e aprender sobre estilos de implantação
Pré-requisitos
Para maximizar seu aprendizado neste laboratório, recomendamos que você:
- Faça estes laboratórios do Google Cloud Ensina:
- Tenha habilidades de administração do sistema Linux.
- Entenda os conceitos de implantação contínua da teoria de DevOps.
Introdução às implantações
Em geral, as implantações heterogêneas envolvem a conexão de dois ou mais ambientes ou regiões de infraestrutura diferentes para atender a uma necessidade técnica ou operacional específica. As implantações heterogêneas são chamadas de "híbridas", "multicloud" ou "públicas-particulares", dependendo das características específicas da implantação.
As implantações heterogêneas usadas neste laboratório abrangem regiões dentro de um único ambiente de nuvem, de vários ambientes de nuvem pública (multicloud) ou uma combinação de ambientes de nuvem locais e públicos (híbridos ou públicos-particulares).
Vários desafios comerciais e técnicos podem surgir em implantações limitadas a um único ambiente ou região:
- Recursos esgotados: em qualquer ambiente único, particularmente em ambientes locais, talvez os recursos de computação, de rede e de armazenamento não atendam às suas necessidades de produção.
- Alcance geográfico limitado: as implantações em um único ambiente exigem que pessoas geograficamente distantes umas das outras acessem uma implantação. O tráfego delas pode viajar ao redor do mundo até um local central.
- Disponibilidade limitada: os padrões de tráfego na escala da Web desafiam os aplicativos a permanecerem resilientes e tolerantes a falhas.
- Dependência de um fornecedor: a plataforma e as abstrações da infraestrutura no nível do fornecedor podem impedir a portabilidade dos aplicativos.
- Recursos inflexíveis: seus recursos podem estar limitados a um determinado conjunto de ofertas de computação, armazenamento ou rede.
As implantações heterogêneas ajudam a superar esses desafios, mas precisam ser projetadas com processos e procedimentos programáticos e deterministas. Os procedimentos de implantação únicos ou ad-hoc podem tornar as implantações ou os processos frágeis e intolerantes a falhas. Os processos ad-hoc podem perder dados ou tráfego. Os bons processos de implantação precisam ser repetíveis e usar abordagens comprovadas para gerenciar o provisionamento, a configuração e a manutenção.
Três cenários comuns de implantação heterogênea são:
- implantações multicloud;
- dados locais à frente;
- processos de integração contínua/entrega contínua (CI/CD).
Os próximos exercícios colocam em prática alguns casos de uso comuns de implantações heterogêneas com abordagens bem-elaboradas usando o Kubernetes e outros recursos de infraestrutura que podem ajudar os usuários a realizá-los.
Configuração e requisitos
Antes de clicar no botão Start Lab
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
- Tempo para concluir o laboratório---não se esqueça: depois de começar, não será possível pausar o laboratório.
Como iniciar seu laboratório e fazer login no console do Google Cloud
-
Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você vai encontrar o seguinte:
- O botão Abrir console do Google Cloud
- O tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações, se forem necessárias
-
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta. -
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Nome de usuário"}}} Você também encontra o Nome de usuário no painel Detalhes do laboratório.
-
Clique em Seguinte.
-
Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.
{{{user_0.password | "Senha"}}} Você também encontra a Senha no painel Detalhes do laboratório.
-
Clique em Seguinte.
Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais. -
Acesse as próximas páginas:
- Aceite os Termos e Condições.
- Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
- Não se inscreva em testes gratuitos.
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
Ativar o Cloud Shell
O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
- Clique em Ativar o Cloud Shell na parte de cima do console do Google Cloud.
Depois de se conectar, vai notar que sua conta já está autenticada, e que o projeto está configurado com seu PROJECT_ID. A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
gcloud
é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- (Opcional) É possível listar o nome da conta ativa usando este comando:
-
Clique em Autorizar.
-
A saída será parecida com esta:
Saída:
- (Opcional) É possível listar o ID do projeto usando este comando:
Saída:
Exemplo de saída:
gcloud
, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.
Definir a zona
Execute o comando abaixo para definir sua zona de trabalho do Google Cloud, substituindo a zona local por
Receber um exemplo de código para este laboratório
- Receba o exemplo de código para criar e executar contêineres e implantações:
- Crie um cluster com três nós (esse processo vai levar alguns minutos):
Tarefa 1: Saber mais sobre o objeto de implantação
Para começar, confira o objeto de implantação.
- O comando
explain
nokubectl
inclui informações sobre o objeto de implantação:
- Também podemos mostrar todos os campos que estão usando a opção
--recursive
.
- O comando "explain" pode ser usado durante o laboratório para entender a estrutura de um objeto de implantação e o que cada campo faz.
Tarefa 2: Criar uma implantação
- Atualize o arquivo de configuração
deployments/auth.yaml
:
- Inicie o editor:
- Altere
image
na seção de contêineres da implantação para o seguinte:
- Salve o arquivo
auth.yaml
: pressione<Esc>
e depois digite:
- Pressione
<Enter>
. Agora, crie uma implantação simples. Examine o arquivo de configuração de implantação:
Saída:
Observe como a implantação está criando uma réplica e usando a versão 1.0.0 do contêiner "auth".
Quando você executa o comando kubectl create
para criar a implantação de auth, ele cria um pod de acordo com os dados contidos no manifesto de Implantação. Isso significa que é possível escalonar o número de pods alterando o número especificado no campo replicas
.
- Crie seu objeto de implantação usando
kubectl create
:
- Depois de criar a implantação, confirme se ela foi gerada:
- Depois que a implantação for criada, o Kubernetes vai gerar um
ReplicaSet
para ela. É possível confirmar que umReplicaSet
foi criado para a implantação com esse comando:
O ReplicaSet
deve ter um nome semelhante a auth-xxxxxxx
- Confira os pods criados durante a implantação. O Kubernetes cria o pod único quando o
ReplicaSet
é gerado:
Agora vamos criar um serviço para a implantação de "auth". Você já conferiu os arquivos de manifesto de serviço, então não vamos entrar em detalhes sobre isso aqui.
- Use o comando
kubectl create
para criar o serviço auth:
- Repita o procedimento para criar e expor a implantação de
hello
:
- Repita o processo mais uma vez para criar e expor a implantação de
frontend
:
ConfigMap
para "front-end".- Interaja com "frontend" capturando seu IP externo e usando o comando "curl":
Você vai receber a resposta "hello".
- Você também pode usar o recurso de modelagem de saída do
kubectl
para usar "curl" como uma opção:
Testar a tarefa concluída
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório. Se o cluster e as implantações "auth", "hello" e "frontend" do Kubernetes tiverem sido criados corretamente, a pontuação de avaliação vai ser mostrada.
Escalonar uma implantação
Agora que a implantação foi criada, ela pode ser escalonada. Faça isso atualizando o campo spec.replicas
.
- Para ver uma explicação sobre esse campo, use o comando
kubectl explain
novamente:
- O jeito mais fácil de atualizar o campo "replicas" é usando o comando
kubectl scale
:
Depois que a implantação for atualizada, o Kubernetes vai atualizar automaticamente o ReplicaSet
associado e iniciar novos pods até atingir um total de cinco.
- Confirme que agora existem cinco pods
hello
em execução:
- Agora diminua o escalonamento do aplicativo:
- Novamente, confirme que você tem o número correto de pods:
Agora você conhece as implantações do Kubernetes e sabe como gerenciar e escalonar um grupo de pods.
Tarefa 3: Atualização gradual
As implantações permitem atualizar as imagens para uma nova versão usando um mecanismo de atualização gradual. Quando uma implantação é atualizada para uma nova versão, ela cria um novo ReplicaSet
e aumenta lentamente o número de réplicas no novo ReplicaSet
à medida que diminui as réplicas no ReplicaSet
antigo.
Acionar uma atualização gradual
- Para atualizar sua implantação, execute o seguinte comando:
- Altere
image
na seção de contêineres da implantação para o seguinte:
- Clique em Salvar e em Sair.
Depois disso, a implantação atualizada será salva no seu cluster, e o Kubernetes vai iniciar uma atualização gradual.
- Confira o novo
ReplicaSet
criado pelo Kubernetes:
- Uma nova entrada vai aparecer no histórico de lançamentos:
Pausar uma atualização gradual
Se você detectar problemas em um lançamento em execução, pause-o para interromper a atualização.
- Execute o seguinte comando para pausar o lançamento:
- Verifique o estado atual do lançamento:
- Você também pode conferir isso diretamente nos pods:
Retomar uma atualização gradual
O lançamento está pausado, o que significa que alguns pods estão na nova versão, e outros, na mais antiga.
- Continue o lançamento usando o comando
resume
:
- Quando o lançamento estiver concluído, execute o comando
status
para mostrar o seguinte:
Saída:
Reverter uma atualização
Suponha que um bug tenha sido detectado na sua nova versão. Como ela provavelmente apresentará problemas, todos os usuários conectados aos novos pods terão esses problemas.
Reverta para a versão anterior, investigue o problema e depois publique a versão corrigida.
- Faça a reversão usando o comando
rollout
:
- Verifique a reversão no histórico:
- Por fim, confirme que todos os pods foram revertidos para as versões anteriores:
Ótimo. Você aprendeu sobre atualizações graduais para implantações do Kubernetes e como atualizar aplicativos sem tempo de inatividade.
Tarefa 4: Implantações canário
Quando você quiser testar uma nova implantação em produção com um subgrupo de usuários, use uma implantação canário. As implantações canário permitem que você publique uma alteração para um pequeno subgrupo de usuários, reduzindo o risco associado a novas versões.
Criar uma implantação canário
Uma implantação canário é uma implantação separada que contém sua nova versão e um serviço destinado tanto à implantação normal e estável quanto à implantação canário.
- Primeiro, crie uma implantação canário para a nova versão:
Saída:
- Agora crie a implantação canário:
- Quando a implantação canário for criada, você terá duas implantações,
hello
ehello-canary
. Use o comandokubectl
para verificá-las.
No serviço hello
, o seletor app:hello
faz a correspondência dos pods nas duas implantações, a de produção e a canário. No entanto, como a implantação canário tem menos pods, ela ficará visível para menos usuários.
Verificar a implantação canário
- É possível verificar a versão de
hello
que está sendo atendida pela solicitação:
- Execute esse comando várias vezes. Você vai perceber que algumas solicitações são atendidas por "hello 1.0.0", e um pequeno subconjunto (1/4 = 25%) é atribuído à versão 2.0.0.
Testar a tarefa concluída
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório. Se a implantação canário tiver sido criada corretamente, a pontuação de avaliação será mostrada.
Implantações canário em produção - afinidade da sessão
Neste laboratório, cada solicitação enviada ao serviço Nginx teve a chance de ser atendida pela implantação canário. E se você quisesse garantir que um usuário não fosse atendido pela implantação canário? Por exemplo, se a UI de um aplicativo tiver sido alterada e você não quiser confundir o usuário. Em uma situação como essa, é preferível que o usuário permaneça em apenas uma das implantações.
Você pode fazer isso criando um serviço com afinidade da sessão. Dessa forma, o mesmo usuário será sempre atendido pela mesma versão. No exemplo abaixo, o serviço é o mesmo de antes, mas um novo campo sessionAffinity
foi adicionado e definido como ClientIP
. As solicitações de todos os clientes com um determinado endereço IP serão enviadas para a mesma versão do aplicativo hello
.
Como é difícil configurar um ambiente para testar, você não precisa fazer isso aqui, mas pode ser conveniente usar sessionAffinity
para implantações canário em produção.
Tarefa 5: Implantações azul-verde
As atualizações graduais são vantajosas porque permitem que você implante um aplicativo lentamente com o mínimo de sobrecarga, de impacto no desempenho e de tempo de inatividade. Em algumas situações, o ideal é apontar os balanceadores de carga para essa nova versão somente depois que ela tiver sido totalmente implantada. Nesse caso, as implantações azul-verde são o melhor caminho.
O Kubernetes faz isso criando duas implantações separadas; uma para a antiga versão "azul" e outra para a nova versão "verde". Use sua implantação de hello
para a versão "azul". As implantações serão acessadas por um serviço que atuará como roteador. Quando a nova versão "verde" estiver em execução, você vai passar a usar essa versão ao atualizar o serviço.
O serviço
Use o serviço "hello", mas atualize para que ele tenha um seletor app:hello
, version: 1.0.0.
. O seletor corresponderá à implantação "azul". Ele não corresponderá à implantação "verde", porque usará uma versão diferente.
- Primeiro, atualize o serviço:
resource service/hello is missing
porque ele é corrigido automaticamente.Como atualizar usando a implantação azul-verde
Para oferecer suporte a um estilo de implantação azul-verde, você vai criar uma nova implantação "verde" para a nova versão. A implantação verde atualiza o rótulo da versão e o caminho da imagem.
- Crie a implantação verde:
- Depois que você tiver uma implantação verde e ela tiver sido iniciada corretamente, confirme que a versão atual da 1.0.0 ainda está sendo usada:
- Agora, aponte para a nova versão para atualizar o serviço:
- Depois de atualizar o serviço, a implantação "verde" será usada imediatamente. Agora, é possível verificar que a nova versão está sempre sendo usada.
Reversão azul-verde
Se necessário, é possível reverter para a versão antiga da mesma maneira.
- Enquanto a implantação "azul" ainda estiver em execução, basta atualizar o serviço de volta para a versão antiga.
- A reversão vai ocorrer após a atualização do serviço. De novo, verifique se a versão correta está sendo usada agora:
Você conseguiu! Você aprendeu sobre implantações azul-verde e a implantar atualizações em aplicativos que precisam alternar as versões de uma só vez.
Parabéns!
Neste laboratório, você teve a oportunidade de trabalhar mais com a ferramenta de linha de comando kubectl
e com vários estilos de configurações de implantação em arquivos YAML para iniciar, atualizar e escalonar suas implantações. Agora que você terminou o laboratório, já pode aplicar essas habilidades ao seu próprio trabalho de DevOps.
Próximas etapas / Saiba mais
-
Guias e soluções de DevOps na documentação do Google Cloud.
-
Faça parte da comunidade do Kubernetes no site do Kubernetes!
Treinamento e certificação do Google Cloud
Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.
Manual atualizado em 2 de abril de 2024
Laboratório testado em 14 de agosto de 2023
Copyright 2024 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.