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

如何在kubernetes容器中创建环境变量,kubernetes,Kubernetes,我试图在kubernetes容器中传递一个环境变量 到目前为止我做了什么? 创建部署 kubectl创建部署foo--image=foo:v1 创建节点端口服务并公开端口 kubectl公开部署/foo--type=NodePort--port=9000 看到豆荚了吗 kubectl获得吊舱 转储配置(以便添加环境变量) kubectl获取部署-o yaml>dev/deployment.yaml kubectl get svc-o yaml>dev/services.yaml kubectl

我试图在kubernetes容器中传递一个环境变量

到目前为止我做了什么?

  • 创建部署

    kubectl创建部署foo--image=foo:v1

  • 创建节点端口服务并公开端口

    kubectl公开部署/foo--type=NodePort--port=9000

  • 看到豆荚了吗

    kubectl获得吊舱

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

    kubectl获取部署-o yaml>dev/deployment.yaml

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

    kubectl获取pods-o yaml>dev/pods.yaml

  • 将env变量添加到pods 环境:

    • 姓名:富凯 值:“你好”
  • 删除svc、POD和部署

    kubectl delete-f dev/--recursive

  • 应用配置

    kubectl apply-f dev/--recursive

  • 验证环境参数

    kubectl描述吊舱

奇怪的事

如果我手动更改pod yaml的元信息并硬编码pod的名称。它获取env变量。然而,这一次出现了两个pod,一个是硬编码名称,另一个是哈希。例如,如果我硬编码的名称是“foo”,那么“kubectl get pods”中会出现两个pod,即foo和foo-12314faf(示例)。你能解释一下原因吗

问题


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

因为问题已在注释部分解决

如果您想将env设置为pods,我建议您使用setsub

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和复制集的声明性更新。POD通常不会直接在集群上启动。相反,POD通常由replicaSet管理,replicaSet由部署管理

以下线程讨论

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

    kubectl create secret generic jwt-secret --from-literal=JWT_KEY=my_awesome_jwt_secret_code
    

    您好,您能验证部署yaml中的变量吗?您应该修改部署,如果pod是由部署
    kubectl get deploy foo-o yaml创建的,那么直接修改pod不是一个好主意,因为命令会在pod yaml文件中添加env变量。我不知道它们是否也可以在部署中传递。是吗?我看到env也可以用kind:Pod来表示。无论如何,在部署yaml中声明env是可行的。谢谢你的建议。你能不能解释一下,当环境变量直接添加到pod规范中时,它为什么不起作用?我在问题中补充了这方面的细节。请也承认这一点。我不知道具体是什么,你正在努力。尽管如此,我还是更新了我的答案,添加了更多的描述来列出、添加或删除部署时的env变量。现在我问的问题听起来很有趣。现在接受它哈哈,没问题,:)德尔阿耶杜鲁斯特阿耶
    
     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