Contents

Kubernetes KubeConfig

KubeConfig Structure

KubeConfig File

1
cd ~/.kube/config
1
2
3
4
5
6
7
8
# Cluster Server
--server my-kube-playground:6443
# User Key
--client-key admin.key
# User Certificate
--client-certificate admin.crt
# Cluster Certificate Authority
--certificate-authority ca.crt

KubeConfig YAML

Clusters

Clusters

Information of Clusters.

1
2
3
4
5
6
7
8
9
clusters:
  - name: cluster1
    cluster:
      certificate-authority: ca1.crt
      server: https://cluster1:6443
  - name: cluster2
    cluster:
      certificate-authority: ca2.crt
      server: https://cluster2:6443

Users

Users

Information of Users.

1
2
3
4
5
6
7
8
9
users:
  - name: user1
    user:
      client-certificate: user1.crt
      client-key: user1.key
  - name: user2
    user:
      client-certificate: user2.crt
      client-key: user2.key

Contexts

Contexts

Information of Contexts.
This is combines between Clusters and Users.
In additional, you can set specific namespace of the target cluster.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
contexts:
  - name: user1@cluster1
    context:
      cluster: cluster1
      user: user1
      namespace: dev
  - name: user2@cluster1
    context:
      cluster: cluster1
      user: user2
      namespace: prod
  - name: user2@cluster2
    context:
      cluster: cluster2
      user: user2

Current Context

Current Context

You can set current context.
Of course the value is from one of the name of contexts.

1
current-context: user1@cluster1

Show PODs

API

1
2
3
4
curl https://cluster1:6443/api/v1/pods \
  --key admin.key
  --cert admin.crt
  --cacert ca.crt
1
2
3
4
5
6
7
8
{
  "kind": "PodList",
  "apiVersion": "v1",
  "metadata": {
    "selfLink": "/api/v1/pods"
  },
  "items": []
}

Command

Options

1
2
3
4
5
kubectl get pods \
  --server https://cluster1:6443
  --client-key admin.key
  --client-certificate admin.crt
  --certificate-authority ca.crt

With KubeConfig File

1
2
# The file is '~/.kube/config`
kubectl get pods --kubeconfig config

Config in Kubernetes

View Config

1
kubectl config view

View Specific KubeConfig

1
kubectl config view --kubeconfig=my-custom-config

View Specific Context

1
kubectl config use-context user1@cluster2

Command Help

1
kubectl config -h
CommandDescription
current-contextDisplays the current-context
delete-clusterDelete the specified cluster from the kubeconfig
delete-contextDelete the specified context from the kubeconfig
get-clustersDisplay clusters defined in the kubeconfig
get-contextsDescribe one or many contexts
rename-contextRenames a context from the kubeconfig file.
setSets an individual value in a kubeconfig file
set-clusterSets a cluster entry in kubeconfig
set-contextSets a context entry in kubeconfig
set-credentialsSets a user entry in kubeconfig
unsetUnsets an individual value in a kubeconfig file
use-contextSets the current-context in a kubeconfig file
viewDisplay merged kubeconfig settings or a specified kubeconfig file

KueConfig YAML

CRT/KEY to Encoded Data in YAML

If you want to import *.crt or *.key files to a YAML file, follow below directions.

1
cat ca1.crt | base64

You have to replace Path Attribute to Data Attribute in the YAML.
Copy the result string data to a value of Data Attribute.

Path AttributeData Attribute
certificate-authoritycertificate-authority-data
client-certificateclient-certificate-data
client-keyclient-key-data
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
apiVersion: v1
kind: Config

current-context: user1@cluster1

clusters:
  - name: cluster1
    cluster:
      certificate-authority: ca1.crt
      server: https://cluster1:6443
  - name: cluster2
    cluster:
      certificate-authority: ca2.crt
      server: https://cluster2:6443

users:
  - name: user1
    user:
      client-certificate: user1.crt
      client-key: user1.key
  - name: user2
    user:
      client-certificate: user2.crt
      client-key: user2.key

contexts:
  - name: user1@cluster1
    context:
      cluster: cluster1
      user: user1
      namespace: dev
  - name: user2@cluster1
    context:
      cluster: cluster1
      user: user2
      namespace: prod
  - name: user2@cluster2
    context:
      cluster: cluster2
      user: user2