我不明白如何将Hashicorp Vault应用到我的应用程序中来注入密钥。
以下链接展示了一些示例:https://www.vaultproject.io/docs/platform/k8s/injector/examples 我使用同一篇文章中的环境变量示例。但好像并没有所有的环境变量被注入到应用程序中。例如,我的一个布局中的ENVs似乎没有被应用:
这是我应用程序的部署配置的一部分。
当有多个密钥和模板时,Deployment看起来会很丑陋。
对于configmap示例没有任何描述,但这可能是我应该使用的东西,而不是env。
以下链接展示了一些示例:https://www.vaultproject.io/docs/platform/k8s/injector/examples 我使用同一篇文章中的环境变量示例。但好像并没有所有的环境变量被注入到应用程序中。例如,我的一个布局中的ENVs似乎没有被应用:
meta property="og:title" content="#{ENV['NAME']}"
- 没有值。但应用正在运行,/vault/secrets/...中的文件具有内容。这是我应用程序的部署配置的一部分。
当有多个密钥和模板时,Deployment看起来会很丑陋。
对于configmap示例没有任何描述,但这可能是我应该使用的东西,而不是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"]