Files
wiki/Catalogue-Self-Hosted/apps/app-kubetail.md
T
2026-06-09 18:40:21 +02:00

177 lines
7.4 KiB
Markdown

---
title: Kubetail
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, logs, kubernetes, k8s, dashboard, real-time, multi-pod, typescript, kubectl]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Logs, https://github.com/kubetail-org/kubetail]
---
# 📋 Kubetail
> **Le `kubectl logs` revisité** : dashboard web et TUI pour suivre les logs de plusieurs pods Kubernetes en temps réel, avec sélection de containers, namespaces et tail multi-stream. Le k9s des logs.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [kubetail.com](https://www.kubetail.com/) |
| **GitHub** | [kubetail-org/kubetail](https://github.com/kubetail-org/kubetail) |
| **License** | Apache-2.0 |
| **Langage** | TypeScript (Node.js) + Go (backend) |
| **Étoiles GitHub** | 1.7k ⭐ |
| **Dernière MAJ** | 2026-06-04 |
| **Catégorie** | [[cat-logs|Logs]] |
## 📝 Description
**Kubetail** est un **dashboard de logs Kubernetes** qui résout le plus gros point de friction de `kubectl` : **suivre les logs de plusieurs pods simultanément**. Fini le jonglage entre 5 terminaux avec `kubectl logs -f pod-1`, `kubectl logs -f pod-2`, etc. Kubetail unifie tout dans une seule UI web (ou TUI) avec sélection des containers, namespaces, et filtrage.
L'outil propose deux interfaces : une **UI web** moderne (basée sur le kubeconfig local ou un service account K8s) et un **TUI** terminal (style k9s). Les deux supportent le **tail multi-pod**, la **colorisation par container**, la **recherche full-text**, et la **sélection dynamique** des ressources à suivre. C'est un outil indispensable pour le debug en cluster.
Kubetail peut être utilisé en **mode local** (CLI qui lit votre kubeconfig) ou **mode serveur** (déployé dans le cluster avec un service account, accessible à toute l'équipe). Le mode serveur permet de **partager** une session de debug avec des collègues ou de surveiller depuis un navigateur distant.
**Public cible** : développeurs backend qui débuggent des microservices K8s, SRE qui font du troubleshooting en cluster, équipes DevOps qui veulent partager des sessions de logs, toute personne qui trouve `kubectl logs` limité.
-**Dashboard web** : UI moderne accessible depuis le navigateur
-**TUI terminal** : pour les SSH dans des jump hosts
-**Multi-pod** : tail simultané de N pods/containers
-**Multi-namespace** : switch rapide entre namespaces
-**Recherche full-text** : grep-like sur les logs en temps réel
-**Colorisation** : logs colorés par container/pod
-**Mode CLI local** : utilise votre `~/.kube/config`
-**Mode serveur** : déployé dans le cluster pour l'équipe
-**Kubernetes RBAC** : respect des permissions K8s natives
-**Source d'events K8s** : integration avec les Events API
-**Apache-2.0** : usage libre, même commercial
- ⚠️ **Pas de rétention** : viewer, pas aggregator (utiliser Loki en complément)
## 🚀 Installation
### Option 1 : Kubetail CLI (mode local)
```bash
# macOS / Linux
curl -L https://raw.githubusercontent.com/kubetail-org/kubetail/main/install.sh | sh
# Homebrew
brew install kubetail
# Vérifier l'install
kubetail --version
```
### Option 2 : Docker (mode serveur)
```yaml
# docker-compose.yml (déploiement dans le cluster recommandé)
# Ou en standalone pour test :
version: '3.8'
services:
kubetail:
image: kubetail-org/kubetail:latest
container_name: kubetail
restart: unless-stopped
ports:
- "7500:7500" # Backend API
- "8080:8080" # Web UI
volumes:
- ./kubeconfig:/root/.kube/config:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.kubetail.rule=Host(`kubetail.example.com`)"
- "traefik.http.routers.kubetail.entrypoints=websecure"
- "traefik.http.routers.kubetail.tls.certresolver=letsencrypt"
```
### Option 3 : Helm (Kubernetes)
```bash
helm repo add kubetail https://kubetail-org.github.io/helm-charts
helm install kubetail kubetail/kubetail \
--namespace logging --create-namespace
```
### Option 4 : kubectl plugin
```bash
kubectl krew install tail
kubectl tail deployment/my-app
```
## ⚙️ Configuration Initiale
1. **Vérifier kubectl** : `kubectl get nodes` doit fonctionner
2. **Lancer le mode local** : `kubetail` → ouvre le TUI
3. **Sélectionner une ressource** : TUI > taper le nom du deployment/statefulset
4. **Lancer le mode web** : `kubetail web --port 8080`
5. **Accéder à l'UI** : `http://IP:8080`
6. **Sélectionner namespace/pods** : UI > dropdowns
7. **Tail multi-pod** : cocher plusieurs pods dans l'UI
8. **Rechercher** : barre de recherche (regex supporté)
9. **Mode serveur cluster** : déployer via Helm, créer un ServiceAccount dédié
## 🔄 Alternatives
### Open Source
- **k9s** — Dashboard K8s généraliste (inclut logs)
- **Lens** — IDE K8s avec logs intégrés
- **Rancher** — Plateforme K8s (logs)
- [[app-loki]] + [[app-grafana]] — Pour archivage long terme
- **stern** — Multi-pod log tailer en CLI (Go)
- **kubectl-tail** — Plugin kubectl de base
### Comparaison Kubetail vs autres
| Critère | Kubetail | k9s | stern | Loki/Grafana |
| :--- | :--- | :--- | :--- | :--- |
| **Focus** | Logs | K8s général | Logs CLI | Logs + métriques |
| **UI** | Web + TUI | TUI | CLI | Web |
| **Multi-pod** | ✅ UI | ✅ UI | ✅ | ✅ |
| **Mode partageable** | ✅ (serveur) | ❌ | ❌ | ✅ |
| **Recherche full-text** | ✅ | ❌ | ✅ | ✅ Excellente |
| **Rétention** | ❌ | ❌ | ❌ | ✅ Configurable |
| **Setup** | 2 min | 5 min | 30s | 30 min |
| **Ressources cluster** | Aucune | Aucune | Aucune | Lourdes |
| **License** | Apache-2.0 | Apache-2.0 | Apache-2.0 | AGPL-3.0 |
**Verdict** : Kubetail est **le meilleur viewer de logs K8s** pour le debug en temps réel. Pour l'archivage long terme, [[app-loki]] + Grafana est incontournable. En complément de k9s, c'est le duo parfait.
### Propriétaires (ce que Kubetail remplace)
- **Datadog Log Monitoring** (cher, K8s integration payante)
- **New Relic Logs** (K8s)
- **Splunk Observability Cloud** (K8s)
- **Sumo Logic** (K8s log monitoring)
- **Dynatrace** (K8s log management)
## 🔐 Sécurité
- ⚠️ **Logs = données sensibles** : logs K8s contiennent souvent des secrets, tokens
-**Chiffrement in-transit** : TLS obligatoire (Traefik en reverse proxy)
-**K8s RBAC natif** : Kubetail respecte les permissions Kubernetes
-**Service Account dédié** : créer un SA avec permissions minimales
-**Read-only** : Kubetail ne fait que lire, jamais d'écriture sur le cluster
- ⚠️ **Rétention** : aucune, c'est un viewer (ne pas y aller pour la conformité)
-**Pas de stockage** : aucune base de données à compromettre
-**Audit K8s** : les accès logs sont tracés par K8s audit log
-**Pas de backup nécessaire** : stateless
- ⚠️ **Secret leak** : attention aux secrets en clair dans les env vars des pods
## 📚 Ressources
- [GitHub kubetail-org/kubetail](https://github.com/kubetail-org/kubetail)
- [Documentation officielle](https://www.kubetail.com/docs)
- [Démo en ligne](https://demo.kubetail.com/)
- [Blog technique](https://www.kubetail.com/blog)
## Pages Liées
- [[cat-logs]] — Catégorie Logs
- [[app-loki]] — Archivage long terme K8s
- [[app-grafana]] — Visualisation (couplage Loki)
- [[app-prometheus]] — Métriques K8s
- [[app-uptime-kuma]] — Monitoring uptime
- [[securisation-home-lab]] — Bonnes pratiques sécurité