From 31a693773135a2fee29339ade322c20c46804ed6 Mon Sep 17 00:00:00 2001 From: pyayi Date: Mon, 2 Mar 2026 11:22:29 +0000 Subject: [PATCH] Ajouter Guide-utilisateur-kubectl-rber --- Guide-utilisateur-kubectl-rber | 453 +++++++++++++++++++++++++++++++++ 1 file changed, 453 insertions(+) create mode 100644 Guide-utilisateur-kubectl-rber diff --git a/Guide-utilisateur-kubectl-rber b/Guide-utilisateur-kubectl-rber new file mode 100644 index 0000000..34983ac --- /dev/null +++ b/Guide-utilisateur-kubectl-rber @@ -0,0 +1,453 @@ +# Guide Utilisateur kubectl - Cluster RBER + +## Introduction + +Ce guide explique comment configurer et utiliser `kubectl` pour accéder aux applications hébergées sur le cluster Kubernetes RBER. + +Avec cet accès, tu peux : +- Voir l'état des applications (pods, services) +- Consulter les logs +- Redémarrer des applications (selon ton rôle) +- Accéder aux bases de données via port-forward + +--- + +## 1. Prérequis + +### 1.1 Fichiers reçus + +Tu as reçu un fichier d'accès : +- `ton-nom.kubeconfig.gpg` (chiffré) — nécessite le mot de passe fourni séparément +- ou `ton-nom.kubeconfig` (non chiffré) + +### 1.2 Logiciels nécessaires + +| Logiciel | Obligatoire | Description | +|----------|-------------|-------------| +| kubectl | Oui | Client Kubernetes | +| gpg | Si fichier .gpg | Pour déchiffrer le fichier | + +--- + +## 2. Installation de kubectl + +### Ubuntu / Debian + +```bash +# Télécharger +curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" + +# Rendre exécutable +chmod +x kubectl + +# Déplacer dans le PATH +sudo mv kubectl /usr/local/bin/ + +# Vérifier +kubectl version --client +``` + +### macOS + +```bash +# Avec Homebrew +brew install kubectl + +# Vérifier +kubectl version --client +``` + +### Windows + +```powershell +# Avec Chocolatey (PowerShell administrateur) +choco install kubernetes-cli + +# Vérifier +kubectl version --client +``` + +--- + +## 3. Configuration de l'accès + +### 3.1 Déchiffrer le fichier (si .gpg) + +```bash +# Installer GPG si nécessaire +# Ubuntu: sudo apt install gnupg +# macOS: brew install gnupg + +# Déchiffrer (saisir le mot de passe fourni) +gpg --decrypt ton-nom.kubeconfig.gpg > ton-nom.kubeconfig +``` + +### 3.2 Installer le fichier kubeconfig + +```bash +# Créer le dossier .kube +mkdir -p ~/.kube + +# Copier le fichier +cp ton-nom.kubeconfig ~/.kube/config-rber + +# Sécuriser les permissions +chmod 600 ~/.kube/config-rber +``` + +### 3.3 Configurer la variable d'environnement + +```bash +# Définir la variable +export KUBECONFIG=~/.kube/config-rber + +# Rendre permanent (ajouter au .bashrc ou .zshrc) +echo 'export KUBECONFIG=~/.kube/config-rber' >> ~/.bashrc +source ~/.bashrc +``` + +### 3.4 Vérifier la connexion + +```bash +# Tester +kubectl get pods + +# Voir tes droits +kubectl auth can-i --list + +# Contexte actuel +kubectl config current-context +``` + +--- + +## 4. Commandes de base + +### 4.1 Voir les ressources + +```bash +# Lister les pods (applications) +kubectl get pods + +# Lister les services +kubectl get svc + +# Lister les deployments +kubectl get deployments + +# Lister les ingress (URLs) +kubectl get ingress + +# Voir toutes les ressources +kubectl get all +``` + +### 4.2 Détails d'une ressource + +```bash +# Détails d'un pod +kubectl describe pod nom-du-pod + +# Détails d'un service +kubectl describe svc nom-du-service + +# Détails d'un deployment +kubectl describe deployment nom-du-deployment +``` + +### 4.3 Logs + +```bash +# Logs d'un pod +kubectl logs nom-du-pod + +# Logs en temps réel (suivre) +kubectl logs -f nom-du-pod + +# Dernières 100 lignes +kubectl logs nom-du-pod --tail=100 + +# Logs du pod précédent (après crash) +kubectl logs nom-du-pod --previous + +# Logs de tous les pods d'une application +kubectl logs -l app=moodle --all-containers +``` + +### 4.4 Accéder à un pod + +```bash +# Ouvrir un shell dans le pod +kubectl exec -it nom-du-pod -- bash + +# Si bash n'existe pas, essayer sh +kubectl exec -it nom-du-pod -- sh + +# Exécuter une commande unique +kubectl exec nom-du-pod -- ls /var/www +``` + +### 4.5 Port-forward (accès local) + +```bash +# Accéder à un service localement +kubectl port-forward svc/moodle 8080:80 + +# Puis ouvrir http://localhost:8080 dans ton navigateur + +# Accéder à PostgreSQL +kubectl port-forward svc/uac-pg-cluster-rw 5432:5432 + +# Puis se connecter avec psql ou pgAdmin sur localhost:5432 +``` + +--- + +## 5. Travailler avec plusieurs namespaces + +Si tu as accès à plusieurs namespaces, tu peux naviguer entre eux. + +### 5.1 Voir les contextes disponibles + +```bash +kubectl config get-contexts + +# Exemple de sortie : +# CURRENT NAME CLUSTER NAMESPACE +# * jean.dupont-moodle-uac@rber-fidj rber-fidj moodle-uac +# jean.dupont-moodle-una@rber-fidj rber-fidj moodle-una +``` + +### 5.2 Changer de contexte + +```bash +# Basculer vers moodle-una +kubectl config use-context jean.dupont-moodle-una@rber-fidj + +# Vérifier +kubectl config current-context +``` + +### 5.3 Spécifier le namespace directement + +```bash +# Sans changer de contexte, utiliser -n +kubectl get pods -n moodle-uac +kubectl get pods -n moodle-una +kubectl logs -n moodle-una nom-du-pod +``` + +--- + +## 6. Cas d'usage courants + +### 6.1 Vérifier si une application fonctionne + +```bash +# Voir l'état des pods +kubectl get pods + +# États possibles : +# - Running : OK, l'application tourne +# - Pending : En attente de ressources +# - Error : Erreur +# - CrashLoop : L'application redémarre en boucle + +# Si problème, voir les détails +kubectl describe pod nom-du-pod + +# Voir les logs +kubectl logs nom-du-pod +``` + +### 6.2 Redémarrer une application + +```bash +# Redémarrer tous les pods d'un deployment +kubectl rollout restart deployment/moodle + +# Suivre le redémarrage +kubectl rollout status deployment/moodle + +# Vérifier que les nouveaux pods sont Running +kubectl get pods +``` + +### 6.3 Voir pourquoi un pod ne démarre pas + +```bash +# Étape 1 : Voir l'état +kubectl get pods + +# Étape 2 : Voir les events +kubectl describe pod nom-du-pod + +# Regarder la section "Events" en bas + +# Étape 3 : Si le pod a déjà démarré puis crashé +kubectl logs nom-du-pod --previous +``` + +### 6.4 Se connecter à la base de données + +```bash +# Ouvrir un tunnel vers PostgreSQL +kubectl port-forward svc/uac-pg-cluster-rw 5432:5432 + +# Dans un autre terminal, se connecter +psql -h localhost -U moodleuser -d moodle + +# Ou utiliser un outil graphique (pgAdmin, DBeaver) sur localhost:5432 +``` + +### 6.5 Copier un fichier depuis/vers un pod + +```bash +# Copier un fichier depuis le pod vers local +kubectl cp nom-du-pod:/chemin/fichier.log ./fichier.log + +# Copier un fichier local vers le pod +kubectl cp ./mon-fichier.txt nom-du-pod:/tmp/mon-fichier.txt +``` + +--- + +## 7. Alias recommandés + +Ajoute ces raccourcis à ton `~/.bashrc` ou `~/.zshrc` : + +```bash +# Raccourcis kubectl +alias k='kubectl' +alias kgp='kubectl get pods' +alias kgs='kubectl get svc' +alias kgd='kubectl get deployments' +alias kgi='kubectl get ingress' +alias kga='kubectl get all' +alias kl='kubectl logs' +alias klf='kubectl logs -f' +alias ke='kubectl exec -it' +alias kd='kubectl describe' +alias kpf='kubectl port-forward' + +# Autocomplétion (très utile !) +source <(kubectl completion bash) # Pour bash +# source <(kubectl completion zsh) # Pour zsh +``` + +Après modification : +```bash +source ~/.bashrc +``` + +Utilisation : +```bash +kgp # = kubectl get pods +klf mon-pod # = kubectl logs -f mon-pod +ke mon-pod bash # = kubectl exec -it mon-pod bash +``` + +--- + +## 8. Résolution de problèmes + +### Connexion refusée + +``` +Unable to connect to the server: dial tcp: lookup api.rber.bj: no such host +``` + +**Solutions :** +1. Vérifier ta connexion internet +2. Vérifier que le DNS résout : `nslookup api.rber.bj` +3. Tester la connectivité : `curl -k https://api.rber.bj:6443/healthz` + +### Erreur de certificat + +``` +certificate signed by unknown authority +``` + +**Solutions :** +1. Le fichier kubeconfig est peut-être corrompu +2. Redemander un nouveau fichier à l'administrateur + +### Permission denied + +``` +Error from server (Forbidden): pods is forbidden +``` + +**Solutions :** +1. Vérifier ton namespace : `kubectl config current-context` +2. Vérifier tes droits : `kubectl auth can-i --list` +3. Tu n'as peut-être pas accès à cette ressource - contacter l'administrateur + +### Namespace incorrect + +``` +No resources found in default namespace +``` + +**Solutions :** +1. Tu es probablement dans le mauvais namespace +2. Vérifier : `kubectl config current-context` +3. Lister tes contextes : `kubectl config get-contexts` +4. Changer de contexte ou utiliser `-n namespace` + +### Token expiré + +``` +error: You must be logged in to the server (Unauthorized) +``` + +**Solutions :** +1. Ton token a peut-être expiré +2. Contacter l'administrateur pour obtenir un nouveau fichier kubeconfig + +--- + +## 9. Référence rapide + +### Commandes essentielles + +| Action | Commande | +|--------|----------| +| Lister les pods | `kubectl get pods` | +| Logs d'un pod | `kubectl logs ` | +| Logs en temps réel | `kubectl logs -f ` | +| Entrer dans un pod | `kubectl exec -it -- bash` | +| Détails d'un pod | `kubectl describe pod ` | +| Redémarrer | `kubectl rollout restart deployment/` | +| Port-forward | `kubectl port-forward svc/ 8080:80` | +| Changer namespace | `kubectl config use-context ` | + +### États des pods + +| État | Signification | +|------|---------------| +| Running | OK, fonctionne | +| Pending | En attente (ressources, stockage) | +| ContainerCreating | Téléchargement de l'image | +| Error | Erreur au démarrage | +| CrashLoopBackOff | Crash répété | +| Terminating | En cours d'arrêt | + +--- + +## 10. Contact et support + +En cas de problème : + +- **Email** : devops@rber.bj +- **Documentation** : https://docs.rber.bj + +Informations à fournir : +1. Ton nom d'utilisateur +2. Le namespace concerné +3. La commande exécutée +4. Le message d'erreur complet + +--- + +*Guide utilisateur kubectl RBER - Version 1.0 - Janvier 2026* \ No newline at end of file