【K8s任務】使用 kubectl 管理 Secret
參考:https://kubernetes.io/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl/
建立 Secret
一個 Secret 可以包含 Pod 訪問資料庫所需的使用者憑證。 例如,由使用者名稱和密碼組成的資料庫連線字串。 你可以在本地計算機上,將使用者名稱儲存在檔案 ./username.txt 中,將密碼儲存在檔案 ./password.txt 中。
echo -n 'admin' > ./username.txt
echo -n '1f2d1e2e67df' > ./password.txt
在這些命令中,-n 標誌確保生成的檔案在文字末尾不包含額外的換行符。 這一點很重要,因為當 kubectl 讀取檔案並將內容編碼為 base64 字串時,多餘的換行符也會被編碼。
kubectl create secret 命令將這些檔案打包成一個 Secret 並在 API 伺服器上建立物件。
kubectl create secret generic db-user-pass \
--from-file=./username.txt \
--from-file=./password.txt
預設金鑰名稱是檔名。 你可以選擇使用 --from-file=[key=]source 來設定金鑰名稱。例如:
kubectl create secret generic db-user-pass \ --from-file=username=./username.txt \ --from-file=password=./password.txt
你不需要對檔案中包含的密碼字串中的特殊字元進行轉義。
你還可以使用 --from-literal=
在大多數 shell 中,轉義密碼最簡便的方法是用單引號括起來。 比如,如果你的密碼是 S!B*d$zDsb=, 可以像下面一樣執行命令:
kubectl create secret generic db-user-pass \ --from-literal=username=devuser \ --from-literal=password='S!B\*d$zDsb='
驗證 Secret
檢查 secret 是否已建立:
kubectl get secrets
輸出類似於:
NAME TYPE DATA AGE
db-user-pass Opaque 2 51s
你可以檢視 Secret 的描述:
kubectl describe secrets/db-user-pass
輸出類似於:
Name: db-user-pass
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password: 12 bytes
username: 5 bytes
kubectl get 和 kubectl describe 命令預設不顯示 Secret 的內容。 這是為了防止 Secret 被意外暴露或儲存在終端日誌中。
解碼 Secret
要檢視建立的 Secret 的內容,執行以下命令:
kubectl get secret db-user-pass -o jsonpath='{.data}'
輸出類似於:
{"password":"MWYyZDFlMmU2N2Rm","username":"YWRtaW4="}
現在你可以解碼 password 的資料:
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
輸出類似於:
1f2d1e2e67df
作者:Varden
出處:http://www.cnblogs.com/varden/
本文內容如有雷同,請聯絡作者!
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。