更新时间:2025-12-08 GMT+08:00
设置环境变量
容器环境变量(如DB_HOST=db.example.com)是运行容器时动态传入的配置参数,允许在不重新构建镜像的情况下,灵活调整应用的行为和设置。其主要作用包括:
- 动态配置应用:允许在不修改容器镜像的情况下,通过注入不同的变量值(如DB_HOST=prod.db.com或DB_HOST=test.db.com)改变应用行为。即使容器因调度等原因重启,该配置信息依然有效。典型场景有数据库连接信息、API端点、功能开关等。
- 环境隔离配置:使用同一套镜像配合不同环境变量,即可适配开发、测试、生产等不同环境。例如,通过ENV_MODE=production启用生产环境配置。
- 安全管理敏感信息:配合Secrets等机制,安全地传递密码、密钥等敏感数据,避免将敏感信息硬编码在镜像或代码中。
环境变量可以在工作负载部署后进行修改,为工作负载提供极大的灵活性。CCE中设置的环境变量与Dockerfile中的“ENV”效果相同。更多信息,请参见Define Environment Variables for a Container。
通过控制台添加环境变量
使用配置项或密钥相关类型的环境变量时,需确保集群中已创建对应的ConfigMap和Secret。关于创建ConfigMap和Secret的操作步骤,请参见创建配置项和创建密钥。
- 登录CCE控制台。
- 单击集群名称进入集群,在左侧选择“工作负载”,在右上角单击“创建工作负载”。
- 在“容器配置 > 容器信息”中,选择“环境变量”页签。
- 请根据需求设置环境变量。CCE集群支持配置多种类型的环境变量,具体说明请参见表1。
- 单击“新增变量”,逐条增加环境变量,依次填写“类型”、“变量名称”和“变量/变量引用”等信息。
- 单击“批量编辑自定义变量”,在编辑页面,按行输入自定义变量,格式为“变量名称=变量/变量引用”。
- 其他参数配置完成后,单击右下角“创建工作负载”。等待一段时间后,工作负载状态为“运行中”。
通过kubectl命令行添加环境变量
假设集群中已创建一个ConfigMap和Secret,关于创建ConfigMap和Secret的操作步骤详情请参见创建配置项和创建密钥。
- 使用kubectl连接集群,具体操作请参见通过kubectl连接集群。
- 查看集群中的ConfigMap。本示例中的ConfigMap名为configmap-example。
kubectl get configmap configmap-example -oyaml回显如下:
apiVersion: v1 data: configmap_key: configmap_value kind: ConfigMap ...
- 查看集群中的Secret。本示例中的Secret名为secret-example。
kubectl get secret secret-example -oyaml回显如下:
apiVersion: v1 data: secret_key: c2VjcmV0X3ZhbHVl # c2VjcmV0X3ZhbHVl为secret_value的base64编码 kind: Secret ...
- 创建一个名为nginx-deployment.yaml的文件。其中,nginx-deployment.yaml为自定义名称,您可以随意命名。
vi nginx-deployment.yaml在工作负载中设置环境变量,YAML示例如下:apiVersion: apps/v1 kind: Deployment metadata: name: env-example namespace: default spec: replicas: 1 selector: matchLabels: app: env-example template: metadata: labels: app: env-example spec: containers: - name: container-1 image: nginx:alpine imagePullPolicy: Always resources: requests: cpu: 250m memory: 512Mi limits: cpu: 250m memory: 512Mi env: - name: key # 自定义,自定义环境变量名称及对应的参数值 value: value - name: key1 # 配置项键值导入,将配置项中某个键的值导入,作为环境变量的值 valueFrom: configMapKeyRef: name: configmap-example key: configmap_key - name: key2 # 密钥键值导入,将密钥中某个键的值导入,作为环境变量的值 valueFrom: secretKeyRef: name: secret-example key: secret_key - name: key3 # 变量引用,将Pod定义的字段导入,作为环境变量的值 valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: key4 # 资源引用,用容器定义的资源申请值或限制值作为环境变量的值 valueFrom: resourceFieldRef: containerName: container1 resource: limits.cpu divisor: 1 envFrom: - configMapRef: # 配置项导入,将配置项中所有键值导入为环境变量 name: configmap-example - secretRef: # 密钥导入,将密钥中所有键值导入为环境变量 name: secret-example imagePullSecrets: - name: default-secret - 创建Deployment。
kubectl create -f nginx-deployment.yaml回显如下,表示已经开始创建工作负载。
deployment.apps/env-example created
- 查看Pod名称。
kubectl get pod
回显如下:
NAME READY STATUS RESTARTS AGE env-example-695b759569-lx9jp 1/1 Running 0 17m
- 进入Pod中查看环境变量。
kubectl exec env-example-695b759569-lx9jp -- printenv
回显如下,则说明环境变量配置成功。/ # env key=value # 自定义环境变量 key1=configmap_value # 配置项键值导入 key2=secret_value # 密钥键值导入 key3=env-example-695b759569-lx9jp # Pod的metadata.name key4=1 # container1这个容器的limits.cpu,单位为Core,向上取整 configmap_key=configmap_value # 配置项导入,原配置项中的键值直接会导入结果 secret_key=secret_value # 密钥导入,原密钥中的键值直接会导入结果
父主题: 配置工作负载