Lens: L'IDE per Kubernetes che Ti Cambia la Vita (O Quasi)

Guida pratica a Lens, l'IDE per gestire cluster Kubernetes. Setup, funzionalita, e quando preferirlo alla CLI.

Sono un fan della CLI. kubectl e potente, k9s e fantastico, e la maggior parte delle volte non ho bisogno di altro. Ma poi ho iniziato a gestire 6 cluster contemporaneamente, e le cose si sono complicate.

Lens e entrato nel mio workflow quasi per caso, durante un debug particolarmente frustrante. Un collega mi ha detto "prova a vedere i log con Lens, e piu comodo". Aveva ragione. Da allora lo uso quotidianamente, non come sostituto della CLI ma come complemento.

Cos'e Lens

Lens e un'applicazione desktop che ti da una vista grafica dei tuoi cluster Kubernetes. Pensalo come un IDE, ma invece di scrivere codice, gestisci risorse Kubernetes.

Puoi vedere pod, deployment, service, configmap, secret — tutto quello che c'e nel cluster — in un'interfaccia navigabile. Puoi vedere i log in tempo reale, entrare in shell nei container, editare risorse on-the-fly. Tutto quello che faresti con kubectl, ma con un'interfaccia grafica.

La versione base e gratuita e open source. Esiste una versione Pro a pagamento con funzionalita extra (team, sicurezza enterprise), ma per la maggior parte degli usi la versione free basta.

Installazione

Niente di complicato:

# macOS
brew install --cask lens

# Linux (Snap)
sudo snap install kontena-lens --classic

# Linux (AppImage)
# Scarica da https://k8slens.dev/

# Windows
# Scarica l'installer dal sito

Al primo avvio, Lens legge automaticamente il tuo ~/.kube/config e importa tutti i cluster configurati. Se usi contesti multipli, li vedi tutti nella sidebar.

Perche Lo Uso

Non sono qui a venderti Lens. Ci sono cose che fa bene e cose che fa meno bene. Ecco dove lo trovo utile.

Vista d'Insieme

Quando devo capire lo stato generale di un cluster, Lens mi da una dashboard immediata. Quanti pod running, quanti pending, quanti failed. Utilizzo CPU e memoria. Nodi e il loro stato. In kubectl dovrei fare una serie di comandi per avere le stesse informazioni.

Log Multi-Container

I pod con sidecar sono un incubo per i log. Con kubectl devi specificare il container, fare grep, tenere aperte multiple finestre. Con Lens vedo i log di tutti i container del pod in una vista unica, con timestamp sincronizzati. Quando debuggo qualcosa tipo Istio con i suoi envoy sidecar, questo mi salva ore.

Navigazione tra Risorse

"Questo pod e gestito da quale deployment? Quel deployment fa parte di quale namespace? Che service lo espone?" Con Lens clicco e navigo. Le risorse sono collegate, posso saltare da una all'altra. Con kubectl devo fare query separate e tenere tutto a mente.

Edit al Volo

A volte devo cambiare una cosa veloce — un limite di risorse, una variabile d'ambiente, un'annotation. Con Lens clicco Edit, cambio il YAML, salvo. Fatto. Con kubectl devo fare kubectl edit, aprire vim/nano, salvare, sperare di non aver sbagliato l'indentazione.

Terminal Integrato

Lens ha un terminal integrato che apre shell direttamente nei container. kubectl exec -it funziona uguale, ma in Lens e un click destro sul pod. Meno digitazione, stesso risultato.

Dove Non Lo Uso

Non e tutto rose e fiori. Ci sono scenari dove Lens non e la scelta migliore.

Automazione

Se devi scriptare qualcosa, Lens non serve. E uno strumento interattivo, non ha una CLI. Per automazione, kubectl e gli SDK restano l'unica opzione.

Operazioni Bulk

Devo eliminare 50 pod che matchano un certo label? kubectl delete pods -l app=broken e istantaneo. In Lens dovrei selezionarli uno per uno. Per operazioni su molte risorse, la CLI vince sempre.

Ambienti Minimali

Se lavoro su un server remoto via SSH senza X forwarding, Lens non gira. k9s invece si, perche e terminal-based. Per ambienti headless, k9s e la scelta obbligata.

Cluster Enormi

Con cluster molto grandi (migliaia di pod), Lens puo diventare lento. Deve fetchare e renderizzare tutte quelle risorse. La CLI scala meglio perche puoi filtrare lato server.

Configurare Cluster Multipli

Il caso d'uso dove Lens brilla di piu e la gestione multi-cluster. Se lavori con piu ambienti (dev, staging, prod) o piu clienti, avere tutto in un posto e comodo.

Ogni cluster appare nella sidebar. Puoi raggrupparli in categorie (per cliente, per ambiente, come preferisci). Il colore del tema puo essere diverso per cluster — io uso rosso per prod, cosi non faccio cazzate per sbaglio.

Per aggiungere un cluster, basta che sia nel tuo kubeconfig. Se usi kubeconfig separati, puoi importarli da File > Add Cluster.

# Esempio: aggiungere un cluster da file separato
# In Lens: File > Add Cluster > seleziona il file

Estensioni Utili

Lens supporta estensioni. Alcune che uso:

Lens Resource Map — visualizza le relazioni tra risorse come un grafo. Utile per capire architetture complesse.

Starboard — integrazione con lo scanner di sicurezza Starboard. Mostra vulnerabilita direttamente in Lens.

Prometheus — se hai Prometheus nel cluster, puoi vedere metriche direttamente dall'interfaccia.

Le estensioni si installano da File > Extensions. Non ce ne sono migliaia, ma quelle che ci sono sono generalmente utili.

Lens vs k9s: Quando Usare Cosa

La domanda che mi fanno sempre: "Ma allora k9s o Lens?"

Risposta onesta: entrambi, per cose diverse.

Uso Lens quando:

  • Devo esplorare un cluster nuovo e capire cosa c'e
  • Debug di problemi che richiedono vedere molte cose insieme
  • Demo o pair programming (l'interfaccia grafica e piu facile da seguire per altri)
  • Log di pod multi-container
  • Lavoro con cluster multipli e salto spesso tra uno e l'altro

Uso k9s quando:

  • Sono in SSH su un server remoto
  • Operazioni veloci dove so gia cosa fare
  • Ambiente con risorse limitate
  • Preferisco non togliere le mani dalla tastiera

Uso kubectl quando:

  • Scripting e automazione
  • Operazioni bulk
  • Cose che non richiedono esplorazione

Non c'e una risposta giusta. Sono strumenti diversi che fanno cose simili in modi diversi. Avere entrambi nel toolkit non fa male.

Tips e Shortcuts

Qualche trucco che ho imparato:

Ctrl/Cmd + P — Quick open, cerca qualsiasi risorsa nel cluster. Come Cmd+P in VSCode.

Ctrl/Cmd + Shift + P — Command palette. Accedi a funzionalita senza navigare nei menu.

F5 — Refresh. A volte Lens non aggiorna automaticamente, questo forza un refresh.

Doppio click su un pod — Apre i dettagli. Piu veloce che navigare nei menu.

Tasto destro ovunque — Menu contestuale con azioni rilevanti. Shell, logs, edit, delete, etc.

Nelle Preferences puoi configurare il tema (scuro e default e lo consiglio), il terminale preferito per la shell, e varie altre cose. Vale la pena esplorare le opzioni.

Problemi Comuni

Lens non vede i miei cluster — Controlla che kubeconfig sia corretto e che i contesti funzionino con kubectl normale. Se kubectl funziona e Lens no, prova a riavviare Lens o reimportare il kubeconfig.

Lens e lento — Con cluster grandi succede. Prova a disabilitare le metriche nelle impostazioni del cluster, o usa i filtri per vedere solo i namespace che ti interessano.

I log non si aggiornano — A volte il live streaming dei log si blocca. Click su refresh o chiudi e riapri la vista log.

Errori di permessi — Lens usa le stesse credenziali di kubectl. Se non hai permessi per vedere certe risorse, Lens mostrera errori. Non e un bug di Lens, sono i tuoi RBAC.

Conclusione

Lens non sostituisce la CLI. Niente lo fa. Ma e un ottimo complemento per certi task, specialmente esplorazione e debug.

Se gestisci cluster Kubernetes quotidianamente, provalo. E gratuito, si installa in un minuto, e nel peggiore dei casi lo disinstalli. Nel migliore dei casi, diventa parte del tuo workflow e ti fa risparmiare tempo.

Non aspettarti magia. E uno strumento, non una soluzione. Ma e uno strumento ben fatto, e questo conta.

Il tool migliore e quello che usi. Se preferisci la CLI pura, va benissimo. Se Lens ti aiuta, usalo.