Come cambiare rapidamente i contesti Kubernetes con Kubectx e Kubens

0
136

Kubectx e Kubens sono due strumenti che accelerano la tua esperienza di gestione di Kubernetes. Risolvono alcune delle carenze di Kubectl rendendo più rapido e conveniente il passaggio da un ambiente cluster all'altro.

Entrambi i comandi sono sviluppati dallo stesso autore e raggruppati in un unico pacchetto. Kubectx cambia il contesto Kubernetes attivo. Questa è la combinazione di URL del server e credenziali utente che definiscono il cluster a cui sei connesso. Kubens passa da uno spazio dei nomi all'altro all'interno di quel cluster.

Perché sono utili?

Il passaggio da un cluster all'altro usando Kubectl semplice può essere complicato. Sebbene lo strumento supporti un paio di metodi per il cambio di configurazione, non sono particolarmente veloci o intuitivi per questo caso d'uso.

Un modo consiste nel creare un file di configurazione separato per ciascuno dei tuoi cluster. È quindi possibile impostare la variabile di ambiente KUBECONFIG per passare da una all'altra:

$ KUBECONFIG=~/.kube/cluster-1.yml # Ottiene i pod nel cluster-1 $ kubectl get pods

Ciò richiede la memorizzazione del nome e del percorso di ciascuno dei file di configurazione. Non ti aiuta nemmeno a definire gli spazi dei nomi, quindi devi utilizzare il flag –namespace di Kubectl per sovrascrivere il valore predefinito con ogni comando.

Kubectl offre anche un'esperienza di gestione del contesto integrata. Ciò consente di definire più cluster e credenziali utente in un unico file di configurazione. Puoi emettere comandi kubectl per passare da uno all'altro.

apiVersion: cluster v1: – cluster: nome: demo-cluster insecure-skip-tls-verify: true server: https://127.0.0.1 utenti: – nome: demo user: client-certificate: /path/to/cert client -key: /percorso/di/chiavi contesti: – contesto: nome: demo-cluster-ns-1 cluster: demo-cluster utente: demo namespace: first-namespace – contesto: nome: demo-cluster-ns-2 cluster: utente demo-cluster: spazio dei nomi demo: secondo spazio dei nomi

Questo file di configurazione imposta due contesti. Entrambi si connettono allo stesso cluster utilizzando un unico set di credenziali. I contesti sono configurati per utilizzare spazi dei nomi diversi all'interno del cluster.

# Ottiene i pod nel primo spazio dei nomi all'interno del cluster demo $ kubectl config use-context demo-cluster-ns-1 $ kubectl get pods # Ottiene i pod nel secondo- spazio dei nomi all'interno del cluster demo $ kubectl config use-context demo-cluster-ns-2 $ kubectl get pods

Questa è un'esperienza più snella, ma è ancora relativamente dettagliata. Kubectx e Kubens astraggono tutta la complessità, fornendo semplici comandi brevi per cambiare rapidamente contesti e spazi dei nomi.

# Ottiene i pod nel primo spazio dei nomi all'interno del cluster demo $ kubectx demo-cluster-ns-1 $ kubectl get pods # Sostituisce lo spazio dei nomi del contesto per ottenere i pod nel secondo spazio dei nomi $ kubens secondo spazio dei nomi $ kubectl get pods

Installazione degli strumenti

Kubectx e Kubens sono distribuiti in diversi formati. Puoi scaricare semplici binari precompilati dalla pagina delle versioni di GitHub del progetto, installarli dai repository di pacchetti Apt, Pacman o Homebrew o utilizzare il gestore di plug-in di Kubectl, Krew. Ci concentreremo su Krew perché è un buon modo per lavorare con tutti i tuoi accessori Kubectl.

Assicurati di avere Krew installato e di poter usare il comando kubectl krew. Puoi aggiungere Krew al tuo sistema utilizzando lo script di installazione sul sito Web del progetto.

Avanti, usa Krew per installare i componenti Kubectx e Kubens:

# Kubectx $ kubectl krew install ctx # Kubens $ kubectl ha installato ns

Puoi facoltativamente abilitare il supporto per il completamento della shell per Bash, Fish e Zsh eseguendo gli script pertinenti forniti nel file README del progetto.

Kubectl e Kubens sono anche compatibili con fzf per generare menu interattivi con fuzzy supporto per la ricerca. Questa integrazione viene abilitata automaticamente quando hai fzf nel tuo PERCORSO. Puoi disattivarlo impostando la variabile di ambiente KUBECTX_IGNORE_FZF su 1.

Cambiare i contesti

Il comando Kubectx viene utilizzato per cambiare i contesti Kubectl disponibili. Prende il nome del contesto di destinazione come unico parametro. I contesti devono già esistere nel tuo file di configurazione Kubectl attivo. Usa i normali comandi di configurazione di kubectl per creare i tuoi contesti prima di usare il comando.

# Passa a first-context $ kubectx first-context $ kubectl get pods

kubectx è un wrapper di kubectl config use-context. Il contesto sarà preso di mira da tutti i successivi comandi Kubectl finché non ne selezioni uno diverso con kubectx o kubectl.

Kubectx accetta – come nome del contesto per tornare rapidamente al contesto precedentemente selezionato. Questo corrisponde al comportamento di strumenti CLI familiari come cd e git, rendendo più facile lavorare con più contesti contemporaneamente.

$ kubectx first $ kubectx second $ kubectx – # Ottiene i pod nel primo contesto $ kubectl get pods

Kubectx può anche creare alias per i tuoi contesti. Questi ti consentono di fare riferimento a nomi di contesto descrittivi utilizzando un tag più conveniente.

$ kubectx production=gce-web-app-production-2022 # Passa a gce-web-app-production-2022 $ kubectx production $ kubectl get pods

Modifica degli spazi dei nomi

kubens passa da uno spazio dei nomi all'altro. Ha lo stesso effetto della modifica dello spazio dei nomi del contesto attivo. I comandi Kubectl verranno eseguiti sullo spazio dei nomi specificato, all'interno del contesto attualmente selezionato.

$ kubectx production $ kubens api # Ottiene i pod nello spazio dei nomi “api” del contesto “produzione” $ kubectl get pods

Analogamente a kubectx, puoi usare – per tornare al tuo spazio dei nomi precedente:

$ kubens –

Migrazione a Kubectx e Kubens da KUBECONFIG

I contesti Kubectl, Kubectx e Kubens funzionano al meglio quando memorizzi tutti i tuoi contesti e cluster in un unico file Kubeconfig. Di solito si trova in ~/.kube/config. Se in precedenza hai lavorato con più file di configurazione, puoi unirli insieme utilizzando Kubectl:

# Fai riferimento a tutti i tuoi file di configurazione in modo che Kubectl li carichi tutti $ export KUBECONFIG=~/.kube/cluster-1:~/.kube/cluster-2:~/.kube/cluster-3 # Salva una versione unita della configurazione corrente in un nuovo file $ kubectl config view –flatten > ~/.kube/.config

Inserendo i tuoi contesti in un singolo ~/.kube/config li rende tutti disponibili per kubectx e kubens. Puoi smettere di usare KUBECONFIG per destreggiarti manualmente tra più file.

Quando aggiungi un nuovo cluster al tuo parco istanze, puoi combinare il suo file di configurazione con quello esistente usando una variazione della sequenza mostrata sopra:

$ export KUBECONFIG=~/.kube/config:~/new-config- file $ kubectl config view –flatten > ~/.kube/.config

Un'alternativa più semplice è il file manager konfig config, disponibile come plugin Kubectl tramite Krew. Ciò include un comando di importazione che unisce automaticamente un nuovo file di configurazione in quello che Kubectl sta attualmente utilizzando:

$ kubectl krew install konfig $ kubectl konfig import -s ~/new-config-file

Riepilogo

Kubectx e Kubens sono due utili utilità per ottimizzare la tua esperienza con Kubectl. Sebbene i contesti Kubectl siano adeguati per un uso occasionale, tendono comunque a sembrare goffi quando si cambia rapidamente tra gli ambienti. Kubectx e Kubens ti aiutano a ispezionare diversi cluster e namespace senza essere ostacolato da lunghi comandi da terminale.

Il fascino di questi strumenti risiede nella loro semplicità. Aggiungono anche alcune funzionalità uniche oltre a Kubernetes’ gestione del contesto, come il backtracking rapido con – e l'aliasing del contesto per abbreviare i nomi lunghi.

LEGGI SUCCESSIVO

  • › “Atari era molto, molto difficile” Nolan Bushnell su Atari, 50 anni dopo
  • › Recensione PrivadoVPN: sconvolgere il mercato?
  • › Questi gadget scacciano le zanzare
  • › I 10 migliori film originali Netflix del 2022
  • › Quanto costa ricaricare una batteria?
  • › Quanto lontano può arrivare un'auto elettrica con una sola carica?