K8S基本操作-30-多個 Cluster 與 KubeConfig
Config不等於Config Map
KubeConfig
為何要使用 KubeConfig ?
由於如果每次使用 kubectl 指令時,都要附上長串的使用者/密碼/憑證路徑,對維運效率的十分有影響的。
如果可以 “預先寫好使用者/憑證/伺服器IP網址” ,然後一個簡單的指令馬上進行切換,就開始用 kubectl ,在本機如同遠端,這該有多好?
這個就是 KubeConfig 可以做到的。
Config
不同 Config 可以用在管理不同 Cluster,並且給予不同的設定與認證金鑰路徑。
以下是個 Config 的範例:
apiVersion: v1
kind: Config
preferences: {}
current-context: development
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: test
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: test
namespace: default
user: experimenter
name: exp-test
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
# 不建議將密碼明文儲存
password: some-password
username: exp
我們可以注意到,其中定義了開發與生產兩種不同Cluster。
並且有不同 Context。
可以用以下指令切換不同 Cluster:
kubectl config use-context <context名稱>
例如:
kubectl config use-context dev-frontend
檢視 Config 的指令
kubectl config view
實際上 Config 看起來像這樣
-
我們觀察以下的 Cluster,除了名字與IP與網址Port以外, CA 憑證也是在此處設置的。
-
接著是 User ,我們得知 User 名稱是 Admin 是管理員,同時使用者要登入通常也是採取 .crt 與 .key 憑證與鑰匙。
-
Context 就可以選擇 admin@production 生產環境管理員,在此處就可以使用 Cluster 與 User 還有 Namespace ,來進行登入了。
-
我們可以預設採用
admin@production
,用以下這行current-context: admin@production
。
這個檔案一般位置在 $HOME/.kube/config
, kubectl 會自動讀取此設置。
$HOME/.kube/config
apiVersion: v1
kind: Config
current-context: admin@production
clusters:
- name: production
cluster:
certificate-authority: /etc/kubernetes/pki/ca.crt
server: https://172.17.0.51:6443
users:
- name: admin
user:
client-certificate: /etc/kubernetes/pki/users/admin.crt
client-key: /etc/kubernetes/pki/users/admin.key
contexts:
- name: admin@production
context:
cluster: production
user: admin
namespace: finance
使用 Context :
kubectl config use-context admin@production