177 lines
7.4 KiB
Markdown
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é
|