kubernetes配置文件熱更新細節


Secret與ConfigMap都是kubernetes用於文件配置的調用對象,細微的區在於Secret存儲敏感信息,例如密碼,OAuth token和SSH key等等,Secret更加安全和靈活。平時調用的時候也沒有在乎配置文件是否熱更新的問題,所以專門測試記錄。

1.ConfigMap測試
Configmap使用有兩種方式,一種是env系統變量賦值,一種是volume掛載賦值,以下為ConfigMap的yaml文件,創建了三個數據對,並為configmap取名為info。

apiVersion: v1
kind: ConfigMap
metadata:
  name: info
data:
  name: leo_zhou
  sex: m
  city: chengdu

創建deployment,並且調用configmap

apiVersion: apps/v1
kind: Deployment
metadata:
  name: busybox
spec:
  selector:
    matchLabels:
      app: busybox
  replicas: 1
  template:
    metadata:
      labels:
        app: busybox
    spec: 
      containers: 
      - image: library/busybox:latest
        name: busybox
        args:
        - /bin/sh
        - -c
        - sleep 10; touch /tmp/healthy; sleep 30000
        env:
          - name: city
            valueFrom:
              configMapKeyRef:
                name: info
                key: city
        volumeMounts:
        - name: etc
          mountPath: "/data"
          readOnly: true
      volumes:
      - name: etc
        configMap:
          name: info
          items:
          - key: name
            path: xxx
          - key: sex
            path: yyy

①env方式調用city獲取數據值
②volume方式調用name和sex值
創建完畢后進入容器,檢查賦值情況

更新configmap的yaml文件,city修改為beijing,sex為f,重新進入剛才的容器進行測試

發現env寫入系統的configmap是不會熱更新的,而volume寫入的方式支持熱更新!

2.Secret測試
Secret同樣使用有兩種方式,一種是env系統變量賦值,一種是volume掛載賦值,以下為Secret的yaml文件,創建了三個數據對,並為Secret取名為sc,需要注意的是只支持base64的字符串,普通的字符不能在配置文件種,不然會報錯!

echo -n 'chengdu' | openssl base64
Y2hlbmdkdQ==
#需要用openssl base64轉換字符

name:leo_zhou
sex:m
city:chengdu

apiVersion: v1
kind: Secret
metadata:
  name: sc
data:
  name: bGVvX3pob3U=
  sex: bQ==
  city: Y2hlbmdkdQ==

創建deployment,並且調用secret

apiVersion: apps/v1
kind: Deployment
metadata:
  name: busybox-2
spec:
  selector:
    matchLabels:
      app: busybox-2
  replicas: 1
  template:
    metadata:
      labels:
        app: busybox-2
    spec:
      containers:
      - image: library/busybox:latest
        name: busybox-2
        args:
        - /bin/sh
        - -c
        - sleep 10; touch /tmp/healthy; sleep 30000
        env:
          - name: city
            valueFrom:
              secretKeyRef:
                name: sc
                key: city
        volumeMounts:
        - name: etc
          mountPath: "/data"
          readOnly: true
      volumes:
      - name: etc
        secret:
          secretName: sc
          items:
          - key: name
            path: xxx
          - key: sex
            path: yyy

創建完畢后進入容器,檢查賦值情況


更新secret的yaml文件,city修改為beijing,sex為f,重新進入剛才的容器進行測試。

同樣發現env寫入系統的secret是不會熱更新的,而volume寫入的方式支持熱更新!所以以后在需要更新文件配置時需要區分進行判斷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM