我正在嘗試更新 helm 部署的部署,以便它使用存盤為 k8s 秘密資源的秘密。這必須在我的 pod 中設定為 STORAGE_PASSWORD 環境變數。
就我而言,秘密在秘密/redis 中,資料項是 redis-password:
$ kubectl 獲取秘密/redis -oyaml api版本:v1 資料: redis-密碼:XXXXXXXXXXXXXXXX= 種類:秘密 元資料: 名稱:redis 型別:不透明
我努力了:
$ kubectl set env --from secret/redis deployment/gateway --keys=redis-password 警告:密鑰 redis-password 轉移到 REDIS_PASSWORD deployment.apps/gateway 環境已更新
當我查看更新的部署清單時,我看到變數已添加,但(如建議的那樣)變數已設定為 REDIS_PASSWORD:
- 名稱:REDIS_PASSWORD
值來自:
秘鑰參考:
鍵:redis-密碼
名稱:redis
我也嘗試kubectl patch過一個replace操作,但我無法正確插入秘密的語法。
如何將環境變數的名稱更改為 STORAGE_PASSWORD?
uj5u.com熱心網友回復:
給定一個如下所示的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
spec:
replicas: 1
template:
spec:
containers:
- image: alpinelinux/darkhttpd
name: darkhttpd
args:
- --port
- "9991"
ports:
- name: http
protocol: TCP
containerPort: 9991
env:
- name: EXAMPLE_VAR
value: example value
修補您的秘密的語法如下所示:
kubectl patch deploy/example --patch='
{
"spec": {
"template": {
"spec": {
"containers": [
{
"name": "darkhttpd",
"env": [
{
"name": "STORAGE_PASSWORD",
"valueFrom": {
"secretKeyRef": {
"name": "redis",
"key": "redis-password"
}
}
}
]
}
]
}
}
}
}
'
或者使用 JSONPatch 樣式的補丁:
kubectl patch --type json deploy/example --patch='
[
{
"op": "add",
"path": "/spec/template/spec/containers/0/env/-",
"value": {
"name": "STORAGE_PASSWORD",
"valueFrom": {
"secretKeyRef": {
"name": "redis",
"key": "redis-password"
}
}
}
}
]
'
兩者都不是特別漂亮,因為您要將復雜的嵌套結構添加到現有的復雜嵌套結構中。
uj5u.com熱心網友回復:
您還可以使用以下方式更新資源kubectl edit:
kubectl edit deployment gateway
然后編輯yaml檔案
# - name: REDIS_PASSWORD
- name: STORAGE_PASSWORD
valueFrom:
secretKeyRef:
key: redis-password
name: redis
僅供參考:https ://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/#kubectl-edit
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529941.html
標籤:KuberneteskubectlKubernetes-秘密Kubernetes-部署
上一篇:如何從協程回傳值/等待協程完成
