Formation DevOps | Formation kubernetes : 9 - Wordpress pour la création de vos sites et de vos blog !!
Deployer wordpress asur kubernetes
Wordpress est connu pour les sites E-commerce , facile à mettre place pour gérer votre entreprise en ligne .
Ce tutoriel vous montre comment déployer un site WordPress et une base de données MySQL à l’aide de Minikube. Les deux applications utilisent PersistentVolumes et PersistentVolumeClaims pour stocker des données.
Un PersistentVolume (PV) est un élément de stockage dans le cluster qui a été provisionné manuellement par un administrateur ou provisionné dynamiquement par Kubernetes à l’aide d’un StorageClass . Une PersistentVolumeClaim (PVC) est une demande de stockage par un utilisateur qui peut être satisfaite par un PV. PersistentVolumes et PersistentVolumeClaims sont indépendants des cycles de vie des pods et préservent les données en redémarrant, en replanifiant et même en supprimant les pods.
L’exemple présenté sur cette page fonctionne avec la kubectl version 1.27 et supérieure.
git clone git@gitlab.com:Itgalaxy1/k8s-formations/wordpress.git
cd wordpres-correction
ls -l
Créer des PersistentVolumeClaims et des PersistentVolumes
MySQL et Wordpress nécessitent chacun un PersistentVolume pour stocker les données. Leurs PersistentVolumeClaims seront créées lors de l’étape de déploiement.
De nombreux environnements de cluster ont une StorageClass par défaut installée. Lorsqu’un StorageClass n’est pas spécifié dans PersistentVolumeClaim, le StorageClass par défaut du cluster est utilisé à la place.
Lorsqu’un PersistentVolumeClaim est créé, un PersistentVolume est provisionné dynamiquement en fonction de la configuration StorageClass.
example le pv,pvc de mysql :
apiVersion: v1
kind: PersistentVolume
metadata:
name: wordpress-db-claim
labels:
app: wordpress
spec:
storageClassName: standard
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/mnt/data/mysql"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wordpress-db-claim
labels:
app: wordpress
spec:
storageClassName: standard
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
Ajouter des configurations de ressources pour MySQL et WordPress
Le manifeste suivant décrit un déploiement MySQL à instance unique. Le conteneur MySQL monte le PersistentVolume dans /var/lib/mysql.
La MYSQL_ROOT_PASSWORD variable d’environnement définit le mot de passe de la base de données à partir du secret.
il y a un script ./getsecrets.sh permet de mettre à jour les values en base64 un secrets.yaml
#!/bin/bash
clear
echo -n "Nom de la base de donnees : "
read BDD
echo -n "Nom de l'utilisateur : "
read USER
echo -n "Mot de passe MYSQL : "
read PASSWD
sed -i "s/_PASS_/$(echo -n $PASSWD | base64)/" secrets.yml
sed -i "s/_BASE_/$(echo -n $BDD | base64)/" secrets.yml
sed -i "s/_USER_/$(echo -n $USER | base64)/" secrets.yml
cat secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: secrets-conf
type: Opaque
data:
MYSQLDB_PASS: dGVzdA==
MYSQLDB_USER: dGVzdA==
MYSQLDB_BASE: ZGI=
Une remarque le service de mysql est de type headless , ça permet de pointer directement au pod (avoir l’adresse ip du pod) . pour l’utilisation il suffit d’utiliser l’endpoint wordpress-mysql le nom du service comme une variable de WORDPRESS_DB_HOST.
cat mysql-service.yaml
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
labels:
app: wordpress
spec:
ports:
- port: 3306
selector:
app: wordpress
tier: mysql
clusterIP: None
cat wordpress-deploy.yml
apiVersion: apps/v1
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: secrets-conf
key: MYSQLDB_PASS
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: wordpress-persistent-storage
mountPath: /var/www/html
volumes:
- name: wordpress-persistent-storage
persistentVolumeClaim:
claimName: wp-pv-claim
Finalement pour exposer notre wordpress avec un service de type: NodePort
apiVersion: v1
kind: Service
metadata:
name: wordpress
labels:
app: wordpress
spec:
ports:
- port: 80
targetPort: 80
selector:
app: wordpress
tier: frontend
type: NodePort
1. Nous contactez
- Description: Besoin de Formation et des Solutions cloud complètes pour vos applications
- Links:
2. Infra as a Service
- Description: Infrastructure cloud évolutive et sécurisée
- Links:
3. Projets Développeurs
- Description: Découvrez des opportunités passionnantes pour les développeurs
- Links:
4. Développeurs
- Description: Rejoignez notre communauté de développeurs
- Links:
5. Formations Complètes
- Description: Accédez à des formations professionnelles de haute qualité
- Links:
6. Marketplace
- Description: Découvrez notre place de marché de services
- Links:
7. Blogs
- Description: Découvrez nos blogs
- Links:
- comment creer une application mobile ?
- Comment monitorer un site web ?
- Command Checkout in git ?
- Comment git checkout to commit ?
- supprimer une branche git
- dockercoin
- kubernetes c est quoi
- architecture kubernetes
- Installer Gitlab Runner ?
- .gitlab-ci.yml exemples
- CI/CD
- svelte 5 vs solid
- svelte vs lit
- solidjs vs qwik
- alpine vs vue
- Plateform Freelance 2025
- Creation d’un site Web gratuitement
This website is powered by ItGalaxy.io