我有一个要部署到Kubernetes的Node.js应用程序,并且试图弄清楚如何在应用程序的客户端调用环境变量(我在服务器端使用express)。以前,我会有一个.env文件,并通过执行process.env.VARIABLE_NAME
来调用该文件中的环境变量,但是现在我要部署到Kubernetes,我不确定该怎么做。我正在尝试将机密用作环境变量,但是我没有运气。我一直在尝试按照以下文档了解“秘密”:https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables
以下是我的deployment.yaml
文件的摘要:
metadata:
namespace: <namespace>
releaseName: <release name>
releaseVersion: 1.0.0
target: <target>
auth:
replicaCount: 1
image:
repository: '<name of repository is here>'
pullPolicy: <always>
container:
multiPorts:
- containerPort: 443
name: HTTPS
protocol: TCP
- containerPort: 80
name: HTTP
protocol: TCP
env:
- name: USERNAME
valueFrom:
secretKeyRef:
name: my-username
key: username
- name: PASSWORD
valueFrom:
secretKeyRef:
name: my-password
key: password
- name: HOST
valueFrom:
secretKeyRef:
name: my-host
key: host
resources:
requests:
cpu: 0.25
memory: 256Mi
limits:
cpu: 1
memory: 1024Mi
variables:
- name: NODE_ENV
value: <node env value here>
ingress:
enabled: true
ingressType: <ingressType>
applicationType: <application type>
serviceEndpoint: <endpoint>
multiPaths:
- path: /
- HTTPS
tls:
enabled: true
secretName: <name>
autoscale:
enabled: false
minReplicas: 1
maxReplicas: 5
cpuAverageUtilization: 50
memoryUtilizationValue: 50
annotations:
ingress:
nginx.ingress.kubernetes.io/affinity: <affinity>
nginx.ingress.kubernetes.io/session-cookie-name: <cookie-name>
nginx.ingress.kubernetes.io/session-cookie-expires: <number>
nginx.ingress.kubernetes.io/session-cookie-max-age: <number>
因此在container
下,这是我放置env
的地方,但不确定这样做是否正确?还是我需要具有以下树才能在部署中包含环境变量:
spec:
containers:
- name: mycontainer
image: redis
env:
在这种情况下,这将如何更改我当前的deployment.yaml
文件的格式?我的应用程序似乎确实可以正确部署yaml文件,但是当我尝试在应用程序中的Javascript文件中进行process.env.USERNAME
并控制台登录时,结果为undefined
。 ..是因为我没有正确调用环境变量,还是Pod没有任何环境变量?
如果有人可以提供帮助,将不胜感激!注意:我没有故意在我的deployment.yaml文件中包括参数的特定值