we can use kubeconfig configuration file to store information about different clusters, users, namespaces, and authentication mechanisms.
Table of Contents
Understanding kubeconfig
A context element in a kubeconfig file is used to group access parameters under a convenient name.
Each context has three parameters: cluster, namespace, and user. By default, the kubectl command-line tool uses parameters from the current context to communicate with the cluster.
Such configuration files are referred to as kubeconfig files.
Get Your Free Linux training!
Join our free Linux training and discover the power of open-source technology. Enhance your skills and boost your career! Learn Linux for Free!Note that kubeconfig is a generic way to refer to kubectl configuration files and that it is not the name of the config file.
kubectl uses such files to store the information needed for us to choose a cluster and communicate with its API server.
By default, kubectl looks for the file in the $HOME/.kube directory. In most scenarios, we can specify a KUBECONFIG environment variable or use the –kubeconfig flag to specify the kubeconfig files. Those files are usually saved in $HOME/.kube/config.
If we are using kubectl, here’s the preference that takes effect while determining which kubeconfig file is used.
- use –kubeconfig flag, if specified
- use KUBECONFIG environment variable, if specified
- use $HOME/.kube/config file
Show Merged kubeconfig settings
kubectl config view
We can use multiple kubeconfig files at the same time and view merged config
KUBECONFIG=~/.kube/config:~/.kube/kubconfig2
kubectl config view
Alternatively, we can also use the following command:
cat $HOME/.kube/config
Use kubectl config to Get the password for the e2e user
kubectl config view -o jsonpath='{.users[?(@.name == “e2e”)].user.password}’
display the first user
kubectl config view -o jsonpath='{.users[].name}’
get a list of users
kubectl config view -o jsonpath='{.users[*].name}’ #
Use kubectl config to Display list of contexts
A context is a set of information that we need to access a cluster. It contains the name of the cluster, the user, and the namespace.
display the current-context
kubectl config current-context
set the default context to my-cluster-name
kubectl config use-context my-cluster-name
Use kubectl config to add a new user
kubectl config set-credentials kubeuser/foo.kubernetes.com –username=kubeuser –password=kubepassword
permanently save the namespace for all subsequent kubectl commands in that context
kubectl config set-context –current –namespace=ggckad-s2
set a context utilizing a specific username and namespace.
kubectl config set-context gce –user=cluster-admin –namespace=foo && kubectl config use-context gce
use kubectl config to delete user foo
kubectl config unset users.foo
kubectl config command
kubectl – kubectl controls the Kubernetes cluster manager
kubectl config current-context – Displays the current-context
kubectl config set – Sets an individual value in a kubeconfig file
kubectl config set-cluster – Sets a cluster entry in kubeconfig
kubectl config set-context – Sets a context entry in kubeconfig
kubectl config set-credentials – Sets a user entry in kubeconfig
kubectl config unset – Unsets an individual value in a kubeconfig file
kubectl config use-context – Sets the current-context in a kubeconfig file
kubectl config view – isplays merged kubeconfig settings or a specified kubeconfig file.