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

时间:2020-06-15 23:37:40

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

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

有人可以帮我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

由secret创建的环境变量将与传递给pod的其他环境变量一样被读取。

因此,如果您创建一个秘密,例如:

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

并将其传递到广告连播:

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

它将作为环境变量传递到Pod。您可以通过在窗格中执行printenv USERNAME进行检查,其输出将与此类似:

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

Multiple secrets可以作为环境变量传递到Pod。

答案 1 :(得分:0)

经过数天的思考,如何将Secrets用作环境变量,我想出了如何在我的nodejs应用程序中引用它!

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

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