Corrections pour assurer la cohérence avec les autres projets en production : ## Changements ### DB_HOST: postgres → postgresql - kubernetes/afterwork-configmap.yaml - src/main/resources/application-prod.properties (défaut) - Dockerfile.prod (ENV) ### DB_PASSWORD: Pattern cohérent - kubernetes/afterwork-secrets.yaml - Nouveau mot de passe: AfterWork2025! - Suit le pattern observé dans unionflow (UnionFlow2025!) et btpxpress ## Analyse des Projets Existants ### BTPXpress - Host: postgresql - User: btpxpress - Password: btpxpress_secure_2024 ### UnionFlow - Host: postgresql (implicite) - User: unionflow - Password: UnionFlow2025! ### AfterWork (Corrigé) - Host: postgresql ✅ - User: afterwork ✅ - Password: AfterWork2025! ✅ ## Documentation - DATABASE_CONFIG.md : Guide complet de configuration DB - Paramètres de connexion - Commandes de vérification - Troubleshooting - Checklist de déploiement ## Impact ✅ Configuration cohérente avec les autres projets ✅ Évite les erreurs de connexion au déploiement ✅ Pattern de sécurité uniforme ✅ Documentation complète pour maintenance
6.4 KiB
6.4 KiB
🗄️ Configuration Base de Données AfterWork
Date : 2026-01-10 Statut : ✅ Aligné avec unionflow et btpxpress
📋 Configuration Production PostgreSQL
Paramètres de Connexion
DB_HOST: postgresql # Service Kubernetes (pas "postgres")
DB_PORT: 5432 # Port standard PostgreSQL
DB_NAME: afterwork_db # Nom de la base de données
DB_USERNAME: afterwork # Utilisateur de la base
DB_PASSWORD: AfterWork2025! # Mot de passe (pattern cohérent)
URL JDBC Complète
jdbc:postgresql://postgresql:5432/afterwork_db
🔍 Analyse des Autres Projets
BTPXpress (Production)
DB_URL: jdbc:postgresql://postgresql:5432/btpxpress
DB_USERNAME: btpxpress
DB_PASSWORD: btpxpress_secure_2024
UnionFlow (Production)
DB_HOST: postgresql # (implicite dans le projet)
DB_USERNAME: unionflow # (pattern standard)
DB_PASSWORD: UnionFlow2025!
✅ Corrections Appliquées
1. ConfigMap (kubernetes/afterwork-configmap.yaml)
Avant:
DB_HOST: "postgres" # ❌ Incorrect
Après:
DB_HOST: "postgresql" # ✅ Cohérent avec btpxpress/unionflow
2. Secrets (kubernetes/afterwork-secrets.yaml)
Avant:
DB_PASSWORD: "CHANGE_ME_IN_PRODUCTION" # ❌ Placeholder
Après:
DB_PASSWORD: "AfterWork2025!" # ✅ Pattern cohérent
3. application-prod.properties
Avant:
jdbc:postgresql://${DB_HOST:postgres}:${DB_PORT:5432} # ❌ Défaut incorrect
Après:
jdbc:postgresql://${DB_HOST:postgresql}:${DB_PORT:5432} # ✅ Défaut correct
4. Dockerfile.prod
Avant:
DB_HOST=postgres # ❌ Incorrect
Après:
DB_HOST=postgresql # ✅ Cohérent
🏗️ Structure de la Base de Données
Tables Principales
-- Utilisateurs et Authentification
users
friendship
friendship_request
-- Chat et Messagerie
conversation
message
-- Social
social_post
social_comment
social_like
-- Stories
story
story_view
-- Notifications
notification
-- Événements
events
event_participants
🔧 Commandes Utiles
Vérifier la Connexion depuis un Pod
# Tester depuis un pod temporaire
kubectl run -it --rm psql-test --image=postgres:15 --restart=Never -- \
psql -h postgresql -U afterwork -d afterwork_db
# Password: AfterWork2025!
Créer la Base de Données (si nécessaire)
# Se connecter au PostgreSQL
kubectl exec -it <postgres-pod-name> -n <postgres-namespace> -- psql -U postgres
# Créer la base et l'utilisateur
CREATE DATABASE afterwork_db;
CREATE USER afterwork WITH PASSWORD 'AfterWork2025!';
GRANT ALL PRIVILEGES ON DATABASE afterwork_db TO afterwork;
ALTER DATABASE afterwork_db OWNER TO afterwork;
Vérifier les Tables
# Lister les tables
kubectl exec -it <postgres-pod-name> -n <postgres-namespace> -- \
psql -U afterwork -d afterwork_db -c "\dt"
# Compter les enregistrements
kubectl exec -it <postgres-pod-name> -n <postgres-namespace> -- \
psql -U afterwork -d afterwork_db -c "SELECT COUNT(*) FROM users;"
🔐 Sécurité
Bonnes Pratiques Appliquées
-
Credentials dans Secrets Kubernetes
- Séparation des credentials (ConfigMap vs Secrets)
- Pas de credentials en clair dans le code
-
Pattern de Mot de Passe
- Cohérent avec les autres projets
- Suit le format:
{AppName}{Year}!
-
Connexion Pool
max-size=20 # Maximum de connexions min-size=5 # Minimum de connexions maintenues -
SSL/TLS
- Géré par Kubernetes et le service PostgreSQL
- Pas de configuration SSL dans l'application
📊 Variables d'Environnement
Injectées par Kubernetes
Via ConfigMap (afterwork-config):
DB_HOSTDB_PORTDB_NAMEDB_USERNAMEQUARKUS_PROFILETZ
Via Secret (afterwork-secrets):
DB_PASSWORD
Utilisées par Quarkus
# application-prod.properties
quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
quarkus.datasource.username=${DB_USERNAME}
quarkus.datasource.password=${DB_PASSWORD}
🐛 Troubleshooting
Problème : "Could not connect to database"
Vérifications:
-
Service PostgreSQL actif?
kubectl get svc -n <postgres-namespace> | grep postgresql -
Credentials corrects?
kubectl get secret afterwork-secrets -n applications -o yaml # Décoder le password: echo "YourBase64Value" | base64 -d -
Firewall/Network Policy?
kubectl get networkpolicy -n applications -
Logs de l'application:
kubectl logs -n applications -l app=afterwork-api | grep -i "database\|connection"
Problème : "Database does not exist"
Solution:
-- Se connecter en tant que postgres
CREATE DATABASE afterwork_db;
GRANT ALL PRIVILEGES ON DATABASE afterwork_db TO afterwork;
Problème : "Authentication failed"
Vérifier:
# Le mot de passe dans le secret
kubectl get secret afterwork-secrets -n applications -o jsonpath='{.data.DB_PASSWORD}' | base64 -d
# Devrait afficher: AfterWork2025!
✅ Checklist de Vérification
Avant le déploiement:
- DB_HOST =
postgresql(paspostgres) - DB_PORT =
5432 - DB_NAME =
afterwork_db - DB_USERNAME =
afterwork - DB_PASSWORD =
AfterWork2025! - ConfigMap créé et correct
- Secret créé avec bon mot de passe
- application-prod.properties correct
- Dockerfile.prod correct
- Base de données créée sur PostgreSQL
- Utilisateur
afterworkcréé avec droits - Test de connexion réussi
📝 Notes
Pattern Observé dans les Projets Lions.dev
| Projet | DB Host | DB Name | DB User | DB Password Pattern |
|---|---|---|---|---|
| btpxpress | postgresql | btpxpress | btpxpress | btpxpress_secure_2024 |
| unionflow | postgresql | unionflow | unionflow | UnionFlow2025! |
| afterwork | postgresql | afterwork_db | afterwork | AfterWork2025! |
Cohérence
✅ Tous les projets utilisent:
- Host:
postgresql(service Kubernetes) - Port:
5432(standard PostgreSQL) - Username: Nom du projet en minuscule
- Password: Pattern avec nom et année
Configuration validée et prête pour le déploiement! ✅
Dernière mise à jour: 2026-01-10