在kubernetes secret中设置环境变量
Set environment variable in kubernetes secret
使用 Kubernetes .yml
文件时,我可以执行以下操作:
$ cat configmap.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
foo: ${FOO}
bar: ${BAR}
static: doesNotChange
$ export FOO=myFooVal
$ export BAR=myBarVal
$ cat configmap.yml | envsubst | kubectl apply -f -
这将在 configmap.yml
文件实际应用到集群之前替换 ${FOO}
和 ${BAR}
。
如何使用 Kubernetes secret 实现完全相同的行为,其数据值采用 base64 编码?
我需要读取 data:
字段中的所有键,解码值,应用环境变量并再次编码。
非常感谢能够对 data:
值进行解码和编码的工具。
实际上可以将 secret.yml
存储为 stringData
而不是 data
,这样可以将文件保存为纯文本(SOPS 加密仍然可行并受到鼓励)
$ cat secret.yml
apiVersion: v1
kind: Secret
metadata:
name: test-secret
namespace: default
type: Opaque
stringData:
dotenv: |
DATABASE_URL="postgresql://test:test@localhost:5432/test?schema=public"
API_PORT=${PORT}
FOO=${FOO}
BAR=${BAR}
$ export PORT=80
$ export FOO=myFooValue
$ export BAR=myBarValue
$ cat secret.yml | envsubst | kubectl apply -f -
肯定有一个加号,这不仅允许创建秘密,而且还可以更新。
仅供参考,这里是使用 SOPS 的完整调用:
$ sops --decrypt secret.enc.yml | envsubst | kubectl apply -f -
使用 Kubernetes .yml
文件时,我可以执行以下操作:
$ cat configmap.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
foo: ${FOO}
bar: ${BAR}
static: doesNotChange
$ export FOO=myFooVal
$ export BAR=myBarVal
$ cat configmap.yml | envsubst | kubectl apply -f -
这将在 configmap.yml
文件实际应用到集群之前替换 ${FOO}
和 ${BAR}
。
如何使用 Kubernetes secret 实现完全相同的行为,其数据值采用 base64 编码?
我需要读取 data:
字段中的所有键,解码值,应用环境变量并再次编码。
非常感谢能够对 data:
值进行解码和编码的工具。
实际上可以将 secret.yml
存储为 stringData
而不是 data
,这样可以将文件保存为纯文本(SOPS 加密仍然可行并受到鼓励)
$ cat secret.yml
apiVersion: v1
kind: Secret
metadata:
name: test-secret
namespace: default
type: Opaque
stringData:
dotenv: |
DATABASE_URL="postgresql://test:test@localhost:5432/test?schema=public"
API_PORT=${PORT}
FOO=${FOO}
BAR=${BAR}
$ export PORT=80
$ export FOO=myFooValue
$ export BAR=myBarValue
$ cat secret.yml | envsubst | kubectl apply -f -
肯定有一个加号,这不仅允许创建秘密,而且还可以更新。
仅供参考,这里是使用 SOPS 的完整调用:
$ sops --decrypt secret.enc.yml | envsubst | kubectl apply -f -