Aller au contenu principal

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èsRôle
/api/healthContrôle de santé de base
/api/health/readyDisponibilité — 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.