k8s入門之ConfigMap(九)

景少發表於2022-04-28

ConfigMap是k8s的配置管理工具,通常用來儲存明文的配置資訊,以key-value形式傳遞配置。

一、使用命令建立ConfigMap物件

1.通過--from-literal引數建立

kubectl create configmap mycm1 --from-literal=appid=order-app --from-literal=appsecret=dfdg12342

(1)檢視建立結果

kubectl get secret

(2)使用describe命令檢視詳情

kubectl describe secret mysecret1

(3)輸出yaml檔案格式檢視詳情

kubectl get secret mysecret1 -o yaml

2.通過已有的應用配置檔案建立

(1)建立一個應用的配置檔案

vi appsettings.json

(2)寫入以下測試內容

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

(3)使用--from-file引數指定該檔案

kubectl create cm mycm2 --from-file=appsettings.json

--from-file可以使用多次;也可以使用目錄,表示該目錄下所有的配置檔案都會建立成cm物件,預設key為檔名。

(4)檢視建立結果

二、使用yaml檔案建立ConfigMap

1.建立yaml檔案

vi cm-my3.yaml

2.編寫yaml檔案內容

apiVersion: v1
kind: ConfigMap
metadata: 
  name: mycm3
data:
  ordersvc-conf: |+
    IP: "192.168.59.110"
    Port: 10000

3.執行建立命令

kubectl apply -f cm-my3.yaml

4.檢視建立結果

三、使用ConfigMap物件

1.通過環境變數的形式

liunx自帶的命令env,用來檢視當前系統的環境變數,我們可以把cm物件設定到環境變數上來檢視。

(1)新建pod物件的yaml檔案

vi mycm1-env.yaml

(2)編寫yaml檔案內容


apiVersion: v1
kind: Pod
metadata:
  name: pod-test-mycm1
spec:
  containers:
  - name: pod-test-mycm1-bb
    image: busybox
    command: ["/bin/sh", "-c", "env"]
    # 從cm物件中獲取對應key的值賦值給環境變數
    env:
    - name: APPID
      valueFrom:
        configMapKeyRef:
          name: mycm1
          key: appid
    - name: APPSECRET
      valueFrom:
        configMapKeyRef:
          name: mycm1
          key: appsecret

(3)建立pod

kubectl create -f mycm1-env.yaml

(4)檢視pod,在預設名稱空間下

通過檢視此pod的日誌,可以看到輸出的環境變數資訊是mycm1物件的資訊

2.通過vloume掛載方式

(1)新建pod物件的yaml檔案

vi mycm2-volume.yaml

(2)編寫yaml檔案內容

apiVersion: v1
kind: Pod
metadata:
  name: pod-test-mycm2
spec:
  containers:
  - name: pod-test-mycm2-bb
    image: busybox
    command: ["/bin/sh", "-c", "cat /etc/cms/my-appsettings.json"]
    volumeMounts:
    - name: cms
      mountPath: /etc/cms
  volumes:
  - name: cms
    configMap:
     name: mycm2
     items:
     # 把cm物件掛載到檔名
     - key: appsettings.json
       path: my-appsettings.json

(3)建立pod

kubectl create -f mycm2-volume.yaml

(4)檢視pod,在預設名稱空間下

通過檢視此pod的日誌,可以看到輸出的資訊是mycm2物件中的資料

相關文章