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.
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.
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.
No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.
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:
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:
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.
Crie o banco de dados obrigatório para o WordPress. Por padrão, o nome é wordpress:
create database wordpress;
Selecione o banco de dados wordpress:
use wordpress;
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.
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
Para criar uma conta de serviço no Console do Google Cloud, acesse IAM e administrador > Contas de serviço.
Clique em + Criar conta de serviço.
Especifique o Nome da conta de serviço como sql-access e clique em Criar e continuar.
Clique em Selecionar um papel.
Pesquise Cloud SQL, selecione Cliente do Cloud SQL e clique em Continuar.
Clique em Concluído.
Localize a conta de serviço sql-access e clique no ícone de três pontos na coluna Ações.
Selecione Gerenciar chaves.
Em seguida, clique em ADICIONAR CHAVE e selecione Criar nova chave.
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.
Clique em Fechar para fechar a caixa de diálogo de notificação.
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
No Cloud Shell, execute o seguinte comando para criar a conta de serviço do Kubernetes:
kubectl create serviceaccount gkesqlsa
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
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:
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.
No Cloud Shell, clique em Mais () à direita da barra de menus.
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.
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.
Crie um Secret para as credenciais da sua conta de serviço do Google Cloud com o seguinte comando:
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
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: ""
Pressione Ctrl+O e, em seguida, Enter para salvar o arquivo editado.
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.
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.
Implante o aplicativo:
kubectl apply -f sql-proxy.yaml
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
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.
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
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.
Selecione English (United States) e clique em Continue.
Digite um nome de amostra no campo Site Title.
Digite um Username e uma Password para administrar o site.
Digite um endereço de e-mail.
Nenhum desses valores é muito importante nem será necessário.
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.
Volte ao Cloud Shell e se conecte à instância do Cloud SQL:
gcloud sql connect sql-instance
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.
Selecione o banco de dados wordpress:
use wordpress;
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:
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.
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.
Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
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.
No canto superior esquerdo da tela, clique em Começar o laboratório
Usar a navegação anônima
Copie o nome de usuário e a senha fornecidos para o laboratório
Clique em Abrir console no modo anônimo
Fazer login no console
Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
Aceite os termos e pule a página de recursos de recuperação
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.
Architecting with Google Kubernetes Engine: Como usar o Cloud SQL com o Kubernetes Engine
Duração:
Configuração: 8 minutos
·
Tempo de acesso: 60 minutos
·
Tempo para conclusão: 60 minutos