使用 kubectl 管理 Secret


使用secret的基本流程:

  • 1.創建k8s集群
  • 2.創建管理的文件
  • 3.驗證
  • 4.解碼
  • 5.清理

集群創建忽略,從第2步開始,一起來熟悉下secret的管理流程。

一個 Secret 可以包含 Pod 訪問數據庫所需的用戶憑證。

1.創建管理的文件

# 以文件形式, 
# 在這些命令中,-n 標志確保生成的文件在文本末尾不包含額外的換行符。 這一點很重要,因為當 kubectl 讀取文件並將內容編碼為 base64 字符串時,多余的換行符也會被編碼。
echo -n "testName" > user.txt
echi -n "password" > pwd.txt

# 使用kubectlcreate secret命令打包文件成secret,並在API服務器上創建對象
kubectl create secret generic my-auth \
--from-file=user.txt
--from-file=pwd.txt

---輸出
secret/my-auth created
---

默認密鑰名稱是文件名。 你可以選擇使用 --from-file=[key=]source 來設置密鑰名稱。例如:

kubectl create secret generic my-auth \
  --from-file=username=username.txt \
  --from-file=password=password.txt

你還可以使用 --from-literal=<key>=<value> 標簽提供 Secret 數據。 可以多次使用此標簽,提供多個鍵值對。 請注意,特殊字符(例如:$,\,*,= 和 !)由你的 shell 解釋執行,而且需要轉義。
kubectl create secret generic my-auth \
  --from-literal=username=devuser \
  --from-literal=password='S!B\*d$zDsb='

2.驗證secret

檢查 secret 是否已創建:

kubectl get secret [-n mynamespace]
輸出:

kubectl get secret -n elk
NAME                         TYPE                                  DATA   AGE
default-token-jxc92          kubernetes.io/service-account-token   3      2d23h
elastic-certificate-pem      Opaque                                1      2d23h
elastic-certificates         Opaque                                1      2d23h
elastic-credentials          Opaque                                2      2d23h
sh.helm.release.v1.es-c.v1   helm.sh/release.v1                    1      47h
sh.helm.release.v1.es-d.v1   helm.sh/release.v1                    1      42h
sh.helm.release.v1.es-m.v1   helm.sh/release.v1                    1      42h

查看secret的描述

kubectl describe secret secret-name [-n mynamespace]
輸出:

kubectl describe secret elastic-credentials -n elk
Name:         elastic-credentials
Namespace:    elk
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  13 bytes
username:  7 bytes

kubectl get 和 kubectl describe 命令默認不顯示 Secret 的內容。 這是為了防止 Secret 被意外暴露或存儲在終端日志中。

3.解碼secret

要查看創建的 Secret 的內容,運行以下命令:

kubectl get secret db-user-pass -o jsonpath='{.data}'
輸出類似於:

{"password":"MWYyZDFlMmU2N2Rm","username":"YWRtaW4="}
現在你可以解碼 password 的數據:

echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
輸出類似於:

1f2d1e2e67df

4.清理

刪除創建的 Secret:

kubectl delete secret db-user-pass


免責聲明!

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



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