【问题标题】:How to create an environment variable in kubernetes container如何在 Kubernetes 容器中创建环境变量
【发布时间】:2020-01-22 06:33:54
【问题描述】:

我正在尝试在 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

  • 将环境变量添加到 pod 环境:

    • 名称:FOO_KEY 值:“Hellooooo”
  • 删除 svc、pods、部署

    kubectl delete -f dev/ --recursive

  • 应用配置

    kubectl apply -f dev/ --recursive

  • 验证环境参数

    kubectl describe pods

有些奇怪

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

问题

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

【问题讨论】:

  • 您好,您能否验证部署 yaml 中的变量?
  • 你应该对部署进行变异,如果是部署创建的,直接变异不是好主意
  • kubectl get deploy foo -o yaml 将是命令
  • 我在 pod yaml 文件中添加了 env 变量。我不知道它们是否也可以在部署中传递。是吗?
  • 我看到 env 也可以在 kind: Pod 下给出。无论如何,在部署 yaml 中声明 env 是有效的。感谢您的建议。

标签: kubernetes


【解决方案1】:

由于问题已在评论部分解决。

如果您想将 env 设置为 pod,我建议您使用 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

部署为 Pod 和 ReplicaSet 启用声明式更新。 Pod 通常不会直接在集群上启动。相反,Pod 通常由部署管理的副本集管理。

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

【讨论】:

  • 您能否解释一下为什么 env 变量在直接添加到 pod 规范时不起作用?我在我的问题中添加了有关此的详细信息。请也承认这一点。
  • 我不知道到底是什么,你在尝试。尽管如此,我还是用更多描述更新了我的答案,以便在部署时列出、添加或删除 env 变量。
  • 我想我当时并没有多少 k8s。现在我问的问题听起来很有趣。现在接受它?
【解决方案2】:
  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

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2017-12-18
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多