Checkpoints
Create required resources with the fully automated deployment
/ 100
Conecte-se ao Cloud SQL por um aplicativo do Kubernetes Engine
GSP449
Informações gerais
Neste laboratório, você vai descobrir como é fácil conectar um aplicativo no Kubernetes Engine a uma instância do Cloud SQL usando o contêiner do Cloud SQL Proxy como um contêiner de arquivo secundário. Você vai implantar um cluster do Kubernetes Engine e uma instância Postgres do Cloud SQL e usar um contêiner de proxy do Cloud SQL para permitir a comunicação entre eles.
O tema do laboratório é como estabelecer uma conexão com uma instância do Cloud SQL usando um contêiner de proxy, mas os conceitos são iguais para qualquer serviço gerenciado do Google Cloud que precise de acesso à API.
O laboratório foi criado por engenheiros do GKE Helmsman para ajudar você a entender melhor o Cloud SQL por meio de um contêiner de proxy. Acesse a página gke-networking-demos para visualizar essa demonstração. Todas as contribuições são bem-vindas!
Conteúdo
Neste laboratório, você vai aprender a:
- Proteger um banco de dados contra acesso não autorizado usando uma conta de serviço sem privilégios nos nós do Kubernetes Engine.
- Colocar credenciais de conta de serviço privilegiada em um contêiner em execução no Kubernetes Engine.
- Usar o proxy do Cloud SQL para diminuir o trabalho de conexão à instância do Cloud SQL e reduzir as informações que os aplicativos têm sobre sua estrutura.
Contas de serviço sem privilégios
Todos os nós do Kubernetes Engine recebem a conta de serviço padrão do Compute Engine. A conta de serviço tem um privilégio consideravelmente alto e acesso a muitos serviços do Google Cloud. Devido à configuração do SDK Cloud, o software que você escrever usará as credenciais atribuídas à instância do Compute Engine em que está sendo executado.
Para impedir que todos os contêineres tenham os privilégios da conta de serviço padrão do Compute Engine, é necessário criar uma conta de serviço com privilégios mínimos para os nós do Kubernetes Engine e criar outras contas mais específicas (mas com menos privilégios) para os contêineres.
Contas de serviço privilegiadas em contêineres
É possível receber credenciais de conta de serviço de duas formas:
- Pela instância do host (o que não é recomendado)
- Com um arquivo de credenciais
Este laboratório mostrará como inserir o arquivo de credenciais em um contêiner em execução no Kubernetes Engine para que o aplicativo tenha os privilégios necessários.
Proxy do Cloud SQL
Com o proxy do Cloud SQL, é possível delegar ao processo a tarefa de criar e manter a conexão com a instância do serviço. Assim, o aplicativo não terá informações sobre a conexão, e o gerenciamento dos secrets será mais simples. O Google inclui o proxy do Cloud SQL como um contêiner do Docker que pode ser executado com o contêiner do aplicativo, no mesmo pod do Kubernetes Engine.
Arquitetura
O aplicativo e o respectivo contêiner secundário são implantados em um pod do Kubernetes (k8s) em execução no único nó no cluster do Kubernetes Engine. O aplicativo se comunica com a instância do Cloud SQL por meio do processo do proxy do Cloud SQL, ouvindo no localhost.
O manifesto do k8s cria um objeto de implantação de réplica única com dois contêineres, pgAdmin e o proxy do Cloud SQL. Há dois secrets instalados no cluster do Kubernetes Engine: as informações de conexão da instância do Cloud SQL e um arquivo de credenciais de chave de conta de serviço, ambos usados pelas chamadas da API Cloud SQL dos contêineres do proxy do Cloud SQL.
O aplicativo não precisa saber nada sobre como se conectar ao Cloud SQL nem estar exposto à API. O processo do proxy do Cloud SQL faz isso para o aplicativo. O contêiner do proxy do Cloud SQL é executado como um contêiner de "arquivo secundário" no pod.
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.
Configure sua região e zona
Alguns recursos do Compute Engine estão em regiões e zonas. As regiões são localizações geográficas específicas onde você executa seus recursos. Todas elas têm uma ou mais zonas.
Execute o comando a seguir para configurar a região e a zona do seu laboratório (use a região/zona mais adequada para você):
Copiar a demonstração
- Execute o comando a seguir para copiar os arquivos deste laboratório:
- Mude para o diretório deste laboratório:
Tarefa 1: implantação
A implantação é totalmente automatizada. O script que você implantará usa os seguintes parâmetros, em ordem:
- Um nome de usuário da instância do Cloud SQL
- Um nome de usuário do console do pgAdmin
- USER_PASSWORD - a senha para fazer login na instância do Postgres
- PG_ADMIN_CONSOLE_PASSWORD - a senha para fazer login na interface do pgAdmin
-
É possível criar qualquer nome de usuário para a instância do Cloud SQL e use qualquer e-mail para o console pgAdmin. Este exemplo usa "dbadmin" e seu e-mail temporário de estudante.
-
Salve sua conta de estudante em uma variável:
- Execute os comandos a seguir para implantar o script e criar os dois nomes de usuário. A resposta ao comando vai solicitar que você crie uma senha para
dbadmin
e$PG_EMAIL
(sua conta student@qwiklabs.net):
As senhas serão usadas novamente mais tarde no laboratório, mas não precisam ser difíceis.
Durante a implantação, create.sh
vai executar os seguintes scripts:
-
enable_apis.sh
- ativa a API Kubernetes Engine e a API Cloud SQL Admin. -
postgres_instance.sh
- cria a instância do Cloud SQL e o usuário adicional do Postgres. O gcloud atingirá o tempo limite ao aguardar a criação de uma instância do Cloud SQL, por isso o script fará manualmente a conclusão. -
service_account.sh
- cria a conta de serviço para o contêiner do proxy do Cloud SQL e cria o arquivo de credenciais. -
cluster.sh
- cria o cluster do Kubernetes Engine. -
configs_and_secrets.sh
- cria os secrets e o configMap do Kubernetes Engine que contêm as credenciais e a string de conexão para a instância do Cloud SQL. -
pgadmin_deployment.sh
- cria o pod pgAdmin4.
create.sh
novamente.
Em seguida, exponha o pod usando o balanceador de carga para se conectar à instância e exclua os serviços quando o processo for concluído para evitar qualquer acesso não autorizado.
- Execute o comando a seguir para receber o ID do Pod:
- Exponha o pod usando o balanceador de carga:
- Para receber o endereço IP do serviço, execute:
Saída:
-
No console do Cloud, em Menu de navegação, selecione SQL e clique no ID da instância.
-
No menu à esquerda, clique em Conexões e em Rede.
-
Depois de marcar a caixa de seleção "IP público", clique em Adicionar uma rede.
-
Nomeie a rede e ative o acesso público:
-
Clique em Concluído.
-
Clique em Salvar.
-
Abra uma nova guia e conecte-se ao pod pgAdmin no seu navegador utilizando th pgAdmin <SVC_IP>:
- Faça login na interface no pgAdmin com as seguintes informações:
- <PGADMIN_USERNAME> (sua conta temporária student@qwiklabs.net) no campo "Endereço de e-mail"
- <PG_ADMIN_CONSOLE_PASSWORD> definido anteriormente
-
Volte ao console do Cloud e à página SQL. Clique na guia Informações gerais.
-
Copie o endereço IP público.
-
No console do pgAdmin, clique em Servidores no painel esquerdo e clique em Adicionar novo servidor.
-
Na guia Geral, dê um nome para o servidor e clique na guia Conexão.
-
Use <DATABASE_USER_NAME>(dbadmin) e <USER_PASSWORD> criados anteriormente para se conectar a 127.0.0.1:5432:
- Nome do host: cole o endereço IP público que você copiou
-
Nome de usuário:
<DATABASE_USER_NAME>
(dbadmin) -
Senha:
<USER_PASSWORD>
que você criou
- Clique em Salvar.
Teste a tarefa concluída
Clique em Verificar meu progresso para conferir a tarefa realizada. Se você tiver criado os recursos necessários com a implantação totalmente automatizada, receberá uma pontuação de avaliação.
Tarefa 2: validação
A validação é totalmente automatizada. O script de validação verifica a existência da instância do Cloud SQL, do cluster do Kubernetes Engine e do pod em execução. Todos esses recursos existirão depois que o script de implantação for concluído.
- No Cloud Shell, valide essas três implantações executando:
O script usa os parâmetros INSTANCE_NAME
: o nome da instância do Cloud SQL.
A resposta esperada é semelhante a:
Tarefa 3: eliminação
A eliminação é totalmente automatizada. O script de eliminação exclui todos os recursos criados no script de implantação.
- Para realizar a eliminação, execute:
O script usa o parâmetro INSTANCE_NAME
: o nome da instância do Cloud SQL.
teardown.sh
executa o comando a seguir:
-
delete_resources.sh
- exclui tudo, exceto a instância do Cloud SQL. -
delete_instance.sh
- exclui a instância do Cloud SQL.
Tarefa 4: solução de problemas no seu ambiente
Quando você cria uma instância do Cloud SQL, aparece esta mensagem de erro:
Resolução
O nome de uma instância excluída não poderá ser reutilizado por até uma semana após a exclusão. Para mais informações, consulte a seção Excluir instâncias.
Parabéns!
Você se conectou a um aplicativo do Kubernetes Engine a uma instância do Cloud SQL usando o contêiner de proxy do Cloud SQL como um contêiner de arquivo secundário. Em seguida, você implantou um cluster do Kubernetes Engine e uma instância do Cloud SQL Postgres e usou o contêiner do proxy do Cloud SQL para permitir a comunicação entre eles.
Termine a Quest
Este laboratório autoguiado faz parte da Quest Google Kubernetes Engine Best Practices. Uma Quest é uma série de laboratórios relacionados que formam um programa de aprendizado. Ao concluir uma Quest, você ganha um selo como reconhecimento da sua conquista. É possível publicar os selos e incluir um link para eles no seu currículo on-line ou nas redes sociais. Consulte o catálogo do Google Cloud Ensina para ver todas as Quests disponíveis.
Próximas etapas/Saiba mais
Instruções de instalação do Kubernetes para implantar um aplicativo em contêiner para várias plataformas.
Manual atualizado em 16 de outubro de 2023
Laboratório testado em 17 de outubro de 2023
Copyright 2024 Google LLC. Este software é fornecido no estado em que se encontra, sem declarações nem garantias para qualquer uso ou finalidade. O uso do software está sujeito ao seu contrato com o Google.