Vous venez d'integrer l'équipe DevOps de Le Cloud Facile et votre premiére mission est de déployer la plateforme sur kubernetes.
Votre superieur veut que vous lui présenter un PoC (Proof of Concept) du projet.
Pour valider le PoC, vous devez partager les fichiers yaml sur un repo git et le partager avec le compte github mmkmou.
- Créer un secret pour stocker le mot de passe
- Créer un secret nommé
db-passwordavec les informations keys/values suivantes :
password: Azerty@12Le secret doit être stocké sur un fichier nommé db-password.yaml
- Créer un configmap pour stocker les informations de la base de donnée
- Créer un configmap nommé
db-informationavec les informations keys/values suivantes :
dbname: wordpress
user: wordpressLe configmap doit être stocké sur un fichier nommé db-information.yaml
- Créer le stockage pour la base de donnée mysql et l'application wordpress
- créer un PVC nommé
pvc-wordpressavec les informations suivantes :
accessModes: ReadWriteOnce
storage: 10GiLe PVC doit être dans un fichier yaml avec le nom pvc-wordpress.yaml
- Créer un autre PVC nommé
pvc-mysqlavec les informations suivantes :
accessModes: ReadWriteOnce
storage: 10GiLe PVC doit être dans un fichier yaml avec le nom pvc-mysql.yaml
Pas besoin de créer un PV sur minikube il sera créé automatiquement
- Créer le deployment
mysqlcontenu dan un fichier du même nommysql.yaml
- Vous pouvez vous baser sur le format suivant
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: database
image: mysql:5.7
ports:
- containerPort: 3306-
Vous devez ajouter la variable d'environnement suivante :
-
MYSQL_ROOT_PASSWORDqui correspond au secretpassword
-
Vous devez aussi monter le volume
pvc-mysqlcréé précédemment sur/var/lib/mysql
-
Créer un service de type ClusterIP nommé
mysql-svcpour permettre l'exposition du déploiementmysql. Le fichieryamldoit être nommé mysql-svc.yaml -
Executer le yaml suivant pour créer un pod phpmyadmin et l'exposer pour accéder à la base de donnnée
mysql
apiVersion: v1
kind: Pod
metadata:
labels:
run: phpmyadmin
name: phpmyadmin
spec:
containers:
- image: phpmyadmin
name: phpmyadmin
env:
- name: PMA_HOST
value: mysql-svc
---
apiVersion: v1
kind: Service
metadata:
labels:
run: phpmyadmin
name: phpmyadmin
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: phpmyadmin
type: NodePortSi vous êtes sur minikube vous devez executer la commande suivante :
minikube service phpmyadmin
- Créer maintenant le déploiement nommé
wordpressavec un fichier du même nom contenant les informations suivantes :
replicas: 3
image: wordpress:6.5.3-php8.3-fpm-alpine
volumeMount: /var/www/html
initContainers:
- image: busybox
- Command: ['sh', '-c', "until nslookup mysql-svc.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo en attente de mysql-svc; sleep 2; done"]
env:
- WORDPRESS_DB_HOST: nom du service mysql
- WORDPRESS_DB_PASSWORD: le mot de passe depuis le secret
- WORDPRESS_DB_USER: le user depuis le config map
- WORDPRESS_DB_NAME: la base de donnée depuis le config map- Exposer le deploiement wordpress via NodePort ou LoadBalancer
Eureka
