kubectl config în Kubernetes (kubectl)

Gestionează fișierul kubeconfig: clustere, utilizatori, contexte și namespace-ul implicit.

Sintaxă comandă
kubectl config subcomandă [argumente] [opțiuni]

Ce face kubectl config

Comanda kubectl config citește și modifică fișierul kubeconfig (implicit ~/.kube/config), în care sunt definite clusterele la care te poți conecta, utilizatorii (credențialele) și contextele. Un context este o combinație „cluster + utilizator + namespace implicit” căreia îi dai un nume, de exemplu productie sau kind-dev.

Când lucrezi cu mai multe clustere (dezvoltare, staging, producție), schimbi între ele cu kubectl config use-context. Toate comenzile kubectl ulterioare vor merge către clusterul contextului curent, așa că este bine să verifici mereu unde ești cu kubectl config current-context înainte de operații riscante.

Poți folosi mai multe fișiere kubeconfig simultan prin variabila de mediu KUBECONFIG (căi separate prin : pe Linux/macOS), iar kubectl config view îți arată rezultatul combinat, cu secretele ascunse.

Opțiuni și argumente

Opțiune / Parametru Descriere
get-contexts Listează toate contextele; cel curent este marcat cu * în coloana CURRENT.
current-context Afișează numele contextului activ.
use-context NUME Schimbă contextul activ (scrie current-context în kubeconfig).
set-context --current --namespace=NS Setează namespace-ul implicit pentru contextul curent, ca să nu mai scrii -n NS la fiecare comandă.
view [--minify] [--raw] Afișează configurația combinată; --minify doar pentru contextul curent, --raw include și certificatele/tokenurile.
rename-context VECHI NOU Redenumește un context.
delete-context NUME Șterge un context din kubeconfig (clusterul în sine nu este afectat).
--kubeconfig=FIȘIER Opțiune globală: folosește alt fișier kubeconfig decât cel implicit.

Exemple

Exemplul 1: Listarea și schimbarea contextelor

Vedem ce clustere avem configurate și trecem pe clusterul de staging.

kubectl config get-contexts
kubectl config use-context staging
kubectl config current-context

Ieșire în terminal

CURRENT   NAME         CLUSTER      AUTHINFO       NAMESPACE
*         kind-dev     kind-dev     kind-dev
          productie    prod-eks     admin-prod     shop
          staging      staging-gke  dev-user       default
Switched to context "staging".
staging

Exemplul 2: Setarea namespace-ului implicit

După această comandă, kubectl get pods va lista pod-urile din namespace-ul shop fără să mai fie nevoie de -n shop.

kubectl config set-context --current --namespace=shop
kubectl config view --minify -o jsonpath='{..namespace}'

Ieșire în terminal

Context "staging" modified.
shop

Exemplul 3: Combinarea a două fișiere kubeconfig

Variabila KUBECONFIG permite folosirea temporară a mai multor fișiere; cu --flatten le poți salva într-unul singur.

export KUBECONFIG=~/.kube/config:~/Downloads/client-cluster.yaml
kubectl config get-contexts -o name
kubectl config view --flatten > ~/.kube/config-combinat

Ieșire în terminal

kind-dev
productie
staging
client-prod

Greșeli frecvente

  • Rularea unei comenzi distructive (delete, drain) fără a verifica întâi contextul curent. Afișează contextul în promptul shell-ului sau folosește explicit --context=NUME în scripturi.
  • Confuzia dintre set-context și use-context: set-context doar modifică (sau creează) un context, nu îl activează.
  • Partajarea fișierului kubeconfig obținut cu view --raw: acesta conține certificate și tokenuri de acces care trebuie tratate ca parole.

Comenzi înrudite

  • kubectl cluster-info: Afișează adresa API server-ului și a serviciilor principale din cluster.
  • Obiectul Namespace: Împarte un cluster fizic în sub-clustere logice izolate pe echipe, proiecte sau medii.
  • kubectl get: Listează una sau mai multe resurse, într-un tabel sau în format YAML/JSON.