如何添加vault秘密到kubernetes的嫉妒值?



我正在使用使用外部oidc提供程序进行身份验证的OAuth2-Proxyhelm图表,以及Vault来存储秘密。现在,为了通过client-id&client-secret秘密存储在Vault,我遵循这个链接- https://www.vaultproject.io/docs/platform/k8s/injector/examples#environment-variable-example

这显示了如何将这些秘密作为环境变量添加到容器中,但是OAuth2-Proxy首先需要这些变量来启动(它们作为参数传递给docker映像的入口点)。我还尝试将源命令添加到postStart生命周期方法中,但这也会产生以下错误-

Exec lifecycle hook ([sh -c source /vault/secrets/oidc.sh]) for Container "oauth2-proxy" in Pod "oauth2-proxy-f6c8f7b69-kgjws_istio-system(7e488c12-2964-496f-a658-47739fcf3695)" failed - error: command 'sh -c source /vault/secrets/oidc.sh' exited with 126: , message: "OCI runtime exec failed: exec failed: cannot exec a container that has stopped: unknownrn"

我认为这是因为docker镜像的入口点需要这些envars,并且一旦该命令失败,容器就会死亡。还有其他方法吗?

使用vault Agent Injector将vault秘密作为ENV变量注入k8s pod中方法

首先应该创建一个模板,将Vault秘密导出为环境变量。

spec:   template:
metadata:
annotations:
# Environment variable export template
vault.hashicorp.com/agent-inject-template-config: |
{{ with secret "secret/data/web" -}}
export api_key="{{ .Data.data.payments_api_key }}"
{{- end }}

应用程序容器应该在启动时获取这些文件。

args:
['sh', '-c', 'source /vault/secrets/config && <entrypoint script>']

最新更新