如何在kubernetes容器中创建环境变量

时间:2019-09-21 14:33:02

标签: kubernetes

我正在尝试在kubernetes容器中传递环境变量。

到目前为止我做了什么?

  • 创建部署

    kubectl create deployment foo --image=foo:v1

  • 创建一个NODEPORT服务并公开端口

    kubectl expose deployment/foo --type=NodePort --port=9000

  • 看到豆荚

    kubectl get pods

  • 转储配置(以便添加环境变量)

    kubectl get deployments -o yaml > dev/deployment.yaml

    kubectl get svc -o yaml > dev/services.yaml

    kubectl get pods -o yaml > dev/pods.yaml

  • 向容器中添加env变量 env:

    • 名称:FOO_KEY 值:“ Hellooooo”
  • 删除svc,pod,部署

    kubectl delete -f dev/ --recursive

  • 应用配置

    kubectl apply -f dev/ --recursive

  • 验证环境参数

    kubectl describe pods

有点奇怪

如果我手动更改了Pod Yaml的元信息,并硬编码Pod的名称。它获取env变量。但是,这次有两个Pod,其中一个带有硬编码名称,另一个带有哈希。例如,如果我硬编码的名称是“ foo”,则两个容器,即foo和foo-12314faf(示例)将出现在“ kubectl get pods”中。你能解释为什么吗?

问题

为什么验证步骤没有显示环境变量?

2 个答案:

答案 0 :(得分:4)

在注释部分中解决了该问题。

如果您想将 env 设置为广告连播,我建议您使用 set 推荐

kubectl set env --help将提供更多详细信息,例如列出环境并创建新环境。

Examples:
  # Update deployment 'registry' with a new environment variable
  kubectl set env deployment/registry STORAGE_DIR=/local

  # List the environment variables defined on a deployments 'sample-build'
  kubectl set env deployment/sample-build --list

部署启用Pods和ReplicaSets的声明式更新。 Pod通常不会直接在群集上启动。取而代之的是,Pod通常由copySet管理,后者由部署管理。

以下主题讨论what-is-the-difference-between-a-pod-and-a-deployment

答案 1 :(得分:1)

  1. 您可以在部署文件中添加任意数量的环境变量
spec:
      containers:
        - name: auth
          image: lord/auth
          env:
            - name: MONGO_URI
              value: "mongodb://auth-mongo-srv:27017/auth"
 process.env.MONGO_URI

或者您可以先添加一个秘密,然后在无数部署文件中使用新创建的秘密,以共享具有值的相同环境变量:

kubectl create secret generic jwt-secret --from-literal=JWT_KEY=my_awesome_jwt_secret_code
spec:
      containers:
        - name: auth
          image: lord/auth
          env:
            - name: MONGO_URI
              value: "mongodb://auth-mongo-srv:27017/auth"
            - name: JWT_KEY
              valueFrom:
                secretKeyRef:
                  name: jwt-secret
                  key: JWT_KEY
 process.env.MONGO_URI
 process.env.JWT_KEY