Come semplificare la gestione di Kubernetes con i contesti Kubectl

0
133

I contesti Kubectl sono un meccanismo per passare rapidamente tra diversi cluster, utenti e spazi dei nomi all'interno della CLI. Semplificano lo spostamento tra più ambienti senza modificare il file di configurazione di Kubectl attivo.

In questo articolo, mostreremo come utilizzare Kubectl per creare, gestire e selezionare contesti diversi. Assicurati di aver installato Kubectl prima di continuare.

Che cos'è un contesto?

I contesti incapsulano la raccolta di impostazioni che consentono una connessione riuscita a un cluster Kubernetes. Un contesto può includere l'URL del cluster, un set di credenziali utente e lo spazio dei nomi di destinazione per impostazione predefinita.

In assenza di contesti, gli ambienti Kubernetes univoci vengono spesso gestiti creando un file di configurazione separato per ciascuno. Utilizzare quindi il flag –kubeconfig o la variabile di ambiente KUBECONFIG per caricare il file corretto ogni volta che si utilizza Kubectl:

$ export KUBECONFIG=.kube/cluster-1-user-1.yaml $ kubectl get pods

I contesti ti consentono di condensare i dettagli di tutti i tuoi ambienti in un unico file di configurazione. Puoi utilizzare il .kube/config predefinito per ciascuno dei tuoi cluster, eliminando i flag CLI e le variabili di ambiente. Kubectl include comandi per cambiare il suo contesto attivo tra le opzioni che hai creato.

Preparazione per i contesti

I contesti vengono gestiti utilizzando il gruppo di comandi kubectl config. Come per tutto il resto in Kubectl, l'elenco dei contesti disponibili verrà caricato e salvato nel file di configurazione attivo. Ciò è determinato da KUBECONFIG, –kubeconfig o dal .kube/config predefinito.

Per iniziare a utilizzare i contesti, devi aggiungere alcuni cluster e credenziali al tuo file di configurazione. Puoi usare altri comandi di configurazione di kubectl per impostarli:

# Crea due connessioni cluster, qa e prod $ kubectl set-cluster qa –server=https://192.168.0.1 –insecure-skip-tls-verify $ kubectl set-cluster prod –server=https://192.168 .0.2 –insecure-skip-tls-verify # Crea due coppie di credenziali $ kubectl set-credentials qa-user –username=demo –password=demoP@ss_qa $ kubectl set-credentials prod-user –username=demo password =demoP@ss_prod

Ora il tuo file di configurazione contiene i dettagli di connessione per due cluster Kubernetes separati. Contiene anche due coppie di credenziali. Successivamente creeremo un contesto per collegare i cluster alle rispettive credenziali. Potrai quindi utilizzare un comando Kubectl per passare dal QA all'ambiente di produzione.

Creazione di un contesto

Il kubectl Il comando config set-context aggiunge nuovi contesti al file di configurazione. Devi specificare un nome per il tuo contesto. Utilizza i flag del comando per fare riferimento a un cluster e a un account utente aggiunti in precedenza.

# Crea contesti per i cluster aggiunti in precedenza $ kubectl config set-context qa-context –cluster=qa –user=qa-user $ kubectl config set-context prod-context –cluster=prod –user=prod-user

A questo punto puoi eseguire il comando kubectl config view per controllare tutte le modifiche che sono state apportate al tuo file di configurazione:

apiVersion: v1 tipo: Config current-context: "" cluster: – cluster: nome: server qa: https://192.168.0.1 insecure-skip-tls-verify: true – cluster: nome: server prod: https://192.168.0.2 insecure-skip-tls-verify: true contesti: – contesto: nome: cluster qa-context: utente qa: utente qa – contesto: nome: cluster prod-context: utente prod: utenti prod-user: – nome: utente qa-utente: nome utente: password demo: demoP @ss_qa – nome: utente-prod: nome utente: password demo: demoP@ss_prod

Le definizioni del contesto puntano ad altri tipi di oggetti definiti altrove nel file di configurazione.

Selezione e utilizzo dei contesti

I contesti vengono selezionati con il comando kubectl context use-context:

$ kubectl context use-context qa-context

Il nome del contesto attivo viene memorizzato come valore del campo del contesto corrente nel file di configurazione di Kubectl. Tutti i comandi Kubectl avranno come target il cluster a cui fa riferimento il contesto selezionato.

# Si connette al cluster https://192.168.0.1 come demo:demoP@ss_qa $ kubectl get pods # Cambia il contesto attivo $ kubectl config use-context prod-context # Si collega al cluster https://192.168.0.2 come demo:demoP@ss_prod $ kubectl get pods

La possibilità di modificare rapidamente l'ambiente di destinazione all'interno di Kubectl ti aiuta a spostarti tra i cluster senza essere sopraffatto dai flag di configurazione.

Poiché il contesto selezionato persiste fino a quando non ne viene selezionato un altro, dovresti controllare che Kubectl stia prendendo di mira l'ambiente che ti aspetti prima di eseguire comandi distruttivi. Usa il comando current-context per vedere il nome del contesto selezionato:

$ kubectl config current-context prod-context

Puoi visualizzare tutti i contesti nel tuo file di configurazione attualmente caricato con get-contexts:

$ kubectl config get-contexts NOME ATTUALE CLUSTER AUTHINFO NAMESPACE qa-context qa qa-user * prod-context prod prod-user

Includere le informazioni sullo spazio dei nomi con i contesti

Finora abbiamo utilizzato i contesti per selezionare un cluster e un account utente. I contesti possono includere anche informazioni sullo spazio dei nomi. Quando a un contesto è assegnato uno spazio dei nomi, i comandi Kubectl includeranno automaticamente il flag –namespace. Puoi ancora usare –namespace manualmente per sovrascrivere lo spazio dei nomi impostato dal contesto.

$ kubectl config set-context production-api –cluster=prod –user=prod-user –namespace api $ kubectl config use -context production-api # Ottiene i pod nello spazio dei nomi “api” all'interno del cluster “prod” $ kubectl get pods

Non c'è limite al numero di contesti che puoi avere. I cluster possono apparire in più contesti, consentendoti di definire contesti separati per ciascuno dei tuoi spazi dei nomi importanti. Ciò evita la ripetizione del flag –namespace durante l'ispezione di diverse risorse nel cluster.

Rinomina ed eliminazione dei contesti

Rinomina i contesti utilizzando il comando rename-context:

$ kubectl config rename-context qa-context testing-context

Per eliminare un contesto, passa il suo nome al comando delete-context:

$ kubectl config delete-context contesto di test

Il cluster, l'utente e lo spazio dei nomi a cui fa riferimento un contesto vengono modificati ripetendo il comando set-context con lo stesso nome di contesto. Puoi anche apportare modifiche modificando manualmente il file di configurazione di Kubectl.

Rendere il cambio di contesto ancora più semplice

Kubectl’s la gestione del contesto integrata può essere sufficiente quando si passa da un cluster all'altro in modo relativamente raro. Tuttavia, se cambi costantemente cluster durante la giornata, il comando use-context, relativamente dettagliato, può iniziare a sembrare ripetitivo.

Kubectx è un plug-in Kubectl che può rendere ancora più semplici i cambi di contesto. Riduce l'utilizzo del contesto e aggiunge alcune funzionalità extra:

# Equivalente a “kubectl config use-context prod-context” $ kubectx prod-context

A seconda del flusso di lavoro, potresti voler continuare a utilizzare più Anche i file di configurazione di Kubectl. È possibile utilizzare gli alias della shell e le variabili di ambiente predefinite per impostare un flusso di lavoro personalizzato che seleziona automaticamente un file di configurazione e un contesto per ogni nuova finestra del terminale.

Riepilogo

I contesti Kubectl sono un modo per incapsulare più connessioni di cluster logici in un unico file di configurazione. A ogni contesto viene assegnato un URL del cluster, un account utente e uno spazio dei nomi. I comandi Kubectl sceglieranno come target il cluster del contesto selezionato utilizzando le credenziali di riferimento.

Puoi impostare i contesti con kubectl config set-context o modificando manualmente il tuo file .kube/config. Kubectl include anche comandi per la gestione delle connessioni del cluster con nome e degli account utente a cui puoi fare riferimento nei tuoi contesti.

READ NEXT

  • › I 10 migliori film originali Netflix del 2022
  • › T-Mobile sta vendendo la tua attività sulle app: ecco come rinunciare
  • › “Atari era molto, molto difficile” Nolan Bushnell su Atari, 50 anni dopo
  • › Quanto costa ricaricare una batteria?
  • › Revisione della scheda di acquisizione NZXT Signal 4K30: filmati di alta qualità senza perdita di dati
  • › Un mondo senza fili: 25 anni di Wi-Fi