arrow_back

Como usar o Cloud SQL com o Google Kubernetes Engine

Acesse mais de 700 laboratórios e cursos

Como usar o Cloud SQL com o Google Kubernetes Engine

Laboratório 1 hora universal_currency_alt 5 créditos show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

Visão geral

Neste laboratório, você irá configurar uma implantação do Kubernetes do WordPress conectada ao Cloud SQL via SQL Proxy. O SQL Proxy permite que você interaja com uma instância do Cloud SQL como se ela estivesse instalada localmente (localhost:3306). Mesmo quando você está em uma porta local não segura, o SQL Proxy garante sua segurança na conexão com a instância do Cloud SQL.

Para concluir este laboratório, é preciso gerar vários componentes. Crie um cluster do GKE. Em seguida, crie uma instância do Cloud SQL para se conectar e uma conta de serviço para permitir que os pods acessem a instância, que será autenticada com a Identidade da carga de trabalho. Depois, implante o WordPress no cluster do GKE usando o SQL Proxy como um arquivo secundário, conectado à instância do Cloud SQL.

Objetivos

O que você fará neste laboratório:

  • Criar uma instância do Cloud SQL e um banco de dados para o WordPress
  • Criar credenciais e secrets do Kubernetes para autenticação de aplicativos
  • Configurar a Identidade da carga de trabalho
  • Configurar uma implantação com uma imagem do WordPress para usar o SQL Proxy
  • Instalar o SQL Proxy como um contêiner de arquivo secundário e usá-lo para conceder o acesso SSL de uma instância externa do CloudSQL ao cluster do GKE

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.

  1. Faça login no Qwiklabs em uma janela anônima.

  2. 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.

  3. Quando tudo estiver pronto, clique em Começar o laboratório.

  4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

  5. Clique em Abrir Console do Google.

  6. 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.

  7. Aceite os termos e pule a página de recursos de recuperação.

Depois que você concluir as etapas iniciais de login, o painel do projeto será exibido.

Ative o Google Cloud Shell

O Google Cloud Shell é uma máquina virtual com 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.

  1. No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

    Ícone do Cloud Shell em destaque

  2. Clique em Continuar.

O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:

ID do projeto em destaque no terminal do Cloud Shell

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  • Para listar o nome da conta ativa, use este comando:
gcloud auth list

Saída:

Credentialed accounts: - @.com (active)

Exemplo de saída:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Para listar o ID do projeto, use este comando:
gcloud config list project

Saída:

[core] project =

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: a documentação completa da gcloud está disponível no guia com informações gerais sobre a gcloud CLI .

Tarefa 1: conecte-se ao cluster do GKE do laboratório

  1. No Cloud Shell, digite o comando abaixo para definir a variável de ambiente da zona do Google Cloud e o nome do cluster:
export my_cluster=autopilot-cluster-1 export my_project=$(gcloud config get-value project) export my_region={{{ project_0.default_region | "" }}}
  1. Configure o preenchimento automático da ferramenta de linha de comando kubectl:
source <(kubectl completion bash)
  1. Configure o acesso ao cluster para o kubectl:
gcloud container clusters get-credentials $my_cluster --region $my_region

Tarefa 2: ative as APIs do Cloud SQL

  1. No console do Google Cloud, abra o menu de navegação (Ícone do menu de navegação) e clique em APIs e serviços.

  2. Clique em + ATIVAR APIs E SERVIÇOS.

  3. Em Pesquisar APIs e serviços, digite SQL e clique no bloco da API Cloud SQL.

  4. Clique em Ativar para ativar a API Cloud SQL.

Se a API já estiver ativa, será exibido o botão Gerenciar com uma mensagem de API ativada. Nesse caso, não é preciso fazer nada.

  1. Repita a etapa acima para ativar a API sqladmin.

Tarefa 3: crie uma instância do Cloud SQL

  1. No Cloud Shell, execute o seguinte comando para criar a instância:
gcloud sql instances create sql-instance --tier=db-n1-standard-2 --region=$my_region
  1. No console do Google Cloud, acesse SQL.
  2. Você verá sql-instance. Clique nesse nome e depois no menu Usuários.
Observação: aguarde alguns minutos para que a instância do Cloud SQL seja provisionada.

Quando o usuário root aparecer, passe para a próxima etapa.

  1. Clique em Adicionar conta de usuário e crie uma conta com o nome de usuário sqluser e a senha sqlpassword.

  2. Deixe a opção Nome do host definida como Permitir qualquer host (%) e clique em ADICIONAR.

  3. Volte para o menu Visão geral, ainda na instância sql-instance, e copie o nome de conexão da sua instância.

Talvez seja necessário rolar a tela um pouco para ver essa informação.

  1. Crie uma variável de ambiente com o nome da instância do Cloud SQL e substitua o marcador de posição pelo nome copiado na etapa anterior:
export SQL_NAME=[Cloud SQL Instance Name]
  1. Seu comando será semelhante a este:
$ export SQL_NAME=qwiklabs-gcp-d03ee58ad9ad507e:us-central1:sql-instance
  1. Conecte-se à instância do Cloud SQL:
gcloud sql connect sql-instance
  1. Pressione Enter quando for solicitada a senha raiz. Por padrão, essa senha do usuário SQL fica em branco.

O prompt mysql> será exibido. Ele indica que você se conectou à instância do Cloud SQL usando o cliente MySQL.

  1. Crie o banco de dados obrigatório para o WordPress. Por padrão, o nome é wordpress:
create database wordpress;
  1. Selecione o banco de dados wordpress:
use wordpress;
  1. Selecione o banco de dados wordpress:
show tables;

Você receberá a informação de que o conjunto está vazio, já que ainda não criou tabelas.

  1. Saia do cliente MySQL:
exit;

Clique em "Verificar meu progresso" para conferir o objetivo.

Criar uma instância do Cloud SQL

Tarefa 4: prepare uma conta de serviço com permissão de acesso ao Cloud SQL

  1. Para criar uma conta de serviço no Console do Google Cloud, acesse IAM e administrador > Contas de serviço.

  2. Clique em + Criar conta de serviço.

  3. Especifique o Nome da conta de serviço como sql-access e clique em Criar e continuar.

  4. Clique em Selecionar um papel.

  5. Pesquise Cloud SQL, selecione Cliente do Cloud SQL e clique em Continuar.

  6. Clique em Concluído.

  7. Localize a conta de serviço sql-access e clique no ícone de três pontos na coluna Ações.

  8. Selecione Gerenciar chaves.

  9. Em seguida, clique em ADICIONAR CHAVE e selecione Criar nova chave.

  10. Verifique se o tipo de chave JSON está selecionado e clique em CRIAR.

Com isso, um par de chave pública/privada será criado e o arquivo da chave privada será salvo automaticamente no computador. Você precisará desse arquivo JSON posteriormente.

  1. Clique em Fechar para fechar a caixa de diálogo de notificação.
  2. Localize o arquivo de credencial JSON que foi salvo e o renomeie como credentials.json

Tarefa 5: crie uma conta de serviço do Kubernetes e defina a Identidade da carga de trabalho

  1. No Cloud Shell, execute o seguinte comando para criar a conta de serviço do Kubernetes:
kubectl create serviceaccount gkesqlsa
  1. No Cloud Shell, execute o seguinte comando para vincular a conta de serviço do Google Cloud à conta de serviço do Kubernetes que você acabou de criar:
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:$my_project.svc.id.goog[default/gkesqlsa]" \ sql-access@$my_project.iam.gserviceaccount.com
  1. No Cloud Shell, execute o seguinte comando para anotar a conta de serviço do Kubernetes com os detalhes da conta de serviço do Google Cloud:
kubectl annotate serviceaccount \ gkesqlsa \ iam.gke.io/gcp-service-account=sql-access@$my_project.iam.gserviceaccount.com

Clique em "Verificar meu progresso" para conferir o objetivo.

Crie uma conta de serviço

Tarefa 6: crie secrets

Crie dois secrets do Kubernetes: um para enviar as credenciais do MySQL e outro para as credenciais do Google (a conta de serviço).

  1. No Cloud Shell, digite o seguinte para criar um secret das credenciais do MySQL:
kubectl create secret generic sql-credentials \ --from-literal=username=sqluser\ --from-literal=password=sqlpassword

Caso você tenha usado um nome de usuário e uma senha diferentes ao criar as contas de usuário do Cloud SQL, faça a substituição.

  1. No Cloud Shell, clique em Mais (Ícone &quot;Mais&quot;) à direita da barra de menus.

  2. Clique em Fazer upload > deixe a opção Arquivo selecionada > Escolher arquivos. Em seguida, faça upload do arquivo de credencial credentials.json salvo na etapa anterior no Cloud Shell.

  3. No Cloud Shell, mova o arquivo de credencial para o diretório de trabalho atual:

mv ~/credentials.json .

Quando é feito o upload de um arquivo para o Cloud Shell, ele é enviado ao diretório principal do usuário. É mais fácil trabalhar com arquivos no diretório de trabalho atual com kubectl, então essa movimentação facilita a próxima etapa.

  1. Crie um Secret para as credenciais da sua conta de serviço do Google Cloud com o seguinte comando:
kubectl create secret generic google-credentials\ --from-file=key.json=credentials.json

Clique em "Verificar meu progresso" para conferir o objetivo.

Criar secrets

Tarefa 7: implante o agente do SQL Proxy como um contêiner de arquivo secundário

Vamos criar um arquivo de manifesto de implantação chamado sql-proxy.yaml que implanta um contêiner de aplicativo WordPress de demonstração com o agente do SQL Proxy como contêiner secundário.

Nas configurações do ambiente do contêiner do WordPress, o WORDPRESS_DB_HOST é especificado usando o endereço IP do localhost. O contêiner de arquivo secundário cloudsql-proxy é configurado para apontar para a instância do Cloud SQL criada na tarefa anterior. O nome de usuário e a senha do banco de dados são transmitidos ao contêiner do WordPress como chaves secretas, e a identidade da carga de trabalho é configurada. Também é criado um serviço para permitir que você se conecte à instância do WordPress pela Internet.

Crie e abra um arquivo chamado sql-proxy.yaml com nano usando o seguinte comando:

nano sql-proxy.yaml
  1. Quando o nano estiver aberto, cole o seguinte no arquivo sql-proxy.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: serviceAccountName: gkesqlsa containers: - name: web image: gcr.io/cloud-marketplace/google/wordpress:6.1 #image: wordpress:5.9 ports: - containerPort: 80 env: - name: WORDPRESS_DB_HOST value: 127.0.0.1:3306 # These secrets are required to start the pod. # [START cloudsql_secrets] - name: WORDPRESS_DB_USER valueFrom: secretKeyRef: name: sql-credentials key: username - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: sql-credentials key: password # [END cloudsql_secrets] # Change '<INSTANCE_CONNECTION_NAME>' here to include your Google Cloud # project, the region of your Cloud SQL instance and the name # of your Cloud SQL instance. The format is # $PROJECT:$REGION:$INSTANCE # [START proxy_container] - name: cloudsql-proxy image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.8.0 args: - "--structured-logs" - "--port=3306" - "<INSTANCE_CONNECTION_NAME>" securityContext: runAsNonRoot: true --- apiVersion: "v1" kind: "Service" metadata: name: "wordpress-service" namespace: "default" labels: app: "wordpress" spec: ports: - protocol: "TCP" port: 80 selector: app: "wordpress" type: "LoadBalancer" loadBalancerIP: ""
  1. Pressione Ctrl+O e, em seguida, Enter para salvar o arquivo editado.

  2. Pressione Ctrl+X para sair do editor de texto nano.

As seções mais importantes nesse manifesto são:

  • Na seção spec, a conta de serviço do Kubernetes está configurada.
  • Na seção env do Wordpress, a variável WORDPRESS_DB_HOST é definida como 127.0.0.1:3306. Com isso, um contêiner será conectado no mesmo Pod que escuta a porta 3306. Por padrão, essa é a porta ouvida pelo SQL-Proxy.
  • Na seção env do Wordpress, as variáveis WORDPRESS_DB_USER e WORDPRESS_DB_PASSWORD são definidas usando valores armazenados no secret sql-credential, criado na tarefa anterior.
  • Na seção do contêiner cloudsql-proxy, a chave de comando que define o nome da conexão SQL, "INSTANCE_CONNECTION_NAME> contém uma variável de marcador de posição que não está configurada com um ConfigMap ou Secret. Assim, ela deve ser atualizada diretamente nesse manifesto de exemplo para apontar para sua instância do Cloud SQL.
  • A seção de serviço no fim cria um LoadBalancer externo chamado "wordpress-service" que permite ao aplicativo ser acessado em endereços externos da Internet.
  1. Use sed para atualizar a variável do marcador de posição no nome da conexão SQL para o nome da sua instância do SQL:
sed -i 's/<INSTANCE_CONNECTION_NAME>/'"${SQL_NAME}"'/g'\ sql-proxy.yaml Observação: o comando sed no UNIX é a sigla para editor de stream e pode executar várias funções em arquivos, como substituição, inserção ou exclusão. O uso mais comum do sed é a substituição. O sed permite editar arquivos sem abrir, uma opção muito mais rápida para encontrar e substituir informações.
  1. Implante o aplicativo:
kubectl apply -f sql-proxy.yaml
  1. Consulte o status da implantação:
kubectl get deployment wordpress Observação: repita esse comando até que uma instância fique disponível.

Saída:

NAME READY UP-TO-DATE AVAILABLE AGE wordpress 1/1 1 1 45s
  1. Liste os serviços no seu cluster do GKE:
kubectl get services

O ip-address externo do LoadBalancer de wordpress-service é o endereço que você usa para se conectar ao seu blog do WordPress.

  1. Repita o comando até receber um endereço externo como o exemplo abaixo.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) kubernetes ClusterIP 10.12.0.1 443/TCP wordpress-service LoadBalancer 10.12.3.17 35.238.218.6 80:31095/TCP

Clique em "Verificar meu progresso" para conferir o objetivo.

Implante o agente do SQL Proxy como um contêiner de arquivo secundário

Tarefa 7: conecte-se à sua instância do WordPress

  1. Abra uma nova guia do navegador e conecte-se ao seu site do WordPress usando o ip-address externo do LoadBalancer. O assistente de instalação do WordPress será iniciado.
  2. Selecione English (United States) e clique em Continue.
  3. Digite um nome de amostra no campo Site Title.
  4. Digite um Username e uma Password para administrar o site.
  5. Digite um endereço de e-mail.

Nenhum desses valores é muito importante nem será necessário.

  1. Clique em Install WordPress.

Após alguns segundos, será exibida a notificação Success! . Você pode fazer login caso queira verificar a interface do administrador do WordPress, mas isso não é obrigatório para o laboratório.

O processo de inicialização criou novas tabelas e informações no banco de dados wordpress da instância do Cloud SQL. Agora, valide se essas novas tabelas do banco de dados foram criadas usando o contêiner do SQL Proxy.

  1. Volte ao Cloud Shell e se conecte à instância do Cloud SQL:
gcloud sql connect sql-instance
  1. Pressione Enter quando for solicitada a senha raiz. Por padrão, essa senha do usuário SQL fica em branco.

O prompt mysql> será exibido. Ele indica que você se conectou à instância do Cloud SQL usando o cliente MySQL.

  1. Selecione o banco de dados wordpress:
use wordpress;
  1. Selecione o banco de dados wordpress:
show tables;

Serão exibidas várias novas tabelas do banco de dados que foram criadas durante a inicialização do WordPress. Isso demonstra que o contêiner de arquivo secundário do SQL Proxy foi configurado corretamente:

MySQL [wordpress]> show tables; +-----------------------+ | Tables_in_wordpress | +-----------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | +-----------------------+ 12 rows in set (0.19 sec)
  1. Liste todas as entradas da tabela de usuário do WordPress:
select * from wp_users;

Dessa forma, o registro do banco de dados da conta de administrador do WordPress será listado e exibirá o e-mail usado durante a inicialização do WordPress.

  1. Saia do cliente MySQL:
exit;

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.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.