La mise en place d’un système robuste et efficace de gestion des données est une étape cruciale dans le déploiement d’applications basées sur des conteneurs. Pour en apprendre les tenants et aboutissant, commençons par installer un serveur Postgres dédié à votre environnement de développements.
Dans ce premier article, nous créerons un espace de stockage persistant pour le futur Pod PostgreSQL de notre un cluster Kubernetes. Vous mettrez en œuvre un serveur NFS, et configurerez les nodes du cluster pour y accéder.
Étape 1 : Créer et partager l’espace de stockage persistant
Pour stocker et conserver les données de PostgreSQL nous devons tout d’abord configurer un système de fichiers distribué qui sera utilisé par les différents nœuds du cluster. Pour ce faire, nous allons utiliser un partage NFS (Network File System) sur homelabsrv. Connectez-vous à la console de la machine :
ssh homelabsrv
Premièrement, installez le serveur NFS sur la machine :
sudo apt install nfs-kernel-server
Ensuite, nous allons créer le répertoire pour y stocker les données de Postgres. Dans cet exemple, nous allons utiliser le répertoire /srv/nfs/postgres-dev. Il faut aussi donner les droits d’accès à l’utilisateur/groupe 999, qui sont les ID utilisés par défaut par Postgres :
sudo mkdir -p /srv/nfs/postgres-dev
sudo chown 999:999 /srv/nfs/postgres-dev
Maintenant, vous devez configurer le partage NFS pour qu’il puisse être monté par les différents nœuds du cluster. Ouvrez le fichier /etc/exports avec la commande sudo nano /etc/exports
et ajoutez la ligne suivante :
/srv/nfs/postgres-dev 192.168.56.0/24(rw,sync,no_subtree_check) 192.168.1.101(rw,sync,no_subtree_check)
Pour activer l’export NFS nouvellement créé, exécutez la commande suivante :
sudo exportfs -ra
Configurez le pare-feu pour autoriser les connexions entrantes sur le port 2049, utilisé par NFS, uniquement pour les nœuds K8. Exécutez les commandes suivantes :
sudo iptables -A INPUT -p tcp -s 192.168.56.101 --dport 2049 -j ACCEPT
sudo iptables -A INPUT -p udp -s 192.168.56.101 --dport 2049 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 192.168.56.102 --dport 2049 -j ACCEPT
sudo iptables -A INPUT -p udp -s 192.168.56.102 --dport 2049 -j ACCEPT
Note : il est évidemment possible d’autoriser tout le sous-réseau au lieu d’autoriser chaque IP une par une.
Passons maintenant sur le nœud master du cluster afin d’y exécuter les commandes décrites dans la suite de cet article :
cd ~/kub
vagrant ssh kubmaster
Et vérifions enfin si le partage NFS est accessible :
showmount -e 192.168.1.101
Étape 2 : Configuration du cluster Kubernetes pour accéder au stockage NFS
Dans cette étape, nous allons configurer le cluster en créant un PersistentVolume (PV) et un PersistentVolumeClaim (PVC) pour accéder au stockage NFS partagé sur le cluster Kubernetes.
Un PersistentVolume (PV) est un volume de stockage qui persiste même si le pod qui l’utilise est supprimé ou récupéré. Dans notre cas, nous allons créer un PV de 10 Go qui pointe vers le répertoire /srv/nfs/postgres-dev du serveur NFS.
Créez un nouveau fichier de configuration avec nano postgres-dev-pv.yml
avec le contenu suivant :
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-dev-pv
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 10Gi
nfs:
path: /srv/nfs/postgres-dev
server: 192.168.56.1
Pour accéder à un volume persistant dans Kubernetes il faut configurer un PersistentVolumeClaim (PVC). Dans notre cas, nous allons créer une PVC de 10 Go qui pointe vers notre PV.
Créez un nouveau fichier de configuration avec nano postgres-dev-pvc.yml
avec le contenu suivant :
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-dev-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
Maintenant que nous avons créé les fichiers pour configurer le PV et le PVC, nous devons injecter ces configurations dans le cluster. Nous placerons l’ensemble de la configuration liée à Postgres dans un namespace nommé dev-env :
kubectl create namespace dev-env
kubectl apply -f postgres-dev-pv.yml -n dev-env
kubectl apply -f postgres-dev-pvc.yml -n dev-env
Vous pouvez ensuite vous assurer que les ressources ont correctement été créées avec la commande suivante, où vous devriez voir apparaître les ressources pour notre futur pod Postgres :
kubectl get pv,pvc -n dev-env
La suite : déploiement de Postgres
Rendez-vous sur la prochaine page où nous aborderons la création du déploiement PostgreSQL, ainsi que les bases de résolution de problèmes qui peuvent survenir lors de sa mise en place.
Navigation
Sommaire du dossier : Mise en place de PostgreSQL sur un cluster Kubernetes: Guide étape par étape
Chapitres:
- Configuration d’un Espace de Stockage Persistant pour PostgreSQL sur Kubernetes
- Suivant : Déploiement et Débogage de PostgreSQL dans un Cluster Kubernetes
- Exposer le service PostgreSQL sur votre réseau
- Création d’un service MySQL sur Kuberneter pour votre environnement de développement