【问题标题】:Access secrets as environment variables in Kubernetes在 Kubernetes 中将机密作为环境变量访问
【发布时间】:2020-10-05 11:36:18
【问题描述】:

我正在使用 Secrets 作为环境变量,我想知道您将如何在我的应用程序的客户端调用该密钥?我正在运行 Node.js 应用程序并希望使用 Secrets 环境变量。我通常会通过在本地执行 process.env.VARIABLE_NAME 来调用我的环境变量,因为我有一个 env 文件,但我知道在部署到 Kubernetes 时,它与环​​境变量的秘密不同。

有人可以帮我解决这个问题吗?谢谢!

【问题讨论】:

  • 环境变量的行为应该相同,无论它们是从文字值、向下 API、ConfigMap 还是 Secret 值设置的。 Kubernetes 文档中的Distribute Credentials Securely Using Secrets 有一些示例。您是否遇到了特定的设置问题?
  • 我明白了.. 所以如果我使用process.env.* 来访问我的秘密环境变量,那么它应该以同样的方式工作吗?

标签: node.js kubernetes deployment environment-variables dotenv


【解决方案1】:

在弄清楚如何使用 Secrets 作为环境变量数天之后,我想出了如何在我的 nodejs 应用程序中引用它!

在我以正常方式调用环境变量之前,process.env.VARIABLE_NAME,但是当我将 Secrets 作为环境变量时,这对我不起作用。为了获得变量的值,我必须在我的 Javascript 文件中执行process.env.ENVIRONMENTAL_VARIABLES_USERNAME,这对我有用!其中ENVIRONMENTAL_VARIABLESnameUSERNAMEkey!请参阅我的其他问题进行澄清:Environmental variables returning undefined for Kubernetes deployment

不确定这是否对其他人有帮助,但这是我设法在我的 nodejs 应用程序中访问我的秘密的方式!

【讨论】:

    【解决方案2】:

    secret 创建的环境变量将读取为传递给 pod 的任何其他环境变量。

    所以如果你创建一个秘密,例如:

    kubectl create secret generic user --from-literal=username=xyz
    

    并将其传递给 pod:

    env:
    - name: USERNAME
      valueFrom:
        secretKeyRef:
          name: user
          key: username
    

    它将作为环境变量传递给 pod。您可以通过在 pod 中执行 printenv USERNAME 来检查它,输出将类似于以下内容:

    kubectl exec -it secret-env -- printenv USERNAME
    xyz
    

    Multiple secrets 可以作为环境变量传递给 pod。

    【讨论】:

      猜你喜欢
      • 2019-07-04
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多