kubernetes存儲篇 —— Secret

1. Secret

1.1 Secret配置管理

Secret 對象類型用來保存敏感信息,例如密碼、OAuth 令牌和 ssh key
敏感信息放在 secret 中比放在 Pod 的定義或者容器鏡像中來說更加安全和靈活
Pod 可以用兩種方式使用 secret:

  • 作爲 volume 中的文件被掛載到 pod 中的一個或者多個容器裏
  • 當 kubelet 爲 pod 拉取鏡像時使用
    secret的類型:
  • Service Account:Kubernetes 自動創建包含訪問 API 憑據的 secret,並自動修改pod 以使用此類型的 secret
  • Opaque:使用base64編碼存儲信息,可以通過base64 --decode解碼獲得原始數據,因此安全性弱
  • kubernetes.io/dockerconfigjson:用於存儲docker registry的認證信息
    serviceaccout 創建時 Kubernetes 會默認創建對應的 secret。對應的 secret 會自動掛載到Pod 的 /run/secrets/kubernetes.io/serviceaccount 目錄中
kubectl exec nginx -- ls /var/run/secrets/kubernetes.io/serviceaccount

在這裏插入圖片描述
每個namespace下有一個名爲default的默認的ServiceAccount對象

kubectl get Secret

在這裏插入圖片描述
ServiceAccount裏有一個名爲Tokens的可以作爲Volume一樣被Mount到Pod裏的Secret,當Pod啓動時這個Secret會被自動Mount到Pod的指定目錄下,用來協助完成Pod中的進程訪問API Server時的身份鑑權過程

kubectl get pods -o yaml

在這裏插入圖片描述
Opaque Secret 其value爲base64編碼後的值
從文件中創建Secret
在這裏插入圖片描述
如果密碼具有特殊字符,則需要使用 \ 字符對其進行轉義
默認情況下 kubectl get和kubectl describe 爲了安全是不會顯示密碼的內容,可以通過以下方式查看
在這裏插入圖片描述

1.2 練習

編寫一個 secret 對象
在這裏插入圖片描述

vim mysecret.yaml

在這裏插入圖片描述

kubectl create -f mysecret.yaml 

將Secret掛載到Volume中

vim secret1.yaml

在這裏插入圖片描述

kubectl create -f secret1.yaml 
kubectl exec mysecret -- cat /secret/password

在這裏插入圖片描述
向指定路徑映射 secret 密鑰

vim secret2.yaml 

在這裏插入圖片描述
在這裏插入圖片描述
將Secret設置爲環境變量

vim secret-env.yaml

在這裏插入圖片描述

kubectl create -f secret-env.yaml 
kubectl exec secret-env env

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章