Accéder à sa base de données
Vos bases de données PostgreSQL sont gérées par CloudNativePG (CNPG — voir PostgreSQL managé pour en créer une) et ne sont pas exposées publiquement par défaut. Pour vous y connecter depuis votre poste, vous devez utiliser un port-forward — soit en ligne de commande avec kubectl, soit via l’interface graphique de Freelens.
Prérequis
Section intitulée « Prérequis »Choisir un client au choix parmi ceux ci-dessous pour se connecter à votre environnement Kubernetes :
kubectl, un CLI (ligne de commande) pour interagir avec Kubernetes — guide d’installationFreelens, un IDE (interface graphique) pour interagir avec Kubernetes — guide d’installationk9sun hybride (cli + interface graphique) pour interagir avec Kubernetes guide d’installation
Pour se connecter à votre base de données :
- Votre fichier
kubeconfigconfiguré (variableKUBECONFIGou~/.kube/config) - Un client PostgreSQL :
psql, DBeaver, TablePlus, pgAdmin, DataGrip, etc.
Identifier votre cluster CNPG
Section intitulée « Identifier votre cluster CNPG »Listez les clusters PostgreSQL disponibles dans votre namespace :
kubectl get clusters.postgresql.cnpg.io -n <votre-namespace>Vous obtiendrez une sortie similaire à :
NAME AGE INSTANCES READY STATUS PRIMARYmy-app-database 30d 2 2 Cluster in healthy state my-app-database-1- Ouvrez Freelens et sélectionnez votre cluster dans la barre latérale.
- Naviguez vers Custom Resources dans le menu de gauche.
- Recherchez le groupe
postgresql.cnpg.iopuis cliquez sur Cluster. - Sélectionnez votre namespace dans le filtre en haut de la vue.
Vous verrez la liste de vos clusters CNPG avec leur statut et le nom de l’instance primaire.
Récupérer les identifiants de connexion
Section intitulée « Récupérer les identifiants de connexion »Les identifiants sont stockés dans un Secret Kubernetes généré automatiquement par CNPG. Le nom du secret suit la convention <nom-du-cluster>-app.
Lisez uniquement la clé dont vous avez besoin, plutôt que le secret entier :
# le mot de passekubectl get secret <nom-du-cluster>-app -n <votre-namespace> \ -o jsonpath='{.data.password}' | base64 -d && echo
# ou l'URI de connexion complètekubectl get secret <nom-du-cluster>-app -n <votre-namespace> \ -o jsonpath='{.data.uri}' | base64 -d && echoPour voir les autres champs sans afficher leur valeur :
kubectl get secret <nom-du-cluster>-app -n <votre-namespace> \ -o go-template='{{range $k,$v := .data}}{{$k}}{{"\n"}}{{end}}'- Dans le menu de gauche, naviguez vers Config → Secrets.
- Sélectionnez votre namespace dans le filtre.
- Cliquez sur le secret nommé
<nom-du-cluster>-app. - Les valeurs sont masquées par défaut — cliquez sur l’icône œil à côté de chaque champ pour les révéler.
Vous y trouverez notamment :
| Clé | Description |
|---|---|
host |
Nom du service interne (cluster DNS) |
port |
Port PostgreSQL (généralement 5432) |
dbname |
Nom de la base de données |
username |
Utilisateur applicatif |
password |
Mot de passe |
uri |
URI de connexion complète |
Lancer le port-forward
Section intitulée « Lancer le port-forward »-
Ouvrez un terminal et lancez la commande suivante :
Fenêtre de terminal kubectl port-forward -n <votre-namespace> svc/<nom-du-cluster>-rw 5432:5432Vous devriez voir :
Forwarding from 127.0.0.1:5432 -> 5432Forwarding from [::1]:5432 -> 5432 -
Gardez ce terminal ouvert — le port-forward reste actif tant que la commande tourne.
-
Connectez-vous depuis un autre terminal ou votre client graphique.
-
Dans le menu de gauche, naviguez vers Network → Services.
-
Sélectionnez votre namespace dans le filtre.
-
Repérez le service
<nom-du-cluster>-rwet cliquez dessus. -
Dans le détail du service, cliquez sur le bouton Forward Port (ou faites un clic droit → Forward Port).
-
Configurez le port-forward :
- Port local :
5432(ou15432si le port est déjà utilisé) - Port distant :
5432
- Port local :
-
Cliquez sur Start — un indicateur vert confirme que le tunnel est actif.
Se connecter à la base
Section intitulée « Se connecter à la base »psql -h localhost -p 5432 -U <username> -d <dbname>Le mot de passe vous sera demandé interactivement.
Pour les clients qui acceptent une URI (DBeaver, TablePlus, etc.) :
postgresql://<username>:<password>@localhost:5432/<dbname>Remplissez les champs de connexion comme suit :
| Champ | Valeur |
|---|---|
| Hôte | localhost |
| Port | 5432 (ou le port local choisi) |
| Base de données | La valeur dbname du secret |
| Utilisateur | La valeur username du secret |
| Mot de passe | La valeur password du secret |
| SSL | Désactivé (le tunnel est local) |
Connexion en lecture seule (réplica)
Section intitulée « Connexion en lecture seule (réplica) »Pour vous connecter à un réplica en lecture seule (utile pour des requêtes lourdes sans impacter la production), il suffit de cibler le service -ro au lieu de -rw :
kubectl port-forward -n <votre-namespace> svc/<nom-du-cluster>-ro 5432:5432Suivez la même procédure que pour le port-forward principal, mais sélectionnez le service <nom-du-cluster>-ro au lieu de <nom-du-cluster>-rw.
Résolution de problèmes
Section intitulée « Résolution de problèmes »Le port-forward se coupe régulièrement
Section intitulée « Le port-forward se coupe régulièrement »C’est un comportement normal lors de périodes d’inactivité. Relancez simplement le port-forward. Freelens gère automatiquement la reconnexion dans la plupart des cas ; avec kubectl, vous pouvez utiliser un wrapper comme kubefwd pour les reconnexions automatiques.
error: unable to forward port because pod is not running
Section intitulée « error: unable to forward port because pod is not running »Vérifiez l’état de votre cluster CNPG :
kubectl get pods -n <votre-namespace> -l cnpg.io/cluster=<nom-du-cluster>Si les pods ne sont pas en état Running, consultez les événements :
kubectl describe cluster <nom-du-cluster> -n <votre-namespace>- Naviguez vers Workloads → Pods.
- Filtrez par votre namespace et recherchez les pods dont le nom commence par
<nom-du-cluster>. - Vérifiez que leur statut est Running. Si ce n’est pas le cas, cliquez sur un pod pour consulter les Events en bas de la page de détail.
connection refused sur localhost
Section intitulée « connection refused sur localhost »Assurez-vous que le port-forward est toujours actif — vérifiez votre terminal (kubectl) ou la barre de statut en bas de Freelens.