WordPress est l'un des systèmes de gestion de contenu les plus populaires utilisés pour déployer des blogs et des sites web sur Internet. Il est également disponible sous la forme d'une image Docker sur le registre DockerHub . Vous pouvez utiliser cette image Docker pour créer une plateforme de site web fiable et évolutive sur le cluster Kubernetes . Le déploiement de WordPress sur Kubernetes vous aidera à implémenter un pipeline CI/CD et réduira le temps nécessaire pour publier de nouvelles mises à jour. Vous pouvez également activer la mise à l'échelle horizontale du site web WordPress pour gérer les pics de trafic.
Ce guide vous montrera comment déployer WordPress et MySQL avec un Volume Persistant sur le cluster Kubernetes.
Prérequis
- Une compréhension de base de Kubernetes (k8s) et de ses objets. Reportez-vous à ce guide pour un aperçu détaillé de l'écosystème Kubernetes.
- Un cluster Kubernetes est opérationnel. Suivez ce tutoriel pour installer le cluster Kubernetes sur Ubuntu 20.04.
Vérifier le cluster Kubernetes
Avant de commencer, il est recommandé de vérifier l'état du cluster Kubernetes. Vous pouvez utiliser la commande kubectl pour vérifier Kubernetes.
|
1 |
kubectl get nodes |
Si tout va bien, vous devriez obtenir la sortie suivante.

Créer un Secret pour MySQL
Un Secret est un objet qui vous permet de stocker des données sensibles comme un mot de passe ou une clé. Dans cet article, nous utiliserons un Secret pour stocker le mot de passe MySQL.
Tout d'abord, créez un mot de passe encodé en base64 à l'aide de la commande suivante.
|
1 |
echo -n 'your_secure_password' | base64 |
Vous obtiendrez votre mot de passe secret dans la sortie suivante.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Ensuite, créez un fichier secret.yaml pour MySQL et WordPress.
|
1 |
nano secret.yaml |
Ajoutez la configuration suivante.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Enregistrez et fermez le fichier. Ensuite, appliquez la configuration ci-dessus au cluster Kubernetes à l'aide de la commande suivante.
|
1 |
kubectl apply -f secret.yaml |
Vous obtiendrez la sortie suivante.
|
1 |
secret/mysql-pass créé |
Créer un PersistentVolume pour MySQL et WordPress
Vous devrez également créer un PersistentVolume pour stocker les données de MySQL et WordPress.
Créons un fichier pvc-mysql-wp.yaml .
|
1 |
nano pvc-mysql-wp.yaml |
Ajoutez les configurations suivantes.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi |
Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, créez des PersistentVolumes pour MySQL et WordPress sur le cluster Kubernetes à l'aide de la commande suivante.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
Vous devriez voir les deux PersistentVolumes dans la sortie suivante.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim créé persistentvolumeclaim/wp-pv-claim créé |
Vous pouvez maintenant vérifier les deux PersistentVolumes à l'aide de la commande suivante.
|
1 |
kubectl get pv |
Vous devriez voir la sortie suivante.
|
1 2 3 |
NOM CAPACITÉ MODES D'ACCÈS POLITIQUE DE RÉCUPÉRATION STATUT DEMANDE CLASSE DE STOCKAGE RAISON ÂGE pvc-873a458352594103 40Gi RWO Delete Bound default/wp-pv-claim votre-bloc-stockage 3s pvc-de7d7de5e53a40e8 40Gi RWO Delete Bound default/mysql-pv-claim votre-bloc-stockage 3s |
Créer un déploiement MySQL
Ensuite, créez un fichier de configuration de déploiement MySQL pour télécharger l'image Docker MySQL, créer un conteneur et monter le PersistentVolume sur /var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
Ajoutez la configuration suivante.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-mysql labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: mysql strategy: type: Recreate template: metadata: labels: app: wordpress tier: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim |
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, déployez la configuration ci-dessus sur le cluster Kubernetes.
|
1 |
kubectl apply -f mysql-deployment.yaml |
Vous devriez voir la sortie suivante.

Vous pouvez vérifier le déploiement de MySQL à l'aide de la commande suivante.
|
1 |
kubectl get deployments |
Vous devriez voir l'état du déploiement de MySQL dans la sortie suivante.

Créer le déploiement WordPress
Maintenant, créez un fichier de configuration de déploiement WordPress pour télécharger l'image WordPress, créer un conteneur et monter le PersistentVolume sur /var/www/html pour les fichiers de données du site web. Ce fichier crée également les WORDPRESS_DB_HOST et WORDPRESS_DB_PASSWORD variables d'environnement pour accéder à la base de données.
|
1 |
nano wordpress-deployment.yaml |
Ajoutez la configuration suivante.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer --- apiVersion: apps/v1 # pour les versions antérieures à 1.9.0, utilisez apps/v1beta2 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim |
Enregistrez le fichier une fois terminé. Ensuite, appliquez la configuration ci-dessus au cluster Kubernetes à l'aide de la commande suivante.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
Vous devriez voir un message de déploiement réussi dans la sortie suivante.
|
1 2 |
service/wordpress created deployment.apps/wordpress created |
Pour vérifier le déploiement de WordPress, exécutez la commande suivante.
|
1 |
kubectl get deployments |
Vous devriez voir le statut du déploiement de WordPress dans la sortie suivante.

Accéder à l'interface web de WordPress
Pour accéder au tableau de bord WordPress, vous aurez besoin de l'adresse IP externe et du numéro de port du LoadBalancer. Vous pouvez récupérer ces informations à l'aide de la commande suivante.
|
1 |
kubectl get svc |
Vous obtiendrez l'IP et le port du LoadBalancer dans la sortie suivante.
|
1 2 3 4 |
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 29m wordpress LoadBalancer 10.100.80.70 78.141.194.181 80:31624/TCP 3m6s wordpress-mysql ClusterIP None <none> 3306/TCP 4m14s |
Pour obtenir des informations détaillées sur vos pods WordPress, exécutez la commande suivante.
|
1 |
kubectl describe svc wordpress |
Vous devriez obtenir des informations détaillées sur WordPress dans la sortie suivante.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Name: wordpress Namespace: default Labels: app=wordpress Annotations: <none> Selector: app=wordpress,tier=frontend Type: LoadBalancer IP Family Policy: SingleStack IP Families: IPv4 IP: 10.100.80.70 IPs: 10.100.80.70 LoadBalancer Ingress: 78.141.194.181 Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 31624/TCP Endpoints: 10.244.23.66:80 Session Affinity: None External Traffic Policy: Cluster |
Maintenant, ouvrez votre navigateur web et accédez à la page d'installation de WordPress en utilisant l'URL http://78.141.194.181:3162. Vous devriez voir la page d'installation de WordPress sur l'écran suivant.

Sélectionnez votre langue et suivez les étapes requises pour terminer le processus d'installation.
Conclusion
Dans cet article, nous avons expliqué comment déployer MySQL et WordPress avec le volume persistant sur le cluster Kubernetes. Vous pouvez également mettre à l'échelle votre déploiement WordPress en fonction du trafic de votre site web. Vous pouvez désormais utiliser le déploiement ci-dessus en fonction de vos besoins de développement.
De plus, jetez un œil à nos autres tutoriels consacrés à Docker et Kubernetes que vous pouvez trouver sur notre blog :
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.