Ajouter Guide-utilisateur-kubectl-rber
This commit is contained in:
453
Guide-utilisateur-kubectl-rber
Normal file
453
Guide-utilisateur-kubectl-rber
Normal file
@@ -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 <pod>` |
|
||||
| Logs en temps réel | `kubectl logs -f <pod>` |
|
||||
| Entrer dans un pod | `kubectl exec -it <pod> -- bash` |
|
||||
| Détails d'un pod | `kubectl describe pod <pod>` |
|
||||
| Redémarrer | `kubectl rollout restart deployment/<nom>` |
|
||||
| Port-forward | `kubectl port-forward svc/<svc> 8080:80` |
|
||||
| Changer namespace | `kubectl config use-context <contexte>` |
|
||||
|
||||
### É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*
|
||||
Reference in New Issue
Block a user