In questo lab configurerai un deployment Kubernetes di WordPress connesso a Cloud SQL tramite il proxy SQL. Il proxy SQL ti consente di interagire con un'istanza Cloud SQL come se fosse installata localmente (localhost:3306) e, anche se la porta locale non è protetta, garantisce la sicurezza lungo il collegamento all'istanza Cloud SQL.
Per completare il lab creerai diversi componenti. Innanzitutto, creerai un cluster GKE, quindi un'istanza Cloud SQL a cui connetterti e un service account per autorizzare i tuoi pod ad accedere all'istanza Cloud SQL. L'autenticazione verrà effettuata utilizzando Workload Identity. Infine, eseguirai il deployment di WordPress sul tuo cluster GKE, con il proxy SQL come sidecar, connesso alla tua istanza Cloud SQL.
Obiettivi
In questo lab imparerai a:
Creare un'istanza e un database Cloud SQL per Wordpress.
Creare credenziali e Secret di Kubernetes per l'autenticazione delle applicazioni.
Configurare Workload Identity.
Configurare un deployment con un'immagine Wordpress per utilizzare il proxy SQL.
Installare il proxy SQL come container sidecar e utilizzarlo per fornire l'accesso SSL a un'istanza Cloud SQL esterna al cluster GKE.
Configurazione del lab
Accedi a Qwiklabs
Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.
Accedi a Qwiklabs utilizzando una finestra di navigazione in incognito.
Tieni presente la durata dell'accesso al lab (ad esempio, 1:15:00) e assicurati di finire entro quell'intervallo di tempo.
Non è disponibile una funzionalità di pausa. Se necessario, puoi riavviare il lab ma dovrai ricominciare dall'inizio.
Quando è tutto pronto, fai clic su Inizia lab.
Annota le tue credenziali del lab (Nome utente e Password). Le userai per accedere a Google Cloud Console.
Fai clic su Apri console Google.
Fai clic su Utilizza un altro account e copia/incolla le credenziali per questo lab nei prompt.
Se utilizzi altre credenziali, compariranno errori oppure ti verranno addebitati dei costi.
Accetta i termini e salta la pagina di ripristino delle risorse.
Una volta completati i passaggi di accesso iniziali, viene visualizzata la dashboard del progetto.
Attiva Google Cloud Shell
Google Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud.
Google Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
Nella barra degli strumenti in alto a destra della console Cloud, fai clic sul pulsante Apri Cloud Shell.
Fai clic su Continua.
Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. Ad esempio:
gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento.
Puoi visualizzare il nome dell'account attivo con questo comando:
Dovresti vedere sql-instance nell'elenco, fai clic sul nome e quindi sul menu Utenti.
Nota: devi attendere alcuni minuti per il completamento del provisioning dell'istanza Cloud SQL.
Quando viene visualizzato l'utente root esistente, puoi andare al passaggio successivo.
Fai clic su Aggiungi account utente e crea un account, utilizzando sqluser come nome utente e sqlpassword come password.
Lascia l'opzione Nome host impostata su Consenti qualsiasi host (%) e fai clic su AGGIUNGI.
Torna al menu Panoramica, sempre nella tua istanza (sql-instance), e copia il nome della connessione all'istanza.
Probabilmente dovrai scorrere verso il basso per visualizzarlo.
Crea una variabile di ambiente in cui inserire il nome dell'istanza Cloud SQL, sostituendo il segnaposto con il nome che hai copiato nel passaggio precedente:
Quando ti viene chiesto di inserire la password root, premi Invio. La password dell'utente root SQL è vuota per impostazione predefinita.
Viene visualizzato il prompt mysql>, che indica la connessione all'istanza Cloud SQL tramite il client MySQL.
Crea il database richiesto per Wordpress. Per impostazione predefinita, viene denominato wordpress:
create database wordpress;
Seleziona il database wordpress:
use wordpress;
Seleziona il database wordpress:
show tables;
Verrà segnalato un set vuoto poiché non hai ancora creato alcuna tabella.
Esci dal client MySQL:
exit;
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Crea un'istanza Cloud SQL
Attività 4: prepara un service account con autorizzazione per l'accesso a Cloud SQL
Per creare un service account, nella console Google Cloud vai a IAM e amministrazione > Account di servizio.
Fai clic su + Crea account di servizio.
Specifica il Nome account di servizio come sql-access, quindi fai clic su Crea e continua.
Fai clic su Seleziona un ruolo.
Cerca Cloud SQL, seleziona Client Cloud SQL e fai clic su Continua.
Fai clic su Fine.
Individua il service account sql-access e fai clic sull'icona con i tre puntini nella colonna Azioni.
Seleziona Gestisci chiavi.
A questo punto, fai clic su AGGIUNGI CHIAVE e seleziona Crea nuova chiave.
Assicurati che sia selezionato il tipo di chiave JSON e fai clic su CREA.
Verrà creata una coppia di chiavi pubblica/privata e il file della chiave privata verrà scaricato automaticamente sul computer. Questo file JSON ti servirà in un secondo momento.
Fai clic su Chiudi per chiudere la finestra di dialogo delle notifiche.
Individua il file delle credenziali JSON scaricato e rinominalo in credentials.json.
Attività 5: crea un service account Kubernetes e configura Workload Identity
In Cloud Shell, esegui questo comando per creare il service account Kubernetes:
kubectl create serviceaccount gkesqlsa
In Cloud Shell, esegui questo comando per associare il service account Google Cloud al service account Kubernetes appena creato:
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
In Cloud Shell, esegui questo comando per annotare i dettagli del service account Google Cloud sul service account Kubernetes:
Se hai utilizzato un nome utente e una password diversi durante la creazione degli account utente Cloud SQL, sostituiscili qui.
In Cloud Shell, fai clic su Altro () all'estrema destra della barra dei menu di Cloud Shell.
Seleziona Carica, lascia selezionato File e fai clic su Scegli file, quindi carica in Cloud Shell il file delle credenziali credentials.json che hai scaricato nell'attività precedente.
In Cloud Shell, sposta il file delle credenziali nella directory di lavoro attuale:
mv ~/credentials.json .
I file caricati in Cloud Shell vengono caricati nella home directory dell'utente. Con kubectl è più facile lavorare con i file nella directory di lavoro attuale, quindi spostare il file semplifica il passaggio successivo.
Crea un Secret per le credenziali del tuo service account Google Cloud utilizzando il seguente comando:
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Crea i Secret
Attività 7: esegui il deployment dell'agente proxy SQL come container sidecar
Creiamo un file manifest di deployment denominato sql-proxy.yaml che esegue il deployment di un container dell'applicazione demo Wordpress con l'agente proxy SQL come container sidecar.
Nelle impostazioni dell'ambiente del container Wordpress, WORDPRESS_DB_HOST viene specificato utilizzando l'indirizzo IP localhost. Il container sidecar cloudsql-proxy è configurato in modo da puntare all'istanza Cloud SQL che hai creato nell'attività precedente. Il nome utente e la password del database vengono passati al container Wordpress come chiavi dei secret e Workload Identity viene configurato. Viene creato anche un Service per consentirti di connetterti all'istanza Wordpress da internet.
Crea e apri un file denominato sql-proxy.yaml con nano utilizzando questo comando:
nano sql-proxy.yaml
Una volta aperto nano, incolla questo codice nel file 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: ""
Premi Ctrl+O e poi Invio per salvare il file modificato.
Premi Ctrl+X per uscire dall'editor di testo nano.
Le sezioni importanti da prendere in considerazione in questo manifest sono:
Nella sezione spec viene configurato il service account Kubernetes.
Nella sezione env di Wordpress, la variabile WORDPRESS_DB_HOST è impostata su 127.0.0.1:3306. Eseguirà il collegamento a un container nello stesso pod in ascolto sulla porta 3306. Questa è la porta su cui il proxy SQL rimane in ascolto per impostazione predefinita.
Nella sezione env di Wordpress, le variabili WORDPRESS_DB_USER e WORDPRESS_DB_PASSWORD sono impostate utilizzando i valori memorizzati nel Secret sql-credential creato nell'ultima attività.
Nella sezione del container cloudsql-proxy l'opzione di comando che definisce il nome della connessione SQL, "INSTANCE_CONNECTION_NAME>, contiene una variabile segnaposto non configurata utilizzando un ConfigMap o un Secret e che quindi deve essere aggiornata direttamente in questo manifest di esempio per puntare alla tua istanza Cloud SQL.
La sezione Service alla fine crea un LoadBalancer esterno denominato "wordpress-service" che rende l'applicazione accessibile da indirizzi internet esterni.
Utilizza sed per aggiornare la variabile segnaposto del nome della connessione SQL con il nome istanza della tua istanza Cloud SQL.
sed -i 's/<INSTANCE_CONNECTION_NAME>/'"${SQL_NAME}"'/g'\
sql-proxy.yaml
Nota: il comando sed in UNIX è l'acronimo di stream editor e consente di eseguire molte funzioni sui file, come la sostituzione, l'inserimento o l'eliminazione. L'uso più comune di sed è per operazioni di sostituzione. Con sed puoi modificare i file anche senza aprirli: un metodo molto più veloce per trovare e sostituire elementi nel file rispetto alla sua apertura in un editor e alla successiva modifica.
Esegui il deployment dell'applicazione:
kubectl apply -f sql-proxy.yaml
Esegui una query sullo stato del deployment:
kubectl get deployment wordpress
Nota: dovrai ripetere questo comando fino a vedere un'istanza disponibile.
Output:
NAME READY UP-TO-DATE AVAILABLE AGE
wordpress 1/1 1 1 45s
Elenca i servizi nel tuo cluster GKE:
kubectl get services
L'indirizzo IP esterno del LoadBalancer per wordpress-service è l'indirizzo che utilizzi per connetterti al tuo blog Wordpress.
Ripeti il comando finché non viene restituito un indirizzo esterno, come mostrato qui.
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
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Esegui il deployment dell'agente proxy SQL come container sidecar
Attività 7: connettiti alla tua istanza Wordpress
Apri una nuova scheda del browser e collegati al tuo sito Wordpress utilizzando l'indirizzo IP esterno di LoadBalancer. Verrà avviata la procedura guidata di installazione iniziale di Wordpress.
Seleziona English (United States) e fai clic su Continue.
Inserisci un nome di esempio in Site Title.
Inserisci un Username e Password per amministrare il sito.
Inserisci un indirizzo email.
Nessuno di questi valori è particolarmente importante: non avrai bisogno di utilizzarli.
Fai clic su Install Wordpress.
Dopo qualche secondo verrà visualizzata la notifica Success! . Puoi accedere se vuoi esplorare l'interfaccia di amministrazione di Wordpress, ma non è necessario per il lab.
Il processo di inizializzazione ha creato nuove tabelle di database e dati nel database wordpress nella tua istanza Cloud SQL. Ora convaliderai la creazione di queste nuove tabelle di database con il container proxy SQL.
Torna a Cloud Shell e connettiti alla tua istanza Cloud SQL:
gcloud sql connect sql-instance
Quando ti viene chiesto di inserire la password root, premi Invio. La password dell'utente root SQL è vuota per impostazione predefinita.
Viene visualizzato il prompt mysql>, che indica la connessione all'istanza Cloud SQL tramite il client MySQL.
Seleziona il database wordpress:
use wordpress;
Seleziona il database wordpress:
show tables;
Ora verrà visualizzata una serie di nuove tabelle di database create durante l'inizializzazione di Wordpress, a dimostrazione del fatto che il container proxy SQL sidecar è stato configurato correttamente:
Elenca tutte le voci della tabella utenti di Wordpress:
select * from wp_users;
Verrà visualizzato il record del database per l'account amministratore di Wordpress, con l'indirizzo email che hai scelto durante l'inizializzazione di Wordpress.
Esci dal client MySQL:
exit;
Termina il lab
Una volta completato il lab, fai clic su Termina lab. Google Cloud Skills Boost rimuove le risorse che hai utilizzato ed esegue la pulizia dell'account.
Avrai la possibilità di inserire una valutazione in merito alla tua esperienza. Seleziona il numero di stelle applicabile, inserisci un commento, quindi fai clic su Invia.
Il numero di stelle corrisponde alle seguenti valutazioni:
1 stella = molto insoddisfatto
2 stelle = insoddisfatto
3 stelle = esperienza neutra
4 stelle = soddisfatto
5 stelle = molto soddisfatto
Se non vuoi lasciare un feedback, chiudi la finestra di dialogo.
Per feedback, suggerimenti o correzioni, utilizza la scheda Assistenza.
Copyright 2020 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.
I lab creano un progetto e risorse Google Cloud per un periodo di tempo prestabilito
I lab hanno un limite di tempo e non possono essere messi in pausa. Se termini il lab, dovrai ricominciare dall'inizio.
In alto a sinistra dello schermo, fai clic su Inizia il lab per iniziare
Utilizza la navigazione privata
Copia il nome utente e la password forniti per il lab
Fai clic su Apri console in modalità privata
Accedi alla console
Accedi utilizzando le tue credenziali del lab. L'utilizzo di altre credenziali potrebbe causare errori oppure l'addebito di costi.
Accetta i termini e salta la pagina di ripristino delle risorse
Non fare clic su Termina lab a meno che tu non abbia terminato il lab o non voglia riavviarlo, perché il tuo lavoro verrà eliminato e il progetto verrà rimosso
Questi contenuti non sono al momento disponibili
Ti invieremo una notifica via email quando sarà disponibile
Bene.
Ti contatteremo via email non appena sarà disponibile
Un lab alla volta
Conferma per terminare tutti i lab esistenti e iniziare questo
Utilizza la navigazione privata per eseguire il lab
Utilizza una finestra del browser in incognito o privata per eseguire questo lab. In questo modo eviterai eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
Architecting with Google Kubernetes Engine: Using Cloud SQL with Kubernetes Engine
Durata:
Configurazione in 8 m
·
Accesso da 60 m
·
Completamento in 60 m