在 Kubernetes 中将机密作为环境变量访问

Access secrets as environment variables in Kubernetes

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

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

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。

经过几天弄清楚如何将 Secrets 用作环境变量后,我弄清楚了如何在我的 nodejs 应用程序中引用它!

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

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