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. Neste laboratório, apresentamos práticas de escalonamento e gerenciamento de contêineres para você criar esses cenários comuns em que várias implantações heterogêneas são usadas.
Objetivos
Neste laboratório, você vai:
- Ter experiências práticas com 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 a teoria de DevOps: conceitos de implantação contínua.
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", "de várias nuvens" 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 (várias nuvens) 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 de várias nuvens, dados locais à frente e processos de integração contínua/entrega contínua (CI/CD, na sigla em inglês).
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.
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ê verá o seguinte:
- O botão Abrir Console do Cloud
- Tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações se forem necessárias
-
Clique em Abrir Console do Google. O laboratório ativa recursos e depois abre outra guia com a página Fazer login.
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. -
Caso seja preciso, copie o Nome de usuário no painel Detalhes do laboratório e cole esse nome na caixa de diálogo Fazer login. Clique em Avançar.
-
Copie a Senha no painel Detalhes do laboratório e a cole na caixa de diálogo Olá. Clique em Avançar.
Importante: você precisa usar as credenciais do painel à esquerda. Não use suas credenciais do Google Cloud Ensina. 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 GCP vai 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 um ReplicaSet foi criado para a implantação:
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:
- Agora, faça o mesmo para criar e expor a implantação de "hello":
- Repita o processo mais uma vez para criar e expor a implantação de "frontend":
- 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 saber uma explicação sobre esse campo, use o comando
kubectl explain
de novo:
- 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 ajustar 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:
Você aprendeu sobre implantações do Kubernetes e 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 antigo ReplicaSet.
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:
- Salve e saia.
Depois de salvar e sair do editor, 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.
- Faça isso agora:
- 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 usa app:hello
, que vai fazer 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 IU 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!
Isso conclui este laboratório prático de gerenciamento de implantações com o Kubernetes. 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ê concluiu o laboratório, pode aplicar essas habilidades ao seu próprio trabalho de DevOps.
Próximas etapas/Saiba mais
-
No site do Google Cloud, é possível saber mais sobre:
- Padrões de implantação com Kubernetes.
- Guias e soluções de DevOps na documentação do Google Cloud.
-
Acesse o site do Kubernetes para fazer parte da comunidade!
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 26 de janeiro 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.