1. 程式人生 > 其它 >Kubernetes學習記錄(七):Secret和Configmap

Kubernetes學習記錄(七):Secret和Configmap

1. Secret

加密資料並存放在etcd中,讓pod內容器以掛載volume方式訪問

應用場景:憑據、使用者名稱密碼、https證書、docker倉庫認證

 

pod使用secret的兩種方式:

  • 變數注入
  • 掛載

 

1.1 secret使用

首先建立一個secret來儲存一個常規的使用者名稱和密碼

如果我們要存放一個使用者名稱和密碼的話,也不建議直接在YAML檔案中體現,一般而言會做一個簡單的編碼,這樣在檢視資源配置的時候不至於直接輸密碼

echo -n 'admin' | base64
echo -n '1f2d1e2e67df' | base64

 

然後編寫一個最簡單的Secret資源,可以把data欄位中的值理解為key-value形式

 

建立資源

kubectl apply -f secret_var.yaml

 

如果想要以變數注入的形式來讓pod使用這個使用者名稱和密碼,我們需要在建立pod的YAML檔案中選擇使用env欄位

valueFrom指明這個變數值來自於哪個資源,secretKeyRef表示這個值來自於名為mysecret的secret資源,key為username

這樣就完成了username和password的變數注入,而在容器中就可以使用SECRET_USERNAME和SECRET_PASSWORD

 

以掛載的方式使用secret,需要在建立pod的YAML檔案中宣告要使用的secret資源

這樣一來secret所儲存的使用者名稱和密碼都會被掛載到pod內的/etc/foo目錄下,容器只需要讀取這個目錄下的檔案就可以完成配置

檔名就是key的名字,即username

 

2. Configmap

Configmap和Secret的使用幾乎是一樣的,不過其應用場景是多用於配置資訊的分發

 

3. 應用程式如何動態更新配置

configmap和secret修改了,如何在pod中實現更新?

  • 重建pod
  • 應用程式實現watch etcd中的配置檔案,發現變化更新配置資訊
  • 使用sidecar的邏輯監聽配置更新,啟用一個輔助容器來監聽

如果脫離k8s,可以採用配置中心的方式