Kubernetes: Kubeconfig File
The
kubeconfig
file is used to access Kubernetes clusters and is primarily used bykubectl
to authenticate and access the cluster. It contains three main sections: clusters, users, and contexts, which define cluster-specific details, authentication details, and the environment for interacting with the cluster. The default path for thekubeconfig
file is$HOME/.kube/config
, but it can be specified using the--kubeconfig
flag. The file does not need to be created usingkubectl create -f <kubeconfig_file>
command; once created, it is read by kubectl when accessing the cluster.
Table of Contents
· Kubeconfig File
∘ Kubeconfig file path
· Kubeconfig with YAML
· kubectl create -f <kubeconfig_file>?
· Config Commands
Are you tired of typing long command-line arguments like ca.crt, user.crt, and user.key every time you want to access a Kubernetes cluster using kubectl
or curl
commands? Fear not, kubeconfig
is here to save the day! With kubeconfig
, you can simply run your kubectl
or curl
commands and let them access the required values from the configuration file. This not only saves your time but also eliminates the risk of making errors when typing long and complicated arguments. So, say goodbye to tedious and repetitive typing and let kubeconfig
do the heavy lifting for you!
Kubeconfig File
The name
kubeconfig
is a generic term used to refer to configuration files used to access Kubernetes clusters. Therefore, it is not necessary to name the filekubeconfig
.
The kubeconfig
file serving as a configuration file that defines how to connect to a Kubernetes cluster. It is primarily used by kubectl
, the official Kubernetes command-line tool, to authenticate and access the cluster.
The file contains three main sections, clusters, users, and contexts, each with its own specific information:
- clusters
Define the Kubernetes cluster being accessed, including the API server URL, certificate authorities, and other cluster-specific details. - users
Provide the authentication details for the existing user or application accessing the Kubernetes cluster. This can include a username and password, client certificates, or authentication tokens. - contexts
Define the environment for the user or application interacting with the Kubernetes cluster. It specifies the cluster being accessed, the user credentials being used, and the namespace being targeted. Multiple contexts can be defined in thekubeconfig
file, allowing for easy switching between different environments or clusters.
Kubeconfig file path
By default, kubectl
looks for the kubeconfig
file at the path $HOME/.kube/config
. However, it is possible to specify a different kubeconfig
file using the --kubeconfig
flag when running Kubernetes commands.
For example, to use a kubeconfig
file located at /path/to/kubeconfig
, you would run a command like this:
kubectl --kubeconfig=path/to/kubeconfig get pods
Kubeconfig with YAML
config example
apiVersion: v1
kind: Config
clusters:
- name: production
cluster:
server: https://production.example.com
certificate-authority: /path/to/production/ca.crt
- name: development
cluster:
server: https://development.example.com
certificate-authority: /path/to/development/ca.crt
- name: test
cluster:
server: https://test.example.com
certificate-authority: /path/to/test/ca.crt
contexts:
- name: production
context:
cluster: production
user: prod-user
- name: development
context:
cluster: development
user: dev-user
- name: test
context:
cluster: test
user: test-user
current-context: production
users:
- name: prod-user
user:
client-certificate: /path/to/production/prod-user.crt
client-key: /path/to/production/prod-user.key
- name: dev-user
user:
client-certificate: /path/to/development/dev-user.crt
client-key: /path/to/development/dev-user.key
- name: test-user
user:
client-certificate: /path/to/test/test-user.crt
client-key: /path/to/test/test-user.key
The current-context
specifies which context should be used by default when kubectl
is run.
You can also specify which namespace to be used for a particular context within context definition.
contexts:
- name: development
context:
cluster: development
user: dev-user
namespace: <desired_namespace>
kubectl create -f <kubeconfig_file>?
There is no need to use the kubectl create -f <kubeconfig_file>
command to create the kubeconfig
file. Once the file is created, it is left as-is, and the kubectl
command reads the required values from it when accessing the Kubernetes cluster.
Config Commands
- Display the current configuration in the
kubeconfig
file
$ kubectl config view
2. Display the configuration in the specified kubeconfig
file
$ kubectl config view --kubeconfig=<path_to_kubeconfig>
3. Set the current context to the specified context
Allow you to easily switch between different environments or clusters
$ kubectl config use-context <context_name>
4. Retrieve the specified kubeconfig
file and displays relevant cluster information
$ kubectl cluster-info --kubeconfig <path_to_kubeconfig>
These are my personal notes for CKA exam preparation on Kubernetes. Please feel free to correct me if you notice any errors. 😊
Reference: