在容器組中使用保密字典
更新時間 2025-05-27 17:19:19
最近更新時間: 2025-05-27 17:19:19
分享文章
本文介紹如何在容器組中使用保密字典。
如果需要在 Kubernetes 集群中使用密碼、令牌、密鑰、證書等敏感信息時,推薦使用保密字典。本文將介紹如何在控制臺中創建保密字典(Secret),并使用保密字典配置Pod數據卷及環境變量。
前提條件
- 在容器組(Pod)中使用保密字典時,確保兩者處于同一個集群和Namespace中。
- 已經連接到集群中的Master節點,具體操作請參閱通過kubectl連接。
創建保密字典
- 登錄云容器引擎控制臺。
- 在控制臺的左側導航欄中點擊“集群” 。
- 在集群列表頁面中,點擊目標集群的名稱進入集群詳情頁面。
- 點擊左側導航欄中的“配置管理” ,并選擇保密字典 。
- 在保密字典頁面中,單擊左上角的“新增YAML” 。
- 在彈窗中自定義保密字典的YAML配置內容。
具體的YAML示例模板如下所示:
apiVersion: v1
kind: Secret
metadata:
name: secret-demo
namespace: default
type: Opaque
data:
username: dXNlcm5hbWU= # base64 編碼的用戶名
password: cGFzc3dvcmQ= # base64 編碼的密碼
使用保密字典配置Pod數據卷
- 創建example.yaml配置文件,具體示例內容如下:
apiVersion:?apps/v1
kind:?Deployment
metadata:
??name:?nginx-deployment
??namespace:?default
??labels:
????app:?nginx
spec:
??replicas:?1
??selector:
????matchLabels:
??????app:?nginx
??template:
????metadata:
??????labels:
????????app:?nginx
????spec:
??????volumes:
??????-?name:?secret-volume
????????secret:
??????????secretName:?secret-demo
??????containers:
??????-?name:?nginx
????????image:?registry-huadong1.crs-internal.daliqc.cn/open-source/nginx:1.26-alpine-slim
????????volumeMounts:
????????-?name:?secret-volume
??????????mountPath:?/mnt/secret
- 執行以下命令,配置保密字典。
kubectl apply -f example.yaml
在上述示例中,我們定義了一個Pod,并在其中添加了一個名為secret-volume的Volume,其類型為Secret,并將其掛載到名為nginx的容器中。在容器中,我們將Volume 掛載到了/mnt/secret路徑下。此時,我們就可以在容器中使用 /mnt/secret/username和 /mnt/secret/password兩個文件,來獲取Secret 中的用戶名和密碼信息。
使用保密字典設置Pod的環境變量
- 通過命令行進行配置。
創建example.yaml配置文件,具體示例內容如下:
apiVersion:?apps/v1
kind:?Deployment
metadata:
??name:?nginx-deployment
??labels:
????app:?nginx
spec:
??replicas:?1
??selector:
????matchLabels:
??????app:?nginx
??template:
????metadata:
??????labels:
????????app:?nginx
????spec:
??????containers:
??????-?name:?nginx
????????image:?registry-huadong1.crs-internal.daliqc.cn/open-source/nginx:1.26-alpine-slim
????????ports:
????????-?containerPort:?80
????????env:?
????????-?name:?username?
??????????valueFrom:?
????????????secretKeyRef:?
??????????????name:?secret-demo?
??????????????key:?username?
????????-?name:?password?
??????????valueFrom:?
????????????secretKeyRef:?
??????????????name:?secret-demo?
??????????????key:?password
執行以下命令,配置保密字典。
kubectl apply -f example.yaml
在上述示例中,我們定義了一個Pod,并在其中添加了一個名為my-container 容器,接著為其定義了兩個環境變量username和password,并使用valueFrom和secretKeyRef來引用Secret中的值。secretKeyRef的name屬性用于指定Secret 的名稱,key屬性用于指定需要使用的Secret 中對應的鍵名。通過上述方式,在容器中就可以使用username和paasword環境變量,來獲取Secret 中的用戶名和密碼信息。
- 通過控制臺進行配置。
- 登錄云容器引擎控制臺。
- 在控制臺的左側導航欄中點擊“集群” 。
- 在集群列表頁面中,點擊目標集群的名稱進入集群詳情頁面。
- 點擊左側導航欄中的“工作負載” ,并選擇“無狀態” 。
- 在無狀態頁面中,單擊左上角的“創建deployment” 。詳細操作步驟請參閱Serverless 容器引擎使用快速入門 。
- 在“數據卷(選填)”中添加目標保密字典的數據卷。
- 在實例內容器中的環境變量區域單擊“新增變量” ,類型選擇“秘鑰鍵值導入”,變量/變量引用選擇在創建保密字典中新建的Secret,再分別選擇Secret的Key以及填寫它們對應的變量名。
本次示例配置如下所示: