The kubectl command-line tool uses kubeconfig files(file named with – config) to find the information it needs to choose a cluster and communicate with the API server of a cluster.
Note:
A file that is used to configure access to clusters is called a kubeconfig file. This is a generic way of referring to configuration files. It does not mean that there is a file named kubeconfig.
How to set kubeconfig file to kubectl?
- Method 1 – By default, kubectl looks for a file named config in the $HOME/.kube directory.
- Method 2 – You can specify other kubeconfig files by setting the KUBECONFIG environment variable or
- Method 3 – You can specify other kubeconfig files by setting the –kubeconfig flag.
The loading order follows these rules:
- Rules 1 – If the –kubeconfig flag is set, then only that file is loaded. The flag may only be set once and no merging takes place.
- Rules 2 – If $KUBECONFIG environment variable is set, then it is used as a list of paths (normal path delimiting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the last file in the list.
- Rules 3 – Otherwise, ${HOME}/.kube/config is used and no merging takes place.
$ kubectl help config
Available Commands:
current-context Displays the current-context
delete-cluster Delete the specified cluster from the kubeconfig
delete-context Delete the specified context from the kubeconfig
get-clusters Display clusters defined in the kubeconfig
get-contexts Describe one or many contexts
rename-context Renames a context from the kubeconfig file.
set Sets an individual value in a kubeconfig file
set-cluster Sets a cluster entry in kubeconfig
set-context Sets a context entry in kubeconfig
set-credentials Sets a user entry in kubeconfig
unset Unsets an individual value in a kubeconfig file
use-context Sets the current-context in a kubeconfig file
view Display merged kubeconfig settings or a specified kubeconfig file
Displays the kubectl config current-context command help.
$ kubectl config current-context --help
$ kubectl config view
$ kubectl config get-contexts --help
# List all the contexts in your kubeconfig file
$ kubectl config get-contexts
# Describe one context in your kubeconfig file.
$ kubectl config get-contexts my-context
$ kubectl config get-clusters --help
# List the clusters kubectl knows about
$ kubectl config get-clusters
$ kubectl config use-context --help
# Use the context for the minikube cluster
$ kubectl config use-context minikube
$ kubectl config set-cluster --help
# Set only the server field on the e2e cluster entry without touching other values.
$ kubectl config set-cluster e2e --server=https://1.2.3.4
# Embed certificate authority data for the e2e cluster entry
$ kubectl config set-cluster e2e --certificate-authority=~/.kube/e2e/kubernetes.ca.crt
# Disable cert checking for the dev cluster entry
$ kubectl config set-cluster e2e --insecure-skip-tls-verify=true
$ kubectl config set-context --help
# Set the user field on the gce context entry without touching other values
kubectl config set-context gce --user=cluster-admin
$ kubectl config set-credentials --help
$ kubectl options
--certificate-authority='': Path to a cert file for the certificate authority
--client-certificate='': Path to a client certificate file for TLS
--client-key='': Path to a client key file for TLS
--cluster='': The name of the kubeconfig cluster to use
--context='': The name of the kubeconfig context to use
--insecure-skip-tls-verify=false: If true, the server's certificate will not be checked for
validity. This will make your HTTPS connections insecure
--kubeconfig='': Path to the kubeconfig file to use for CLI requests.
--token='': Bearer token for authentication to the API server
--user='': The name of the kubeconfig user to use
--username='': Username for basic authentication to the API server
--password='': Password for basic authentication to the API server
Skeleton/Example of kube config file
I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND