Dans cet atelier, vous allez configurer un déploiement WordPress Kubernetes connecté à Cloud SQL grâce au proxy SQL. Le proxy SQL vous permet d'interagir avec une instance Cloud SQL comme si elle était installée localement (localhost:3306). Même si vous utilisez un port non sécurisé localement, le proxy SQL s'assure que vous êtes sécurisé sur le réseau vers votre instance Cloud SQL.
Pour réaliser cet atelier, vous devez créer plusieurs composants. Tout d'abord, vous devez créer un cluster GKE, puis une instance Cloud SQL à laquelle vous connecter. Vous devez ensuite créer un compte de service pour autoriser vos pods à accéder à l'instance Cloud SQL et configurer Workload Identity pour l'authentifier. Enfin, vous allez déployer WordPress sur votre cluster GKE, avec le proxy SQL en tant que side-car connecté à votre instance Cloud SQL.
Objectifs
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
Créer une instance Cloud SQL et une base de données pour Wordpress
Créer des identifiants et des secrets Kubernetes pour authentifier l'application
Configurer Workload Identity
Configurer un déploiement avec une image Wordpress pour utiliser le proxy SQL
Installer le proxy SQL en tant que conteneur side-car et l'utiliser pour donner au cluster GKE un accès SSL à une instance Cloud SQL externe
Préparation
Accéder à Qwiklabs
Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
Cliquez sur Ouvrir la console Google.
Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Une fois la connexion initiale effectuée, le tableau de bord du projet s'affiche.
Activer Google Cloud Shell
Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.
Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".
Cliquez sur Continuer.
Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :
gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project =
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Se connecter au cluster GKE de l'atelier
Dans Cloud Shell, définissez les variables d'environnement correspondant à la zone Google Cloud et au nom du cluster en saisissant la commande suivante :
Vous devriez voir apparaître sql-instance. Cliquez sur le nom, puis sur le menu Utilisateurs.
Remarque : Le provisionnement de l'instance Cloud SQL prend quelques minutes.
Lorsque l'utilisateur root existant s'affiche, vous pouvez passer à l'étape suivante.
Cliquez sur Ajouter un compte utilisateur pour créer un compte, avec sqluser comme nom d'utilisateur et sqlpassword comme mot de passe.
Laissez l'option Nom d'hôte définie sur Autoriser tous les hôtes (%), puis cliquez sur AJOUTER.
Revenez au menu Présentation, toujours dans votre instance (sql-instance), et copiez le nom de connexion de l'instance.
Vous devrez probablement faire défiler la page vers le bas pour le voir.
Créez une variable d'environnement qui intègre le nom de votre instance Cloud SQL, en saisissant dans l'espace réservé le nom copié à l'étape précédente :
Lorsque vous êtes invité à saisir le mot de passe racine, appuyez sur "Entrée". Le mot de passe SQL racine de l'utilisateur est vide par défaut.
L'invite mysql> s'affiche, indiquant que vous êtes maintenant connecté à l'instance Cloud SQL à l'aide du client MySQL.
Créez la base de données requise pour Wordpress. Par défaut, elle s'appelle wordpress :
create database wordpress;
Sélectionnez la base de données Wordpress :
use wordpress;
Sélectionnez la base de données Wordpress :
show tables;
Le résultat sera vide, car vous n'avez pas encore créé de table.
Quittez le client MySQL :
exit;
Cliquez sur "Vérifier ma progression" pour valider l'objectif.
Créer une instance Cloud SQL
Tâche 4 : Préparer un compte de service disposant des autorisations requises pour accéder à Cloud SQL
Dans la console Google Cloud, accédez à IAM et administration > Comptes de service pour créer un compte de service.
Cliquez sur + Créer un compte de service.
Dans le champ Nom du compte de service, indiquez sql-access, puis cliquez sur Créer et continuer.
Cliquez sur Sélectionner un rôle.
Recherchez Cloud SQL, sélectionnez Client Cloud SQL, puis cliquez sur Continuer.
Cliquez sur OK.
Recherchez le compte de service sql-access, puis cliquez sur l'icône à trois points dans la colonne Actions.
Sélectionnez Gérer les clés.
Cliquez ensuite sur AJOUTER UNE CLÉ, puis sélectionnez Créer une clé.
Assurez-vous de sélectionner JSON comme type de clé, puis cliquez sur CRÉER.
Une paire de clés publique/privée est alors créée et un fichier de clé privée est téléchargé automatiquement sur votre ordinateur. Vous aurez besoin de ce fichier JSON plus tard.
Cliquez sur Fermer pour fermer la boîte de dialogue de notification.
Recherchez le fichier d'identifiants JSON que vous avez téléchargé et renommez-le credentials.json.
Tâche 5 : Créer un compte de service Kubernetes et configurer Workload Identity
Dans Cloud Shell, exécutez la commande suivante pour créer le compte de service Kubernetes :
kubectl create serviceaccount gkesqlsa
Dans Cloud Shell, exécutez la commande suivante pour associer le compte de service Google Cloud au compte de service Kubernetes que vous venez de créer :
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
Dans Cloud Shell, exécutez la commande suivante pour annoter le compte de service Kubernetes avec les détails du compte de service Google Cloud :
Cliquez sur "Vérifier ma progression" pour valider l'objectif.
Créer un compte de service
Tâche 6 : Créer des secrets
Vous allez créer deux secrets Kubernetes : le premier pour fournir les identifiants MySQL et le second pour fournir les identifiants Google (le compte de service).
Pour créer un secret pour vos identifiants MySQL, saisissez la commande suivante dans Cloud Shell :
Si vous avez utilisé un nom d'utilisateur et un mot de passe différents lors de la création des comptes utilisateur Cloud SQL, remplacez-les ici.
Dans Cloud Shell, cliquez sur Plus () tout à droite de la barre de menu de Cloud Shell.
Sélectionnez Importer, gardez l'option Fichier sélectionnée, puis cliquez sur Sélect. fichiers. Importez dans Cloud Shell le fichier d'identifiants credentials.json que vous avez téléchargé au cours de la tâche précédente.
Dans Cloud Shell, déplacez le fichier d'identifiants dans votre répertoire de travail actuel :
mv ~/credentials.json .
Les fichiers importés dans Cloud Shell sont importés dans le répertoire d'accueil de l'utilisateur. Il est plus facile de travailler avec les fichiers du répertoire de travail actuel grâce à kubectl, et cela simplifie l'étape suivante.
Créez un secret pour vos identifiants de compte de service Google Cloud à l'aide de la commande suivante :
Cliquez sur "Vérifier ma progression" pour valider l'objectif.
Créer des secrets
Tâche 7 : Déployer l'agent proxy SQL en tant que conteneur side-car
Vous allez créer un fichier manifeste de déploiement nommé sql-proxy.yaml qui déploie un conteneur d'application Wordpress de démonstration avec l'agent proxy SQL en tant que conteneur side-car.
Dans les paramètres de l'environnement de conteneurs Wordpress, WORDPRESS_DB_HOST est spécifié à l'aide de l'adresse IP de l'hôte local. Le conteneur side-car cloudsql-proxy est configuré pour pointer vers l'instance Cloud SQL que vous avez créée à la tâche précédente. Le nom d'utilisateur et le mot de passe de la base de données sont transmis au conteneur Wordpress en tant que clés secrètes, et Workload Identity est configuré. Un service est également créé pour vous permettre de vous connecter à l'instance Wordpress depuis Internet.
Dans nano, créez et ouvrez un fichier nommé sql-proxy.yaml à l'aide de la commande suivante :
nano sql-proxy.yaml
Une fois nano ouvert, collez la commande suivante dans le fichier 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: ""
Appuyez sur Ctrl+O, puis sur Entrée pour enregistrer les modifications.
Appuyez sur Ctrl+X pour quitter l'éditeur de texte nano.
Voici les sections importantes de ce fichier manifeste :
Le compte de service Kubernetes est configuré dans la section spec.
Dans la section "env" de Wordpress, la variable WORDPRESS_DB_HOST est définie sur 127.0.0.1:3306. Cette action entraîne la connexion au conteneur qui écoute sur le port 3306. Il s'agit du port que le proxy SQL écoute par défaut.
Dans la section env de Wordpress, les variables WORDPRESS_DB_USER et WORDPRESS_DB_PASSWORD sont définies à l'aide des valeurs stockées dans le secret sql-credential que vous avez créé à la tâche précédente.
Dans la section du conteneur cloudsql-proxy, la commande "INSTANCE_CONNECTION_NAME> qui définit le nom de la connexion SQL contient une variable d'espace réservé qui n'est pas configurée à l'aide d'un objet ConfigMap ou d'un secret. Vous devez donc la modifier directement dans cet exemple de fichier manifeste pour qu'elle pointe vers votre instance Cloud SQL.
La section "Service" à la fin crée un équilibreur de charge externe nommé wordpress-service, qui permet d'accéder à l'application depuis des adresses Internet externes.
Exécutez la commande sed pour remplacer la variable de l'espace réservé au nom de la connexion SQL par le nom de votre instance Cloud SQL :
sed -i 's/<INSTANCE_CONNECTION_NAME>/'"${SQL_NAME}"'/g'\
sql-proxy.yaml
Remarque : Dans UNIX, la commande sed signifie éditeur de flux. Elle permet d'exécuter de nombreuses fonctions sur les fichiers (remplacer, insérer ou supprimer, par exemple). Cependant, l'utilisation la plus courante de sed est la substitution. Grâce à cette commande, vous pouvez modifier des fichiers sans même les ouvrir. Cela vous permet de rechercher un élément dans un fichier et de le remplacer bien plus rapidement que s'il vous fallait d'abord ouvrir le fichier dans un éditeur, puis modifier l'élément.
Déployez l'application :
kubectl apply -f sql-proxy.yaml
Interrogez l'état du déploiement :
kubectl get deployment wordpress
Remarque : Répétez cette commande jusqu'à ce qu'une instance soit disponible.
Résultat :
NAME READY UP-TO-DATE AVAILABLE AGE
wordpress 1/1 1 1 45s
Listez les services de votre cluster GKE :
kubectl get services
L'adresse IP externe LoadBalancer pour le service wordpress-service est l'adresse que vous utilisez pour vous connecter à votre blog Wordpress.
Répétez cette commande jusqu'à obtenir une adresse externe comme indiqué ci-dessous :
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
Cliquez sur "Vérifier ma progression" pour valider l'objectif.
Déployer l'agent proxy SQL en tant que conteneur side-car
Tâche 7 : Connectez-vous à l'instance Wordpress
Ouvrez un onglet de navigation et connectez-vous à votre site Wordpress à l'aide de l'adresse IP externe LoadBalancer. L'assistant d'installation de Wordpress se lance alors.
Sélectionnez English (United States) (anglais (États-Unis)), puis cliquez sur Continue (Continuer).
Saisissez un exemple de nom dans le champ Site Title (titre du site).
Saisissez un Username (nom d'utilisateur) et un Password (mot de passe) pour administrer le site.
Saisissez une adresse e-mail.
Aucune de ces valeurs n'est particulièrement importante. Vous n'aurez pas besoin de les utiliser.
Cliquez sur Install Wordpress (Installer Wordpress).
Au bout de quelques secondes, vous verrez le message Success! (Opération réussie !) s'afficher. Notification. Vous pouvez vous connecter si vous souhaitez explorer l'interface d'administration de Wordpress, mais ce n'est pas nécessaire pour l'atelier.
Le processus d'initialisation a créé de nouvelles données et tables de base de données dans la base de données wordpress sur votre instance Cloud SQL. Vous allez à présent vérifier que ces nouvelles tables de base de données ont été créées à l'aide du conteneur proxy SQL.
Revenez à Cloud Shell et connectez-vous à votre instance Cloud SQL :
gcloud sql connect sql-instance
Lorsque vous êtes invité à saisir le mot de passe racine, appuyez sur "Entrée". Le mot de passe SQL racine de l'utilisateur est vide par défaut.
L'invite mysql> s'affiche, indiquant que vous êtes maintenant connecté à l'instance Cloud SQL à l'aide du client MySQL.
Sélectionnez la base de données Wordpress :
use wordpress;
Sélectionnez la base de données Wordpress :
show tables;
Vous verrez apparaître les nouvelles tables de base de données qui ont été créées lorsque Wordpress a été initialisé, prouvant ainsi que le conteneur side-car de proxy SQL a été correctement configuré :
Consultez toutes les entrées de la table des utilisateurs Wordpress :
select * from wp_users;
Cette commande liste l'enregistrement de la base de données pour le compte administrateur Wordpress et affiche l'adresse e-mail que vous avez choisie lors de l'initialisation de Wordpress.
Quittez le client MySQL :
exit;
Terminer l'atelier
Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.
Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.
Le nombre d'étoiles correspond à votre degré de satisfaction :
1 étoile = très insatisfait(e)
2 étoiles = insatisfait(e)
3 étoiles = ni insatisfait(e), ni satisfait(e)
4 étoiles = satisfait(e)
5 étoiles = très satisfait(e)
Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.
Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.
Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.
Ce contenu n'est pas disponible pour le moment
Nous vous préviendrons par e-mail lorsqu'il sera disponible
Parfait !
Nous vous contacterons par e-mail s'il devient disponible
Un atelier à la fois
Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci
Utilisez la navigation privée pour effectuer l'atelier
Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
Architecting with Google Kubernetes Engine : Utiliser Cloud SQL avec Kubernetes Engine
Durée :
8 min de configuration
·
Accessible pendant 60 min
·
Terminé après 60 min