我不明白如何应用hashicorp vault在我的应用程序中注入秘密。
以下链接显示了两个示例https://www.vaultproject.io/docs/platform/k8s/injector/examples
我使用的是同一篇文章中的environment variables example。但似乎并不是所有的环境变量都被注入到应用程序中。例如,我的一个布局中的ENVs似乎没有应用meta property="og:title" content="#{ENV['NAME']}" --没有显示任何值。但是应用程序正在运行,/vault/secrets/...有带内容的文件。
这是我的应用程序部署配置的一部分。
当有多个秘密/模板时,部署将看起来很丑陋。
绝对没有关于configmap example的描述,但这可能是我应该使用的,而不是env。
...
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "app-role"
vault.hashicorp.com/agent-inject-status: "update"
vault.hashicorp.com/agent-inject-secret-pg.env: "secret/data/pg"
vault.hashicorp.com/agent-inject-template-pg.env: |
{{` {{- with secret "secret/data/pg" -}} `}}
{{` export POSTGRES_HOST={{ .Data.data.host }} `}}
{{` export POSTGRES_PORT={{ .Data.data.port }} `}}
{{` export POSTGRES_USER={{ .Data.data.user }} `}}
{{` export POSTGRES_PASSWORD={{ .Data.data.password }} `}}
{{` {{- end }} `}}
vault.hashicorp.com/agent-inject-secret-meta.env: "secret/data/app/meta"
vault.hashicorp.com/agent-inject-template-meta.env: |
{{` {{- with secret "secret/data/app/meta" -}} `}}
{{` export BASE_URL={{ .Data.data.url }} `}}
{{` export DESCRIPTION={{ .Data.data.description }} `}}
{{` export IMAGE={{ .Data.data.image }} `}}
{{` export NAME={{ .Data.data.name }} `}}
{{` {{- end }} `}}
spec:
serviceAccountName: app
...
args: ["/bin/bash", "-c", "source /vault/secrets/*.env && bundle exec puma -C config/puma.rb"]发布于 2021-04-19 02:36:13
如果想要将存储库密码注入部署pod,您可以执行以下操作
在Github Vault上有一个很棒的java项目:https://github.com/DaspawnW/vault-crd
用于与Kubernetes共享Vault密钥的Vault CRD。它将& sync值从Vault注入到Kubernetes secret。您可以将这些秘密用作pod中的环境变量。
流程类似于:vault to Kubernetes secret > and that secrets get injected into deployment using YAML same as configmap
除此之外,还有另一种不错的侧车模式方法。
为此,有一个非常好的教程:https://github.com/hashicorp/hands-on-with-vault-on-kubernetes
另一个:https://www.hashicorp.com/blog/injecting-vault-secrets-into-kubernetes-pods-via-a-sidecar
发布于 2021-06-15 07:58:13
我隐约记得在使用代理注入器模式从vault中获取机密时遇到过类似的问题。虽然我没有深入挖掘为什么它不工作,但我找到了一个简单的方法。下面这样的配置可能对你有帮助吗?
...
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "app-role"
vault.hashicorp.com/agent-inject-status: "update"
vault.hashicorp.com/agent-inject-secret-pg.env: "secret/data/pg"
vault.hashicorp.com/agent-inject-template-pg.env: |
{{- with secret "secret/data/pg" -}}
postgres://{{ .Data.data.user }}:{{ .Data.data.password }}@{{ .Data.data.host }}:{{ .Data.data.port }}/wizard?sslmode=disable
{{- end }}
...
spec:
serviceAccountName: app
...
args:
- echo set env variable(s);
export POSTGRES_CONN_STRING=$(cat /vault/secrets/pg.env)
...我们使用类似的方法来设置mongodb连接字符串和其他一些内容。对我们来说工作得很好。
https://stackoverflow.com/questions/67151027
复制相似问题