通过Kubernetes部署在客户端引用环境变量

时间:2020-06-13 00:47:49

标签: kubernetes deployment environment-variables yaml kubernetes-secrets

我有一个要部署到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文件中包括参数的特定值

0 个答案:

没有答案