iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

接著我們先來設定一個比較簡單,設完基本上就不需要再動的東西,ConfigMap & Secret ,就是跟設定相關的東西。

為什麼是叫 ConfigMap 而不是叫 Config 就好?
因為 Kubernetes 透過 Config 來設定一些東西,因此就只好改叫 ConfigMap 。

首先先來說說 ConfigMap 如何使用,如果是暫時的、少量的設定,我們可以直接使用指令來產生就OK了。

$ kubectl create configmap <configmap_name> --from-literal=key=value ...
# 範例
$ kubectl create configmap configmap-test1 --from-literal=hello=world  --from-literal=version=2.1.2

那如果要比較長期的或是大量的設定,又該如何設定呢?

Kubernetes 可以透過 YAML 文件的方式產生 ConfigMap。

config.yaml

apiVersion: v1
king: ConfigMap
metadata:
  name: config-test
data:
  key1: "value1"
  key2: "value2"

文件必須透過以下指令產生 ConfigMap 。

$ kubectl apply -f <configmap_file_name>
# 範例
$ kubectl apply -f config.yaml

然後我們就可以執行以下指令查看。

$ kubectl get configmaps
# or
$ kubectl get cm

如果需要了解詳細內容可以透過以下指令。

$ kubectl describe configmap <configmap_name>
# 範例
$ kubectl describe configmap configmap-test

如果需要將 ConfigMap 刪除可以透過以下指令

$ kubectl delete configmap <configmap_name>
# 範例
$ kubectl delete configmap configmap-test

講完了 ConfigMap ,接著就要來講 Secret 了,雖然兩者之間在使用上差異不大,不過還是需要特別說明一下。

首先 Secrets 不能使用指令直接產生,必須經由文件產生(我知道的是這樣啦,有大佬知道什麼其他方式希望可以分享給小弟知道一下)。

還有另一個差別是 Secret 的值要必須用 Base64 加密編碼(後來我知道有另一種方式可以偷懶)。

在 Linux 下可以使用以下指令取得 Base64 編碼後的結果。

$ echo -n 'value' | base64

# Sample
$ echo -n 'value1' | base64
> dmFsdWUx

取得編碼結果後,我們就可以透過以下文件生出 Secret 了。

apiVersion: v1
kind: Secret
metadata:
  name: secret-test
data:
  key1: dmFsdWUx
stringData:
  key2: value2

data -> 只接受 base64 編碼
stringdata -> 可接受 planetext ,並在建立時會自動編碼

# 產生
$ kubectl apply -f <secret_file_name>
# 範例
$ kubectl apply -f secret.yaml

# 列出
$ kubectl get secrets

# 詳細資料
$ kubectl describe secret <secret_name>
# 範例
$ kubectl describe secret secret-test

各位可以注意到 Secret 是不會顯示出值的,因此相當適合儲存私密的設定。

詳細設定可參考官方文件 ConfigMapSecret

那麼就先到這邊,基本的設定就大概這樣,明天會介紹基本的執行單元,並且套用今天的 ConfigMap 或 Secret 。

大家掰~掰~


上一篇
Day 15 Namespace, Label & Annotations
下一篇
Day 17 Pod
系列文
30天漫遊雲端之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言