KubeConfig
KubeConfig file is used by kubectl command to access kubernetes clusters. This file is usually present at path $HOME/.kube/config, however we can specify custom config file using flag --kubeconfig as shown below.
kubectl --kubeconfig=config get pods
Contents of KubeConfig
It mainly has three sections:
apiVersion: v1
kind: Config
clusters:
users:
contexts:clusters array lists all the clusters. users list all the users and contexts all the contexts.
Following shows a simple KubeConfig file,
custom-config.yaml
apiVersion: v1
kind: Config
clusters:
- cluster:
server: https://127.0.0.1:32801
certificate-authority: /path/ca.crt
name: kube
users:
- name: kube-ser
user:
client-certificate: /path/client.crt
client-key: /path/client.key
contexts:
- name: kube
context:
cluster: kube
user: kube-user
current-context: kubeThis file can then be used by kubectl command.
We can view the config using command kubectl config view. There are some more useful subcommands in kubectl config.
While we can provide path to certificates and key as shown in above sample config file, the certificates data can be used instead by appending -data to the field such as certificate-authority-data, client-certificate-data etc.
Note
To access kubernetes using api, we also need to provide these certificates information as
curl https://127.0.0.1:32801/api/v1/serviceaccounts/ \ --key /home/nitin/.minikube/profiles/kube/client.key \ --cert /home/nitin/.minikube/profiles/kube/client.crt \ --cacert /home/nitin/.minikube/ca.crt