在 Kubernetes 里,把 Secret 掛載到 Pod 中有兩種主要方式:作為卷掛載和作為環境變量掛載。下面為你提供相應的代碼示例。
作為卷掛載 Secret
將 Secret 作為卷掛載到 Pod 時,Secret 的每個鍵會成為掛載目錄下的一個文件,文件內容就是鍵對應的值。
以下是一個示例 YAML 文件,展示了如何把 Secret 作為卷掛載到 Pod 中:
apiVersion: v1
kind: Pod
metadata:name: secret-volume-pod
spec:containers:- name: my-containerimage: nginxvolumeMounts:- name: secret-volumemountPath: "/etc/secret"readOnly: truevolumes:- name: secret-volumesecret:secretName: my-secret
代碼解釋
volumeMounts
:定義了容器內的掛載點,這里是/etc/secret
目錄,并且設置為只讀。volumes
:定義了要掛載的卷,secretName
指定了要使用的 Secret 的名稱。
作為環境變量掛載 Secret
把 Secret 作為環境變量掛載到 Pod 時,Secret 的鍵值對會成為容器的環境變量。
以下是一個示例 YAML 文件,展示了如何將 Secret 作為環境變量掛載到 Pod 中:
apiVersion: v1
kind: Pod
metadata:name: secret-env-pod
spec:containers:- name: my-containerimage: nginxenv:- name: SECRET_USERNAMEvalueFrom:secretKeyRef:name: my-secretkey: username- name: SECRET_PASSWORDvalueFrom:secretKeyRef:name: my-secretkey: password
代碼解釋
env
:定義了容器的環境變量。valueFrom
:指定了環境變量的值來源,secretKeyRef
用于引用 Secret 中的鍵值對。
前提條件
在使用上述配置之前,你需要確保 my-secret
這個 Secret 已經存在于相應的命名空間中。可以使用以下命令創建一個簡單的 Secret:
kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=password123
創建好 Secret 后,使用 kubectl apply -f <filename>.yaml
命令來創建 Pod。