🔧 Référence & Troubleshooting

Référence des commandes

Guide de référence rapide

Cette section contient toutes les commandes essentielles utilisées dans la formation, organisées par outil et contexte d'utilisation.

Git et Gitea

Commandes Git essentielles

TerminalCode
# Configuration initiale git config --global user.name "Your Name" git config --global user.email "your.email@example.com" # Initialisation et clonage git init git clone <repo-url> git remote add origin <repo-url> # Workflow de base git status git add . git add <file> git commit -m "message" git push origin <branch> git pull origin <branch> # Gestion des branches git branch # Lister les branches git branch <branch-name> # Créer une branche git checkout <branch-name> # Changer de branche git checkout -b <branch-name> # Créer et changer de branche git merge <branch-name> # Merger une branche git branch -d <branch-name> # Supprimer une branche # Tags et releases git tag # Lister les tags git tag v1.0.0 # Créer un tag git tag -a v1.0.0 -m "Version 1.0.0" # Tag avec message git push origin v1.0.0 # Pusher un tag git push origin --tags # Pusher tous les tags # Historique et logs git log # Historique des commits git log --oneline # Historique condensé git log --graph --oneline # Historique avec graphique git show <commit-hash> # Détails d'un commit git diff # Différences non commitées git diff <commit1> <commit2> # Différences entre commits # Annulation et correction git reset HEAD <file> # Unstage un fichier git reset --soft HEAD~1 # Annuler le dernier commit (garder les modifs) git reset --hard HEAD~1 # Annuler le dernier commit (perdre les modifs) git revert <commit-hash> # Créer un commit d'annulation git stash # Sauvegarder temporairement les modifs git stash pop # Récupérer les modifs sauvegardées

API Gitea

TerminalCode
# Configuration de l'API GITEA_URL="http://localhost:3000" GITEA_TOKEN="your-token" # Informations utilisateur curl -H "Authorization: token $GITEA_TOKEN" \ "$GITEA_URL/api/v1/user" # Lister les repositories curl -H "Authorization: token $GITEA_TOKEN" \ "$GITEA_URL/api/v1/user/repos" # Créer un repository curl -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"my-repo","description":"My repository"}' \ "$GITEA_URL/api/v1/user/repos" # Lister les webhooks curl -H "Authorization: token $GITEA_TOKEN" \ "$GITEA_URL/api/v1/repos/owner/repo/hooks" # Créer un webhook curl -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "type": "gitea", "config": { "url": "http://your-webhook-url", "content_type": "json" }, "events": ["push", "pull_request"] }' \ "$GITEA_URL/api/v1/repos/owner/repo/hooks"

Docker et Registry

Commandes Docker essentielles

TerminalCode
# Images docker images # Lister les images docker pull <image> # Télécharger une image docker build -t <tag> . # Builder une image docker tag <image> <new-tag> # Tagger une image docker rmi <image> # Supprimer une image docker history <image> # Historique d'une image # Conteneurs docker ps # Lister les conteneurs actifs docker ps -a # Lister tous les conteneurs docker run <image> # Lancer un conteneur docker run -d <image> # Lancer en arrière-plan docker run -it <image> bash # Lancer en mode interactif docker stop <container> # Arrêter un conteneur docker start <container> # Démarrer un conteneur docker restart <container> # Redémarrer un conteneur docker rm <container> # Supprimer un conteneur docker logs <container> # Voir les logs docker exec -it <container> bash # Se connecter au conteneur # Nettoyage docker system df # Espace utilisé par Docker docker system prune # Nettoyer les ressources inutilisées docker system prune -a # Nettoyer toutes les ressources docker volume prune # Nettoyer les volumes docker image prune # Nettoyer les images docker container prune # Nettoyer les conteneurs arrêtés # Docker Compose docker-compose up # Lancer les services docker-compose up -d # Lancer en arrière-plan docker-compose down # Arrêter et supprimer docker-compose ps # Status des services docker-compose logs # Logs de tous les services docker-compose logs <service> # Logs d'un service spécifique docker-compose exec <service> bash # Se connecter à un service docker-compose build # Rebuilder les images docker-compose pull # Mettre à jour les images

Docker Registry

TerminalCode
# Registry local docker run -d -p 5000:5000 --name registry registry:2 # Push/Pull vers registry docker tag <image> localhost:5000/<image> docker push localhost:5000/<image> docker pull localhost:5000/<image> # Authentification docker login localhost:5000 docker logout localhost:5000 # API Registry # Lister les repositories curl http://localhost:5000/v2/_catalog # Lister les tags d'un repository curl http://localhost:5000/v2/<repo>/tags/list # Obtenir un manifest curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \ http://localhost:5000/v2/<repo>/manifests/<tag> # Supprimer un manifest (si DELETE activé) curl -X DELETE http://localhost:5000/v2/<repo>/manifests/<digest> # Garbage collection docker exec <registry-container> registry garbage-collect /etc/docker/registry/config.yml

Kubernetes

kubectl - Gestion des ressources

TerminalCode
# Configuration et contexte kubectl config view # Voir la configuration kubectl config current-context # Contexte actuel kubectl config get-contexts # Lister les contextes kubectl config use-context <context> # Changer de contexte kubectl cluster-info # Informations du cluster # Ressources de base kubectl get <resource> # Lister les ressources kubectl get pods # Lister les pods kubectl get deployments # Lister les deployments kubectl get services # Lister les services kubectl get all # Toutes les ressources principales kubectl get all -n <namespace> # Dans un namespace spécifique kubectl get <resource> -o wide # Plus de détails kubectl get <resource> -o yaml # Format YAML kubectl get <resource> -o json # Format JSON # Création et mise à jour kubectl apply -f <file.yaml> # Appliquer un fichier kubectl apply -f <directory>/ # Appliquer un répertoire kubectl create -f <file.yaml> # Créer depuis un fichier kubectl delete -f <file.yaml> # Supprimer depuis un fichier kubectl delete <resource> <name> # Supprimer par nom # Inspection et debugging kubectl describe <resource> <name> # Détails d'une ressource kubectl logs <pod-name> # Logs d'un pod kubectl logs -f <pod-name> # Suivre les logs kubectl logs <pod-name> -c <container> # Logs d'un conteneur spécifique kubectl exec -it <pod-name> -- bash # Se connecter à un pod kubectl port-forward <pod-name> 8080:80 # Port forwarding kubectl top nodes # Utilisation des ressources des nodes kubectl top pods # Utilisation des ressources des pods # Scaling et rolling updates kubectl scale deployment <name> --replicas=3 # Scaler un deployment kubectl rollout status deployment <name> # Status d'un rollout kubectl rollout history deployment <name> # Historique des rollouts kubectl rollout undo deployment <name> # Rollback kubectl set image deployment <name> container=image:tag # Mettre à jour l'image # Namespaces kubectl create namespace <name> # Créer un namespace kubectl get namespaces # Lister les namespaces kubectl config set-context --current --namespace=<name> # Changer de namespace par défaut # Secrets et ConfigMaps kubectl create secret generic <name> --from-literal=key=value kubectl create secret docker-registry <name> --docker-server=<server> --docker-username=<user> --docker-password=<pass> kubectl create configmap <name> --from-file=<file> kubectl create configmap <name> --from-literal=key=value

Kubernetes - Commandes de debug avancées

TerminalCode
# Events et troubleshooting kubectl get events --sort-by=.metadata.creationTimestamp kubectl get events -n <namespace> --field-selector type=Warning # Labels et annotations kubectl label pods <pod> app=myapp # Ajouter un label kubectl annotate pods <pod> description="my pod" # Ajouter une annotation kubectl get pods --show-labels # Voir les labels kubectl get pods -l app=myapp # Filtrer par label # Ressources et quotas kubectl describe quota -n <namespace> kubectl describe limitrange -n <namespace> kubectl api-resources # Toutes les ressources disponibles kubectl api-versions # Versions d'API disponibles # Certificats et RBAC kubectl auth can-i <verb> <resource> # Tester les permissions kubectl auth can-i create pods # Exemple kubectl get rolebindings # RoleBindings kubectl get clusterrolebindings # ClusterRoleBindings # Dump complet pour debug kubectl get all --all-namespaces -o yaml > cluster-dump.yaml

Argo CD

CLI Argo CD

TerminalCode
# Installation et login curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd argocd login <server> # Se connecter argocd logout <server> # Se déconnecter # Gestion des applications argocd app list # Lister les applications argocd app get <app-name> # Détails d'une application argocd app create <app-name> # Créer une application argocd app delete <app-name> # Supprimer une application argocd app sync <app-name> # Synchroniser une application argocd app sync <app-name> --force # Synchronisation forcée argocd app rollback <app-name> # Rollback argocd app history <app-name> # Historique des syncs argocd app logs <app-name> # Logs de synchronisation argocd app wait <app-name> # Attendre la synchronisation # Configuration des applications argocd app set <app-name> --repo <repo-url> argocd app set <app-name> --path <path> argocd app set <app-name> --dest-server <server> argocd app set <app-name> --dest-namespace <namespace> argocd app set <app-name> --sync-policy automated argocd app unset <app-name> --sync-policy # Gestion des repositories argocd repo list # Lister les repositories argocd repo add <repo-url> # Ajouter un repository argocd repo add <repo-url> --username <user> --password <pass> argocd repo remove <repo-url> # Supprimer un repository argocd repo get <repo-url> # Détails d'un repository # Gestion des clusters argocd cluster list # Lister les clusters argocd cluster add <context> # Ajouter un cluster argocd cluster remove <server> # Supprimer un cluster # Gestion des projets argocd proj list # Lister les projets argocd proj create <project-name> # Créer un projet argocd proj delete <project-name> # Supprimer un projet argocd proj get <project-name> # Détails d'un projet # Accounts et RBAC argocd account list # Lister les comptes argocd account get --account <account> argocd account update-password # Changer le mot de passe # Version et contexte argocd version # Version d'Argo CD argocd context # Contexte actuel argocd context <server> # Changer de contexte

Argo Rollouts

TerminalCode
# Installation du plugin kubectl curl -LO https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-linux-amd64 chmod +x ./kubectl-argo-rollouts-linux-amd64 sudo mv ./kubectl-argo-rollouts-linux-amd64 /usr/local/bin/kubectl-argo-rollouts # Commandes de base kubectl argo rollouts list # Lister les rollouts kubectl argo rollouts get rollout <name> # Détails d'un rollout kubectl argo rollouts status <name> # Status d'un rollout kubectl argo rollouts history <name> # Historique # Gestion des rollouts kubectl argo rollouts promote <name> # Promouvoir à l'étape suivante kubectl argo rollouts pause <name> # Pauser un rollout kubectl argo rollouts resume <name> # Reprendre un rollout kubectl argo rollouts abort <name> # Avorter un rollout kubectl argo rollouts undo <name> # Rollback kubectl argo rollouts restart <name> # Redémarrer # Monitoring kubectl argo rollouts get rollout <name> -w # Suivre en temps réel kubectl argo rollouts dashboard # Dashboard web (port 3100)

CDK8s

CLI CDK8s

TerminalCode
# Installation npm install -g cdk8s-cli # Initialisation de projets cdk8s init typescript-app # Projet TypeScript cdk8s init python-app # Projet Python cdk8s init java-app # Projet Java # Import d'APIs cdk8s import # Import selon cdk8s.yaml cdk8s import k8s@1.28.0 # Import API Kubernetes spécifique cdk8s import https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/jsonnet/prometheus-operator/prometheus-operator-crd.json # Génération de manifests cdk8s synth # Générer les manifests YAML cdk8s synth --output /tmp/out # Générer dans un répertoire spécifique # Version cdk8s --version # Version de CDK8s

NPM Scripts typiques pour CDK8s

TerminalCode
# Dans un projet CDK8s TypeScript npm run build # Compiler TypeScript npm run synth # Générer les manifests npm test # Exécuter les tests npm run watch # Compiler en mode watch # Scripts personnalisés utiles npm run synth:dev # ENVIRONMENT=dev npm run synth npm run synth:prod # ENVIRONMENT=prod npm run synth npm run validate # npm run build && npm run synth && npm test npm run apply:dev # npm run synth:dev && kubectl apply -f dist/

Helm

Commandes Helm essentielles

TerminalCode
# Gestion des repositories helm repo add <name> <url> # Ajouter un repository helm repo update # Mettre à jour les repositories helm repo list # Lister les repositories helm repo remove <name> # Supprimer un repository helm search repo <keyword> # Rechercher dans les repositories # Installation et gestion des releases helm install <release-name> <chart> # Installer une chart helm install <release-name> <chart> --namespace <ns> --create-namespace helm upgrade <release-name> <chart> # Mettre à jour une release helm upgrade --install <release-name> <chart> # Install ou upgrade helm rollback <release-name> <revision> # Rollback helm uninstall <release-name> # Désinstaller une release # Status et informations helm list # Lister les releases helm list --all-namespaces # Dans tous les namespaces helm status <release-name> # Status d'une release helm history <release-name> # Historique d'une release helm get values <release-name> # Valeurs d'une release helm get manifest <release-name> # Manifests générés # Développement de charts helm create <chart-name> # Créer une nouvelle chart helm template <chart> --values values.yaml # Générer les templates helm lint <chart> # Valider une chart helm package <chart> # Packager une chart helm dependency update # Mettre à jour les dépendances # Dry-run et debug helm install <release> <chart> --dry-run --debug helm template <release> <chart> --debug

Monitoring

Prometheus - Requêtes PromQL

TerminalCode
# Métriques de base up # Status des targets up{job="kubernetes-apiservers"} # Filtrage par job rate(http_requests_total[5m]) # Taux par seconde sur 5 minutes sum(rate(http_requests_total[5m])) by (status) # Somme groupée par status avg(cpu_usage) by (instance) # Moyenne par instance # Fonctions utiles increase(counter[5m]) # Augmentation sur 5 minutes histogram_quantile(0.95, rate(http_duration_bucket[5m])) # 95e percentile predict_linear(metric[1h], 3600) # Prédiction linéaire pour 1h

cURL pour APIs

TerminalCode
# Prometheus curl http://localhost:9090/api/v1/query?query=up curl http://localhost:9090/api/v1/query_range?query=up&start=1609459200&end=1609462800&step=15 # Grafana curl -u admin:admin http://localhost:3000/api/health curl -H "Authorization: Bearer <token>" http://localhost:3000/api/dashboards/home # Kubernetes API curl -H "Authorization: Bearer <token>" https://kubernetes.default.svc/api/v1/pods kubectl proxy & # Puis curl http://localhost:8001/api/v1/namespaces/default/pods

Scripts utiles

Backup et restauration

TerminalCode
# Backup des ConfigMaps et Secrets kubectl get configmaps --all-namespaces -o yaml > configmaps-backup.yaml kubectl get secrets --all-namespaces -o yaml > secrets-backup.yaml # Backup d'un namespace complet kubectl get all --all-namespaces -o yaml > full-backup.yaml # Backup Argo CD kubectl get applications -n argocd -o yaml > argocd-apps-backup.yaml kubectl get appprojects -n argocd -o yaml > argocd-projects-backup.yaml # Restauration kubectl apply -f backup.yaml

Monitoring et alertes

TerminalCode
# Vérifier la santé générale kubectl get nodes kubectl get pods --all-namespaces | grep -v Running | grep -v Completed kubectl top nodes kubectl top pods --all-namespaces # Vérifier les events récents kubectl get events --all-namespaces --sort-by='.metadata.creationTimestamp' | tail -20 # Alertes Prometheus (via API) curl http://localhost:9090/api/v1/alerts # Status des targets Prometheus curl http://localhost:9090/api/v1/targets

Automation et scripting

TerminalCode
# Attendre qu'un deployment soit ready kubectl wait --for=condition=available --timeout=300s deployment/<name> # Redémarrer tous les deployments d'un namespace kubectl get deployments -n <namespace> -o name | xargs -I {} kubectl rollout restart {} # Supprimer tous les pods en erreur kubectl get pods --all-namespaces --field-selector=status.phase=Failed -o name | xargs kubectl delete # Script de health check complet #!/bin/bash check_health() { echo "Checking $1..." kubectl get pods -n $2 --no-headers | grep -v Running | wc -l | xargs -I {} bash -c 'if [ {} -eq 0 ]; then echo "✅ $1 OK"; else echo "❌ $1 KO"; fi' } check_health "Argo CD" "argocd" check_health "Monitoring" "monitoring" check_health "App" "webapp-prod"

Cette référence de commandes vous donne accès rapide à tous les outils essentiels utilisés dans cette formation. Bookmark cette page et utilisez-la comme aide-mémoire dans vos projets quotidiens !

Last modified on