Créer un serveur PostgreSQL à l’aide des outils Kubernetes
Remarque
En tant que fonctionnalité en préversion, la technologie présentée dans cet article est soumise aux conditions d’utilisation supplémentaires des préversions de Microsoft Azure.
Les dernières mises à jour sont disponibles dans les notes de publication.
Prérequis
Vous devez avoir déjà créé un contrôleur de données.
Pour créer un serveur PostgreSQL à l’aide des outils Kubernetes, vous devez avoir installé les outils Kubernetes. Les exemples de cet article utilisent kubectl
, mais des approches similaires peuvent être utilisées avec d’autres outils Kubernetes tels que le tableau de bord Kubernetes, oc
ou helm
si vous êtes familiarisé avec ces outils et Kubernetes yaml/json.
Vue d’ensemble
Pour créer un serveur PostgreSQL, vous devez créer un secret Kubernetes pour stocker votre connexion d’administrateur postgres et votre mot de passe de manière sécurisée, ainsi qu’une ressource personnalisée de serveur PostgreSQL basée sur les définitions de ressources personnalisées postgresqls
.
Créer un fichier YAML
Vous pouvez utiliser le modèle de fichier yaml comme point de départ pour créer votre propre fichier yaml de serveur PostgreSQL personnalisé. Téléchargez ce fichier sur votre ordinateur local et ouvrez-le dans un éditeur de texte. Il est utile d’utiliser un éditeur de texte tel que VS Code qui prend en charge la mise en surbrillance de la syntaxe et le linting pour les fichiers YAML.
Example de fichier yaml :
apiVersion: v1
data:
username: <your base64 encoded username>
password: <your base64 encoded password>
kind: Secret
metadata:
name: pg1-login-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v1beta3
kind: postgresql
metadata:
name: pg1
spec:
scheduling:
default:
resources:
limits:
cpu: "4"
memory: 4Gi
requests:
cpu: "1"
memory: 2Gi
services:
primary:
type: LoadBalancer # Modify service type based on your Kubernetes environment
storage:
data:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
logs:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
Personnalisation de l’identifiant et du mot de passe.
Une clé secrète Kubernetes est stockée sous la forme d’une chaîne encodée en base64, une pour le nom d’utilisateur et l’autre pour le mot de passe. Vous devez coder en base64 un identifiant et un mot de passe d’administrateur, et les placer à l’emplacement de l’espace réservé à data.password
et data.username
. N’incluez pas les symboles <
et >
fournis dans le modèle.
Vous pouvez utiliser un outil en ligne pour coder en base64 le nom d’utilisateur et le mot de passe souhaités, ou vous pouvez utiliser des outils d’interface de ligne de commande intégrés en fonction de votre plateforme.
PowerShell
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))
#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))
Linux/mac OS
echo -n '<your string to encode here>' | base64
#Example
# echo -n 'example' | base64
Personnalisation du nom
Le modèle a la valeur pg1
pour l’attribut de nom. Vous pouvez le modifier, mais il doit contenir des caractères qui respectent les normes DNS en matière d’attribution de noms. Si vous modifiez le nom, modifiez le nom du secret pour qu’il corresponde. Par exemple, si vous modifiez le nom du serveur PostgreSQL en pg2
, vous devez modifier le nom du secret de pg1-login-secret
à pg2-login-secret
Personnalisation des besoins en ressources
Vous pouvez modifier les besoins en ressources (la RAM, les limites principales et les requêtes) le cas échéant.
Remarque
Vous pouvez en apprendre plus sur la gouvernance des ressources Kubernetes.
Conditions requises pour les requêtes et les limites de ressources :
- La valeur limite des cœurs est obligatoire à des fins de facturation.
- Les autres requêtes et limites de ressources sont facultatives.
- La limite et la requête de cœurs doivent être une valeur entière positive, le cas échéant.
- Un cœur au minimum est nécessaire pour la requête de cœurs, le cas échéant.
- Le format de la valeur de mémoire respecte la notation Kubernetes.
Personnalisation du type de service
Le type de service peut être modifié en NodePort si vous le souhaitez. Un numéro de port aléatoire sera attribué.
Personnalisation du stockage
Vous pouvez personnaliser les classes de stockage en fonction de votre environnement. Si vous n’êtes pas sûr des classes de stockage disponibles, vous pouvez exécuter la commande kubectl get storageclass
pour les afficher. Le modèle a une valeur par défaut de default
. Cela signifie qu’il existe une classe de stockage nommée default
, et non pas qu’une classe de stockage est utilisée par défaut. Vous pouvez également modifier la taille de votre stockage. Vous pouvez en apprendre plus sur la configuration du stockage.
Création du serveur PostgreSQL
Maintenant que vous avez personnalisé le fichier yaml du serveur PostgreSQL, vous pouvez créer le serveur PostgreSQL en exécutant la commande suivante :
kubectl create -n <your target namespace> -f <path to your yaml file>
#Example
#kubectl create -n arc -f C:\arc-data-services\postgres.yaml
Surveillance de l’état de la création
La création du serveur PostgreSQL prendra quelques minutes. Vous pouvez superviser la progression dans une autre fenêtre de terminal avec les commandes suivantes :
Remarque
Les exemples de commandes ci-dessous partent du principe que vous avez créé un serveur PostgreSQL nommé pg1
et un espace de noms Kubernetes nommé arc
. Si vous avez utilisé un autre espace de noms/nom de serveur PostgreSQL, vous pouvez remplacer arc
et pg1
par vos noms.
kubectl get postgresqls/pg1 --namespace arc
kubectl get pods --namespace arc
Vous pouvez également vérifier l’état de la création de n’importe quel pod en exécutant la commande kubectl describe
. La commande describe
est particulièrement pratique pour résoudre les éventuels problèmes. Par exemple :
kubectl describe pod/<pod name> --namespace arc
#Example:
#kubectl describe pod/pg1-0 --namespace arc
Résolution des problèmes de création
Si vous rencontrez des problèmes avec la création, consultez le Guide de résolution des problèmes.