Checkpoints
Deploy GKE clusters
/ 30
Deploy Pods to GKE clusters
/ 35
Deploy a new pod using a Yaml file
/ 35
Como usar o Cloud Shell para implantar clusters do Autopilot do GKE
Informações gerais
Neste laboratório, você vai usar a linha de comando para criar clusters do GKE. Você vai inspecionar o arquivo kubeconfig e usar kubectl
para manipular o cluster.
Objetivos
Neste laboratório, você vai aprender a fazer o seguinte:
- Usar
kubectl
para criar e manipular clusters do GKE - Usar
kubectl
e os arquivos de configuração para implantar pods - Usar o Container Registry para armazenar e implantar contêineres
Configuração do laboratório
Acesse o Qwiklabs
Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.
-
Faça login no Qwiklabs em uma janela anônima.
-
Confira o tempo de acesso do laboratório (por exemplo,
1:15:00
) e finalize todas as atividades nesse prazo.
Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas. -
Quando tudo estiver pronto, clique em Começar o laboratório.
-
Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.
-
Clique em Abrir Console do Google.
-
Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
Se você usar outras credenciais, vai receber mensagens de erro ou cobranças. -
Aceite os termos e pule a página de recursos de recuperação.
Após concluir as etapas iniciais de login, o painel do projeto será exibido.
Abra o Cloud Shell
A maioria das tarefas será realizada no Cloud Shell, um ambiente de linha de comando em execução no Google Cloud. O Cloud Shell é uma máquina virtual com base em Debian que contém todas as ferramentas de gestão necessárias (como docker
, gcloud, gsutil
e kubectl
) e conta com um diretório principal permanente de 5 GB.
- Na barra de título do console do Google Cloud, clique em Ativar o Cloud Shell ().
- Clique em Continuar.
Após o provisionamento, o prompt do Cloud Shell será exibido:
Tarefa 1: implantar clusters do GKE
Nesta tarefa, você vai usar o Cloud Shell para implantar clusters do GKE.
- No Cloud Shell, digite o comando a seguir para definir a variável de ambiente da zona e o nome do cluster:
- No Cloud Shell, digite o seguinte comando para criar um cluster do Kubernetes:
Esse comando define a maioria das opções como padrão. Para acessar o conjunto completo de opções possíveis, consulte a referência do gcloud container clusters create.
Serão exibidos vários avisos sobre as mudanças nas configurações padrão do cluster do GKE, que foram introduzidas com a nova versão do Kubernetes adotada pelo GKE.
Quando ela terminar, a página Kubernetes Engine > Clusters do console do Google Cloud terá a aparência da seguinte captura de tela:
Selecione Conferir meu progresso para consultar o objetivo.
Tarefa 2: conectar-se a um cluster do GKE
Nesta tarefa, você vai usar o Cloud Shell para autenticar um cluster do GKE e depois vai inspecionar os arquivos de configuração do kubectl.
A autenticação no Kubernetes se aplica não só à comunicação entre o cluster e um cliente externo por meio do kube-APIserver em execução no mestre, mas também às interações internas e externas dos contêineres de cluster.
No Kubernetes, a autenticação pode assumir várias formas. No GKE, a autenticação geralmente é processada com tokens OAuth2 e pode ser gerenciada no projeto como um todo por meio do Cloud Identity and Access Management. Outra opção é usar o controle de acesso com base em papéis, que pode ser definido e configurado em cada cluster.
Os contêineres de cluster podem usar contas de serviço para autenticar e acessar recursos externos no GKE.
- Execute o comando a seguir para criar um arquivo kubeconfig com as credenciais do usuário atual e permitir a autenticação. Ele também fornece os detalhes do endpoint de um cluster específico para permitir a comunicação com esse cluster na ferramenta de linha de comando
kubectl
.
Esse comando cria um diretório .kube
no diretório principal, se ele ainda não existir. No diretório .kube
, o comando cria um arquivo chamado config
(caso ainda não exista). Ele vai ser usado para armazenar as informações de autenticação e configuração. O arquivo de configuração é normalmente chamado kubeconfig.
- Abra o arquivo kubeconfig com o editor de texto nano:
Agora é possível examinar todos os dados de configuração de autenticação e endpoint armazenados no arquivo. Serão exibidas as informações para o cluster que foram preenchidas durante a criação dele.
- Pressione CTRL+X para sair do editor nano.
kubectl
manipulam) é indicado pela propriedade current-context
.
Não é necessário executar o comando gcloud container clusters get-credentials
para preencher o arquivo kubeconfig de clusters criados no mesmo contexto (mesmo usuário e ambiente), porque os detalhes desses clusters já foram preenchidos no momento da criação.No entanto, você precisa executar o comando para se conectar aos clusters criados por outros usuários ou fora do ambiente. Ele também é uma forma fácil de mudar o contexto ativo para outro cluster.
Tarefa 3: usar o kubectl para inspecionar um cluster do GKE
Nesta tarefa, você vai usar o Cloud Shell e kubectl para inspecionar um cluster do GKE.
Depois de preencher o arquivo kubeconfig e definir o contexto ativo como um cluster específico, use a ferramenta de linha de comando kubectl
para executar comandos no cluster. A maioria desses comandos aciona uma chamada da API REST diretamente no servidor da API mestre, que leva à ação associada.
- No Cloud Shell, execute o seguinte comando para imprimir o conteúdo do arquivo kubeconfig:
Os dados confidenciais do certificado são substituídos por DATA+OMITTED.
- No Cloud Shell, execute o comando a seguir para imprimir as informações do cluster de contexto ativo:
A saída descreve o cluster de contexto ativo.
Saída:
- No Cloud Shell, execute o seguinte comando para imprimir o contexto ativo:
Uma linha de saída indica o cluster de contexto ativo.
Saída:
O PROJECT_ID
é o ID do projeto. Essa informação é a mesma da propriedade current-context
do arquivo kubeconfig.
- No Cloud Shell, execute o seguinte comando para imprimir alguns detalhes de todos os contextos de cluster no arquivo kubeconfig:
A saída tem várias linhas que dão detalhes do cluster criado e indicam qual é o cluster de contexto ativo. Em geral, esse comando lista algumas informações dos clusters presentes no arquivo kubeconfig do usuário, incluindo os clusters que já foram criados por ele e os que foram adicionados manualmente ao arquivo kubeconfig.
- No Cloud Shell, execute o seguinte comando para alterar o contexto ativo:
Nesse caso, havia somente um cluster, então o comando não alterou nada.
Mas pode ser que você tenha no futuro mais de um cluster em um projeto. Use essa abordagem para mudar o contexto ativo quando seu arquivo kubeconfig tiver as credenciais e a configuração de vários clusters já preenchidas. É preciso ter o nome completo do cluster, O que inclui o prefixo gke
, o ID do projeto, o local e o nome de exibição, todos concatenados com sublinhados.
- No Cloud Shell, execute o seguinte comando para ativar o preenchimento automático de bash no
kubectl
:
Esse comando não produz saída.
- No Cloud Shell, digite kubectl seguido por um espaço e pressione a tecla Tab duas vezes.
O shell exibe todos os comandos possíveis:
- No Cloud Shell, digite kubectl co e pressione a tecla Tab duas vezes.
O shell exibe todos os comandos que começam com "co" (ou qualquer outra sequência de letras que você digitar).
Tarefa 4: implantar pods em clusters do GKE
Nesta tarefa, você vai usar o Cloud Shell para implantar pods em clusters do GKE.
Use kubectl para implantar pods no GKE
O Kubernetes usa a abstração de um pod para agrupar um ou mais contêineres relacionados como uma só entidade a ser programada e implantada como uma unidade no mesmo nó. Você pode implantar um pod que é um único contêiner de uma só imagem de contêiner. Ou um pod que tem muitos contêineres e muitas imagens de contêiner.
- No Cloud Shell, execute o seguinte comando para implantar o nginx como um pod chamado nginx-1:
Esse comando cria um pod chamado nginx com um contêiner que executa a imagem do nginx. Quando um repositório não é especificado, o comportamento padrão é tentar encontrar a imagem localmente ou no registro público do Docker. Neste exemplo, a imagem é extraída do registro público do Docker.
- No Cloud Shell, execute o seguinte comando para visualizar todos os pods implantados no cluster de contexto ativo:
A saída será semelhante ao exemplo a seguir, mas com um nome de pod um pouco diferente.
Saída:
- No Cloud Shell, execute o seguinte comando para visualizar o uso de recursos nos nós do cluster:
A saída será semelhante ao exemplo a seguir.
Saída:
Outro comando top
(kubectl top pods
) mostra informações semelhantes em todos os pods implantados no cluster.
- Agora, digite o nome do pod em uma variável que será usada durante este laboratório. O uso de variáveis como esta pode evitar erros humanos ao escrever nomes longos. Digite o nome exclusivo do seu pod no lugar de
[your_pod_name]
:
Exemplo:
- Para confirmar se a variável de ambiente foi definida corretamente, faça o shell retornar o valor:
Saída:
- No Cloud Shell, execute o seguinte comando para conferir todos os detalhes do pod que você acabou de criar:
A saída será semelhante ao exemplo a seguir. Os detalhes do pod, assim como o status, as condições e os eventos do ciclo de vida dele, serão exibidos.
Saída:
Enviar um arquivo para um contêiner
Para exibir conteúdo estático pelo servidor da Web nginx, é preciso criar e colocar um arquivo no contêiner.
- No Cloud Shell, digite os seguintes comandos para abrir um arquivo chamado
test.html
no editor de texto nano:
- Adicione o texto abaixo (script de shell) ao arquivo
test.html
vazio:
-
Pressione CTRL+X, depois Y e Enter para salvar o arquivo e sair do editor nano.
-
No Cloud Shell, execute o seguinte comando para colocar o arquivo no local adequado do contêiner nginx no pod nginx que vai ser exibido estaticamente:
Esse comando copia o arquivo test.html
do diretório principal local para o /usr/share/nginx/html
do primeiro contêiner no pod nginx. Quando o pod tem vários contêineres, é possível especificar outros usando a opção -c
seguida do nome do contêiner.
Exponha o pod para teste
Um serviço é obrigatório para expor um pod para clientes fora do cluster. Esses serviços são abordados ao longo do curso e usados em outros laboratórios. Use um comando simples e crie um serviço para expor um pod.
- No Cloud Shell, execute o seguinte comando para criar um serviço e expor o pod nginx externamente:
Esse comando cria um serviço LoadBalancer, que permite o acesso ao pod nginx de endereços da Internet fora do cluster.
- No Cloud Shell, execute o seguinte comando para exibir detalhes sobre os serviços no cluster:
A saída será semelhante ao exemplo a seguir. Você vai usar o endereço IP externo na próxima etapa.
Saída:
O serviço Kubernetes é uma das opções padrão criadas ou usadas pelo cluster. O serviço nginx que você criou também aparece na resposta.
Talvez o comando precise ser executado várias vezes até que o endereço IP externo seja exibido.
Saída:
Clique em Verificar meu progresso para conferir o objetivo.
- No Cloud Shell, execute o seguinte comando para verificar se o contêiner nginx está exibindo o arquivo HTML estático copiado.
Substitua [EXTERNAL_IP] pelo endereço IP externo do serviço obtido na saída da etapa anterior.
A saída mostra o conteúdo do arquivo. Acesse o mesmo endereço no navegador para acessar o arquivo renderizado como HTML.
Exemplo:
- No Cloud Shell, execute o seguinte comando para conferir os recursos que estão sendo usados pelo pod nginx:
Saída:
Tarefa 5: fazer a introspecção de pods do GKE
Nesta tarefa, você vai se conectar a um pod para ajustar configurações, editar arquivos e fazer outras alterações nele em tempo real.
Prepare o ambiente
A maneira mais comum de implantar pods e outros recursos no Kubernetes é usar os arquivos de configuração, que às vezes são chamados de arquivos de manifesto. Eles costumam usar a sintaxe YAML e especificam os detalhes do recurso. Com esses arquivos, é mais fácil especificar opções complexas, em vez de usar uma longa string de argumentos de linha de comando.
A sintaxe YAML é semelhante, mas mais concisa do que a sintaxe JSON, e permite o mesmo tipo de estruturação hierárquica de objetos e propriedades. O repositório de origem do laboratório tem exemplos de arquivos YAML preparados para você.
- No Cloud Shell, digite o seguinte comando para clonar o repositório no Cloud Shell do laboratório:
- Crie um link flexível como atalho para o diretório de trabalho:
- Mude para o diretório que contém os arquivos de exemplo deste laboratório:
Você vai receber uma amostra de arquivo de manifesto YAML referente a um pod chamado new-nginx-pod.yaml
:
- Para implantar o manifesto, execute o comando abaixo:
Selecione Conferir meu progresso para consultar o objetivo.
- Para acessar uma lista de pods, execute este comando:
A saída será semelhante ao exemplo.
Saída:
Você verá o novo pod nginx, além daquele criado anteriormente no laboratório.
Use o redirecionamento de shell para se conectar a um pod
Algumas imagens de contêiner incluem um ambiente shell que pode ser iniciado. Talvez ele seja uma opção mais prática do que executar comandos individuais com o kubectl
. Por exemplo, a imagem nginx inclui um shell bash. Nesta tarefa, você vai usar o redirecionamento de shell para se conectar ao shell bash no novo pod nginx e realizar uma sequência de ações.
- No Cloud Shell, execute o seguinte comando para iniciar um shell bash interativo no contêiner nginx:
Um novo prompt de shell será exibido.
Saída:
Você iniciou um shell bash interativo no contêiner do pod new-nginx. Se esse pod tivesse vários contêineres, seria possível especificar um deles pelo nome com a opção -c
.
Como a imagem do contêiner nginx não tem ferramentas de edição de texto por padrão, é necessário instalar uma.
- No Cloud Shell, localize o shell bash do nginx e execute os seguintes comandos para instalar o editor de texto nano:
Quando a pergunta Do you want to continue (Y/n) aparecer, pressione Y para confirmar.
É preciso criar um arquivo test.html
no diretório estático exibido no contêiner nginx.
- No Cloud Shell, vá até o shell bash do nginx e execute os seguintes comandos para acessar o diretório de arquivos estáticos e criar um arquivo
test.html
:
- No Cloud Shell, encontre a sessão nano do shell bash nginx e digite o seguinte:
- Pressione CTRL+X, depois Y e Enter para salvar o arquivo e sair do editor nano.
- No shell bash do nginx, execute o seguinte comando para sair dele no Cloud Shell:
É possível criar um serviço para estabelecer uma conexão e testar o contêiner nginx modificado com o novo arquivo HTML estático. Uma opção mais fácil é usar o encaminhamento de portas para se conectar ao pod diretamente no Cloud Shell.
- No Cloud Shell, execute o seguinte comando para configurar o encaminhamento de portas do Cloud Shell ao pod nginx (da porta 10081 da VM do Cloud Shell para a 80 do contêiner nginx):
A saída será semelhante ao exemplo.
Saída:
Esse é um processo em primeiro plano, então é preciso abrir outra instância do Cloud Shell para fazer testes.
- Na barra de menus do Cloud Shell, clique no sinal de mais (+) para iniciar uma nova sessão.
Uma segunda sessão do Cloud Shell vai aparecer na janela. Para alternar entre as sessões, clique nos títulos na barra de menu.
- Na segunda sessão do Cloud Shell, execute o seguinte comando para testar o contêiner nginx modificado pelo encaminhamento de portas:
Você verá o texto HTML que colocou no arquivo test.html
.
Acessar os registros de um pod
- Na barra de menu do Cloud Shell, clique no sinal de mais (+) para iniciar outra sessão.
Agora a janela tem três sessões abertas. Como antes, clique nas sessões na barra de menus para alternar entre elas.
- Na terceira janela do Cloud Shell, execute o comando abaixo para exibir os registros do pod new-nginx e transmitir as novas entradas (incluindo carimbos de data/hora) à medida que elas chegam:
- Os registros vão aparecer nessa nova janela.
- Volte à segunda sessão do Cloud Shell e execute o comando curl de novo para gerar tráfego no pod.
- Confira as novas mensagens de registro que vão aparecer na terceira sessão do Cloud Shell.
- Feche essa última sessão para interromper a exibição das mensagens de registro.
- Feche a sessão original do Cloud Shell para encerrar o processo de encaminhamento de portas.
Finalize o laboratório
Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.
Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.
O número de estrelas indica o seguinte:
- 1 estrela = muito insatisfeito
- 2 estrelas = insatisfeito
- 3 estrelas = neutro
- 4 estrelas = satisfeito
- 5 estrelas = muito satisfeito
Feche a caixa de diálogo se não quiser enviar feedback.
Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.
Copyright 2020 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.