Exploitation Kubernetes
Le quotidien de votre déploiement Kuploy sur Kubernetes.
Consulter l'état
python deploy.py status
Ou à la main :
# Les pods
kubectl get pods -n kuploy
# Le déploiement
kubectl get deployment kuploy -n kuploy
# L'ingress
kubectl get ingress -n kuploy
Monter en charge
Horizontalement
# Ajuster le nombre de réplicas Kuploy
kubectl scale deployment/kuploy -n kuploy --replicas=3
# Ou via deploy.py
python deploy.py --replicas 3
Verticalement
Modifiez les limites de ressources :
kubectl edit deployment/kuploy -n kuploy
Mettre à jour les secrets
# Modifier les secrets directement
kubectl edit secret kuploy-secrets -n kuploy
# Ou n'en modifier qu'une valeur
kubectl patch secret kuploy-secrets -n kuploy -p '{"data":{"CLE":"VALEUR_BASE64"}}'
# Redémarrer pour prendre les changements en compte
kubectl rollout restart deployment/kuploy -n kuploy
Sauvegarde et restauration
La base de données
# Sauvegarder
kubectl exec -it postgresql-0 -n database -- pg_dump -U kuploy kuploy > sauvegarde.sql
# Restaurer
kubectl exec -i postgresql-0 -n database -- psql -U kuploy kuploy < sauvegarde.sql
Le volume persistant
Le PVC kuploy-data contient les données applicatives. Sauvegardez-le selon les possibilités de votre classe de stockage.
Désinstaller
python deploy.py uninstall
Nettoyer la base (après désinstallation)
kubectl exec -it postgresql-0 -n database -- psql -U postgres -c "DROP DATABASE kuploy;"
kubectl exec -it postgresql-0 -n database -- psql -U postgres -c "DROP USER kuploy;"
Les logs
# Logs de Kuploy
kubectl logs -n kuploy -l app.kubernetes.io/name=kuploy -f
# Logs de Buildkit
kubectl logs -n kuploy -l app.kubernetes.io/name=buildkitd -f
# Tous les pods de l'espace de noms
kubectl logs -n kuploy --all-containers -f
Dépannage
Un pod ne démarre pas
# Consulter les événements
kubectl describe pod -n kuploy -l app.kubernetes.io/name=kuploy
# Vérifier les contraintes de ressources
kubectl top pods -n kuploy
Problèmes de Buildkit
# Réinitialiser buildkit
kubectl delete statefulset buildkitd -n kuploy
kubectl delete pod buildkitd-0 -n kuploy --force --grace-period=0
# Redéployer
python deploy.py buildkit --storage-class longhorn
# Observer
kubectl get pods -n kuploy -l app.kubernetes.io/name=buildkitd -w
Tester Buildkit
# Vérifier le worker
kubectl exec -n kuploy buildkitd-0 -- buildctl --addr tcp://127.0.0.1:1234 debug workers
# Test de build rapide
kubectl exec -n kuploy buildkitd-0 -- sh -c 'mkdir -p /tmp/test && echo "FROM alpine:3.19" > /tmp/test/Dockerfile'
kubectl exec -n kuploy buildkitd-0 -- buildctl --addr tcp://127.0.0.1:1234 build \
--frontend dockerfile.v0 \
--local context=/tmp/test \
--local dockerfile=/tmp/test \
--output type=image,name=test:latest,push=false
Problèmes d'ingress
# Consulter l'état de l'ingress
kubectl describe ingress kuploy -n kuploy
# Consulter les logs du contrôleur d'ingress
kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx
Problèmes de connexion à la base
# Tester la connexion depuis le pod Kuploy
kubectl exec -it deployment/kuploy -n kuploy -- sh -c 'echo "SELECT 1" | psql $DATABASE_URL'
# Vérifier que PostgreSQL tourne
kubectl get pods -n database -l app.kubernetes.io/name=postgresql
Problèmes de certificat TLS
# Consulter l'état du certificat
kubectl get certificate -n kuploy
# Consulter les logs de cert-manager
kubectl logs -n cert-manager -l app=cert-manager
Les contrôles de santé
Kuploy expose des points de contrôle :
| Point d'accès | Rôle |
|---|---|
/api/health | Contrôle de santé de base |
/api/health/ready | Disponibilité — la base est connectée |
# Tester depuis l'intérieur du cluster
kubectl exec -it deployment/kuploy -n kuploy -- curl -s localhost:3000/api/health
Pour la supervision et les alertes avec Prometheus, voir Supervision de la plateforme.