gpt4 book ai didi

postgresql - sslcert 和 sslkey 如何在 Kubernetes 中作为环境变量传递?

转载 作者:行者123 更新时间:2023-12-02 11:52:47 25 4
gpt4 key购买 nike

我正在尝试通过加密和安全的连接让我的应用程序连接到我的 PostgreSQL 实例。
我已经配置了我的服务器证书并生成了客户端证书和 key 文件。
以下命令连接没有问题:

psql "sslmode=verify-ca sslrootcert=server-ca.pem \
sslcert=client-cert.pem sslkey=client-key.pem \
hostaddr=<instance_ip> \
port=5432 \
user=db dbname=dbname"
不幸的是,我找不到将客户端 key 作为值传递的方法,我只能传递文件路径。即使使用 psql 中的默认环境变量,这也是不可能的: https://www.postgresql.org/docs/current/libpq-envars.html
Golang 遵循与 lib-pq 相同的规范,并且无法传递证书和 key 值: https://pkg.go.dev/github.com/lib/pq?tab=doc#hdr-Connection_String_Parameters .
出于安全原因,我想将客户端证书和 key 存储在环境变量中,我不想将敏感文件存储在 github/gitlab 中。

最佳答案

只需在您的环境中设置值,您就可以在 init 函数中获取它们。

func init() {
var := os.Getenv("SOME_KEY")
}
当您想使用 K8s 设置这些时,您只需在 yaml 文件中执行此操作。
apiVersion: v1
kind: Secret
metadata:
name: my-secret
data:
SOME_KEY: the-value-of-the-key
然后注入(inject)到环境中去做。
envFrom:
- secretRef:
name: my-secret
现在,当您的 init 函数运行时,我们将能够看到 SOME_KEY。
如果你想将 secret 作为文件传递,你可以这样做。
kubectl create secret generic my-secret-files --from-file=my-secret-file-1.stuff --from-file=my-secret-file-2.stuff
然后在您的部署中。
volumes:
- name: my-secret-files
secret:
secretName: my-secret-files
同样在您的容器下的部署中。
volumeMounts:
- name: my-secret-files
mountPath: /config/
现在您的 init 将能够看到。
/config/my-secret-file-1.stuff
/config/my-secret-file-2.stuff

关于postgresql - sslcert 和 sslkey 如何在 Kubernetes 中作为环境变量传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63343110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com