Comment Déployer PostgreSQL Sur Kubernetes Helm Chart Ou Manual Config

Introduction

PostgreSQL est un système de base de données relationnelle fiable et robuste avec des transactions conformes à ACID. Il est conçu pour gérer des charges de travail de toutes tailles, ce qui en fait un bon choix pour un usage personnel et des déploiements à grande échelle tels que des entrepôts de données, des serveurs Big Data ou des services Web.

Le déploiement de PostgreSQL sur Kubernetes crée une instance PostgreSQL évolutive et portable, tirant parti des bons côtés du SGBDR et de la plate-forme d’orchestration.

Cet article vous montrera deux méthodes de déploiement de PostgreSQL sur Kubernetes – en utilisant un graphique Helm ou en créant manuellement votre configuration.

Conditions préalables

Déployer PostgreSQL à L’aide De Helm

Helm vous offre un moyen simple et rapide de déployer une instance PostgreSQL sur votre cluster.

Étape 1 : Ajouter Un Référentiel Helm

1. Recherchez dans Artifact Hub un graphique Helm PostgreSQL que vous souhaitez utiliser. Ajoutez le référentiel du graphique à votre installation Helm locale en saisissant :

helm repo ajouter 

Cet article utilise le graphique Bitnami Helm pour l’installation de PostgreSQL.

2. Après avoir ajouté le référentiel, mettez à jour vos référentiels locaux.

mise à jour du référentiel helm

Le système confirme la réussite de la mise à jour.

Étape 2 : Créer Et Appliquer Un Volume De Stockage Persistant

Les données de votre base de données Postgres doivent persister lors des redémarrages de pod.

1. Pour ce faire, créez une ressource PersistentVolume dans un fichier YAML, à l’aide d’un éditeur de texte tel que nano.

nano postgres-pv.yaml

Le contenu du fichier définit :

  • La ressource elle-même.
  • La classe de stockage.
  • La quantité de stockage alloué.
  • Les modes d’accès.
  • Le chemin de montage sur le système hôte.

Cet exemple utilise la configuration suivante :

apiVersion : v1
genre : PersistentVolume
métadonnées :
 nom : postgresql-pv
 Étiquettes:
 genre : locale
spécification :
 storageClassName : manuel
 capacité:
 stockage : 10 Gi
 Modes d'accès :
 - ReadWriteOnce
 hostPath :
 chemin : "/mnt/data"

2. Enregistrez le fichier et quittez. Appliquez ensuite la configuration avec kubectl :

kubectl appliquer -f postgres-pv.yaml

Le système confirme la création du volume persistant.

Étape 3 : Créer Et Appliquer Une Revendication De Volume Persistant

1. Créez une demande de volume persistant (PVC) pour demander le stockage alloué à l’étape précédente.

nano postgres-pvc.yaml

L’exemple utilise la configuration suivante :

apiVersion : v1
genre : PersistentVolumeClaim
métadonnées :
 nom : postgresql-pv-claim
spécification :
 storageClassName : manuel
 Modes d'accès :
 - ReadWriteOnce
 Ressources:
 demandes :
 stockage : 10 Gi

2. Enregistrez le fichier et quittez. Appliquez la configuration avec kubectl :

kubectl appliquer -f postgres-pvc.yaml

Le système confirme la création réussie du PVC.

3. Utilisez kubectl get pour vérifier si le PVC est correctement connecté au PV :

kubectl obtenir pvc

La colonne d’état indique que la revendication est Bound .

Étape 4 : Installer Le Graphique Helm

Installez le graphique helm avec la commande helm install . Ajoutez les indicateurs -set à la commande pour connecter l’installation au PVC que vous avez créé et activer les autorisations de volume :

helm install -set persistence.existingClaim= -set volumePermissions.enabled=true

Le système affiche un rapport une fois l’installation réussie.

Étape 5 : Connectez-vous Au Client PostgreSQL

1. Exportez la variable d’environnement POSTGRES_PASSWORD pour pouvoir vous connecter à l’instance PostgreSQL :

export POSTGRES_PASSWORD=€(kubectl get secret -namespace default psql-test-postgresql -o jsonpath=".data.postgresql-password" | base64 -decode)

2. Ouvrez une autre fenêtre de terminal et saisissez la commande suivante pour rediriger le port Postgres :

kubectl port-forward -namespace default svc/psql-test-postgresql 543
 
Le système commence à gérer la connexion du port.
3. Réduisez la fenêtre de redirection de port et revenez à la précédente. Tapez la commande pour vous connecter à psql, un client PostgreSQL :
PGPASSWORD="€POSTGRES_PASSWORD" psql -host 127.0.0.1 -U postgres -d postgres -p 5432

Remarque : Si vous n'avez pas psql, utilisez apt pour l'installer :
sudo apt installer postgresql-client-12

L' invite de commande psql apparaît et PostgreSQL est prêt à recevoir votre entrée.

Déployer PostgreSQL En Créant Une Configuration à Partir De Zéro


La configuration manuelle de Postgres sur Kubernetes vous permet d'affiner la configuration de votre déploiement.

Étape 1 : Créer Et Appliquer ConfigMap


La ressource ConfigMap contient les données utilisées pendant le processus de déploiement.
1. Créez un fichier ConfigMap YAML dans un éditeur de texte.
nano postgres-configmap.yaml

2. La partie la plus importante du fichier est la section des données, où vous fournissez un nom pour la base de données , le nom d' utilisateur et le mot de passe pour vous connecter à l'instance PostgreSQL.
L'exemple utilise les paramètres suivants dans le fichier ConfigMap.
apiVersion : v1
genre : ConfigMap
métadonnées :
 nom : postgres-config
 Étiquettes:
 application : postgres
Les données:
 POSTGRES_DB : postgresdb
 POSTGRES_USER : administrateur
 POSTGRES_PASSWORD : test123

3. Enregistrez le fichier et quittez. Appliquez ensuite la ressource avec kubectl :
kubectl apply -f postgres-configmap.yaml

Le système confirme la création réussie du fichier de configuration.

Étape 2 : Créer Et Appliquer Un Volume De Stockage Persistant Et Une Revendication De Volume Persistant


1. Créez un fichier YAML pour la configuration du stockage.
nano postgres-stockage.yaml

2. La méthode de déploiement de la charte Helm utilisait deux fichiers distincts pour le volume persistant et la demande de volume persistant, mais vous pouvez également placer les deux configurations dans un seul fichier, comme dans l'exemple ci-dessous.
genre : PersistentVolume
apiVersion : v1
métadonnées :
 nom : postgres-pv-volume
 Étiquettes:
 genre : locale
 application : postgres
spécification :
 storageClassName : manuel
 capacité:
 stockage : 5Gi
 Modes d'accès :
 - ReadWriteMany
 hostPath :
 chemin : "/mnt/data"
--
genre : PersistentVolumeClaim
apiVersion : v1
métadonnées :
 nom : postgres-pv-claim
 Étiquettes:
 application : postgres
spécification :
 storageClassName : manuel
 Modes d'accès :
 - ReadWriteMany
 Ressources:
 demandes :
 stockage : 5Gi

3. Enregistrez le fichier et quittez. Appliquer les ressources avec kubectl :
kubectl apply -f postgres-storage.yaml

Le système confirme la création réussie du PV et du PVC.
4. Vérifiez que le PVC est connecté au PV avec la commande suivante :
kubectl obtenir pvc

Le statut du PVC est Bound et le PVC est prêt à être utilisé dans le déploiement PostgreSQL.

Étape 3 : Créer Et Appliquer Le Déploiement PostgreSQL


1. Créez un fichier YAML de déploiement.
nano postgres-deployment.yaml

2. Le fichier de déploiement contient la configuration du déploiement PostgreSQL et fournit des spécifications pour les conteneurs et les volumes :
apiVersion : applications/v1
genre : Déploiement
métadonnées :
 nom : postgres
spécification :
 répliques : 1
 sélecteur:
 matchLabels :
 application : postgres
 modèle:
 métadonnées :
 Étiquettes:
 application : postgres
 spécification :
 conteneurs :
 - nom : postgres
 image: postgres:10.1
 imagePullPolicy : "Si non présent"
 ports :
 - port conteneur : 5432
 envDe :
 - configMapRef :
 nom : postgres-config
 volumeMount :
 - mountPath : /var/lib/postgresql/data
 nom : postgredb
 tomes :
 - nom : postgredb
 persistantVolumeClaim :
 claimName : postgres-pv-claim

3. Enregistrez le fichier et quittez. Appliquez le déploiement avec kubectl :
kubectl apply -f postgres-deployment.yaml

Le système confirme la création réussie du déploiement.

Étape 4 : Créer Et Appliquer Le Service PostgreSQL


1. Enfin, créez le fichier YAML pour configurer le service PostgreSQL.
nano postgres-service.yaml

2. Spécifiez le type de service et les ports. L'exemple utilise la configuration suivante :
apiVersion : v1
genre: Service
métadonnées :
 nom : postgres
 Étiquettes:
 application : postgres
spécification :
 type : NodePort
 ports :
 - port : 5432
 sélecteur:
 application : postgres

3. Enregistrez le fichier et quittez. Appliquez la configuration avec kubectl :
kubectl appliquer -f postgres-service.yaml

Le système confirme la création réussie du service.
4. Utilisez la commande suivante pour répertorier toutes les ressources du système.
kubectl obtient tout

Le pod et le déploiement affichent l' état 1/1 prêt. Le nombre souhaité de jeux de répliques reflète ce qui est configuré dans le fichier YAML de déploiement.

Étape 5 : Connectez-vous à PostgreSQL


1. Lorsque toutes les ressources sont prêtes, utilisez kubectl exec pour vous connecter à l'instance PostgreSQL.
kubectl exec -it - psql -h localhost -U admin -password -p postgresdb

2. Le système demande le mot de passe. Tapez le mot de passe défini à l'étape 1 et appuyez sur Entrée . L' invite de commande psql apparaît.
La base de données est maintenant prête à recevoir les entrées des utilisateurs.
Remarque : Un moyen simple de déployer un cluster PostgreSQL hautement disponible sur un système nu consiste à utiliser un cluster Kubernetes contrôlé par Rancher.
Conclusion
Après avoir terminé ce didacticiel, vous devez savoir comment déployer PostgreSQL sur Kubernetes en utilisant la méthode manuelle et une charte Helm.
Cet article a-t-il été utile? Oui Non