如何为kubectl create deployment命令传递环境变量?
kubectl create deployment传递环境变量的正确方式
kubectl create deployment命令本身不支持--env参数,这就是你执行命令时出现error: unknown flag: --env错误的原因,而kubectl run命令设计时包含了该参数,因此可以正常执行。以下是三种为kubectl create deployment传递环境变量的正确方法:
方法1:生成YAML模板后编辑添加环境变量
- 生成仅用于输出模板、不实际创建资源的YAML文件:
kubectl create deployment nginx-deployment --replicas=2 --image=nginx --dry-run=client -o yaml > nginx-deployment.yaml
- 编辑生成的
nginx-deployment.yaml文件,在容器配置段添加env字段:
spec: replicas: 2 selector: matchLabels: app: nginx-deployment template: metadata: labels: app: nginx-deployment spec: containers: - name: nginx image: nginx env: - name: HOSTNAME value: "dev.example.com" - name: KEY value: "randomkey1456" - name: PORT_NUMBER value: "5601"
- 应用修改后的YAML文件创建deployment:
kubectl apply -f nginx-deployment.yaml
方法2:先创建deployment,再添加环境变量
- 先创建基础的deployment实例:
kubectl create deployment nginx-deployment --replicas=2 --image=nginx
- 使用
kubectl set env命令为已创建的deployment添加环境变量:
kubectl set env deployment/nginx-deployment HOSTNAME=dev.example.com KEY=randomkey1456 PORT_NUMBER=5601
方法3:通过--overrides参数直接在命令行传递环境变量
利用--overrides参数传入JSON格式的配置,直接在创建deployment时指定环境变量:
kubectl create deployment nginx-deployment --replicas=2 --image=nginx --overrides=' { "spec": { "template": { "spec": { "containers": [ { "name": "nginx", "image": "nginx", "env": [ {"name": "HOSTNAME", "value": "dev.example.com"}, {"name": "KEY", "value": "randomkey1456"}, {"name": "PORT_NUMBER", "value": "5601"} ] } ] } } } }'
内容的提问来源于stack exchange,提问作者devops-admin
相关产品推荐
相关产品推荐

