iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0

這次我們建立一個只含假密碼的 Secret,再把它掛載成 Pod 裡的檔案。整個練習都放在 lab,因為 Secret 和使用它的 Pod 必須位於同一個命名空間。

1. 建立測試用 Secret

下面的密碼是公開教學假資料,可以放心使用。真實密碼不要直接打在命令列裡,因為它可能被終端機歷史紀錄保存。

kubectl create secret generic demo-secret --from-literal=password=demo-only-not-real -n lab
kubectl get secret demo-secret -n lab

看到 DATA 是 1,代表裡面有一個資料鍵。這裡不直接印出內容,避免把密碼留在畫面或操作紀錄中。

2. 準備掛載設定

把以下內容存成 secret-reader.yaml。password 這個資料鍵會變成 /etc/demo-secret/password 檔案,並以唯讀方式掛載,避免容器改寫它。

apiVersion: v1
kind: Pod
metadata:
  name: secret-reader
  namespace: lab
spec:
  containers:
    - name: reader
      image: busybox:1.37
      command: ["sleep", "3600"]
      volumeMounts:
        - name: credentials
          mountPath: /etc/demo-secret
          readOnly: true
  volumes:
    - name: credentials
      secret:
        secretName: demo-secret

3. 建立並等待 Pod

套用 YAML 後,等 Pod 真的進入 Ready 再往下做:

kubectl apply -f secret-reader.yaml
kubectl wait --for=condition=Ready pod/secret-reader -n lab --timeout=120s

如果啟動失敗,可以執行 kubectl describe pod secret-reader -n lab 查看 Events,優先確認 Secret 名稱和命名空間是否一致。

4. 驗證掛載,但不顯示密碼

我們只檢查檔案存在而且不是空的,不用 cat 把密碼顯示出來。看到 mounted 就代表掛載成功:

kubectl exec secret-reader -n lab -- sh -c 'test -s /etc/demo-secret/password && echo mounted'

看到 mounted 只證明 Pod 能讀到指定檔案,不代表密碼已自動加密或整套權限都安全。正式環境還要限制誰能讀取 Secret,並安排密碼輪替與更新流程。

5. 清理練習資源

確認完成後移除 Pod,再刪除 Secret:

kubectl delete pod secret-reader -n lab
kubectl delete secret demo-secret -n lab

參考:在 Pod 中使用 Secret


上一篇
DAY 14
系列文
我的 Pod 又掛了:30 天學會 Kubernetes 共 15 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言