Configuring kubeconfig
In order for kubectl to find and access a Kubernetes cluster, it needs a kubeconfig file.
Check that kubectl is properly configured by getting the cluster state:
$ kubectl cluster-info
If you see the connection refused to the cluster, then either kubectl is not configured correctly or docker is not up.
To check whether it is configured properly, use:
$ kubectl cluster-info dump
Basic Structure
A configuration file describes clusters, users, and contexts. By default, kubectl configuration is located at ~/.kube/config
.
apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
name: development
- cluster:
name: scratch
users:
- name: developer
- name: experimenter
contexts:
- context:
name: dev-frontend
- context:
name: dev-storage
- context:
name: exp-scratch
Define Clusters, Users, and Contexts
Add cluster details
$ kubectl config --kubeconfig=config-demo set-cluster development --server=https://1.2.3.4 --certificate-authority=fake-ca-file
$ kubectl config --kubeconfig=config-demo set-cluster scratch --server=https://5.6.7.8 --insecure-skip-tls-verify
Add user details
$ kubectl config --kubeconfig=config-demo set-credentials developer --client-certificate=fake-cert-file --client-key=fake-key-seefile
$ kubectl config --kubeconfig=config-demo set-credentials experimenter --username=exp --password=some-password
Add context details
$ kubectl config --kubeconfig=config-demo set-context dev-frontend --cluster=development --namespace=frontend --user=developer
$ kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=development --namespace=storage --user=developer
$ kubectl config --kubeconfig=config-demo set-context exp-scratch --cluster=scratch --namespace=default --user=experimenter
Add Credentials
# add a new user to your kubeconf that supports basic auth
$ kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword
View Configuration
$ kubectl config view
$ kubectl config get-clusters
$ kubectl config get-contexts
$ kubectl config get-users
Change current context
$ kubectl config use-context dev-frontend
View configs only for the current context
$ kubectl config view --minify
Remove Configuration
$ kubectl --kubeconfig=config-demo config unset clusters.<name>
$ kubectl --kubeconfig=config-demo config unset contexts.<name>
$ kubectl --kubeconfig=config-demo config unset users.<name>
References
Last update:
February 16, 2023