首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何注入保管库和消费hashicorp保管库密钥?

如何注入保管库和消费hashicorp保管库密钥?
EN

Stack Overflow用户
提问于 2021-04-19 00:42:29
回答 2查看 931关注 0票数 2

我不明白如何应用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。

代码语言:javascript
复制
...
     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"]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 2
EN

Stack Overflow用户

发布于 2021-06-15 07:58:13

我隐约记得在使用代理注入器模式从vault中获取机密时遇到过类似的问题。虽然我没有深入挖掘为什么它不工作,但我找到了一个简单的方法。下面这样的配置可能对你有帮助吗?

代码语言:javascript
复制
    ...
         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连接字符串和其他一些内容。对我们来说工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67151027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档