企业应用部署涉及大量配置管理,硬编码配置导致环境耦合,需为每个环境单独构建镜像。ConfigMap通过配置与应用解耦,实现同一镜像适配多环境,专门存储非敏感配置数据;Secret则用于敏感数据并提供安全保护。
选型参考
数据卷挂载(推荐):配置以文件形式提供,支持自动同步和热更新。适用于完整配置文件管理和需要动态更新的场景。
环境变量注入:配置直接注入到容器环境中。适用于简单的运行参数、功能开关等场景。
创建配置项
演示如何创建配置项,以用于后续部署nginx示例。
控制台
登录容器服务管理控制台,选择集群列表。单击目标集群名称,选择。
创建示例配置项。选择命名空间为
default
,单击创建。输入配置项名称,然后单击+添加,填写配置项名称和值,最后单击确定。
配置项名称:app-config
添加配置项:填写配置项名称和配置项的值。也可单击从文件导入JSON文件创建配置项。
nginx.conf
:server { listen 80; location / { root /usr/share/nginx/html; index index.html; } location /health { return 200 "healthy\n"; add_header Content-Type text/plain; } }
kubectl
创建ConfigMap。
kubectl create configmap app-config \ --namespace=default \ --from-literal=nginx.conf="$(cat <<'EOF' server { listen 80; location / { root /usr/share/nginx/html; index index.html; } location /health { return 200 "healthy\n"; add_header Content-Type text/plain; } } EOF )"
查看Configmap,输出结果
DATA:1
,说明配置项创建成功。kubectl get configmap app-config
使用配置项
在工作负载中使用配置项时,工作负载与配置项需处于同一集群和命名空间中。
方式一:数据卷挂载
控制台配置
登录容器服务管理控制台,选择集群列表。单击目标集群名称,选择 。
创建Deployment应用。
在无状态页面,单击使用镜像创建。
在应用基本信息配置向导页面,配置应用的基本信息。
应用名称为
nginx-volume-demo
;命令空间为default
。副本数量为
2
;类型为无状态(Deployment)
。
然后单击下一步,进入容器配置向导页面。
配置镜像名称和端口。
镜像名:
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
容器端口:80,协议为TCP。
重要拉取此镜像前,集群需具备公网访问能力。若在创建集群时已勾选为专有网络配置 SNAT(默认开启),则无需额外配置。否则,请参见为集群开启访问公网的能力进行设置。
在数据卷区域,单击增加本地存储,新增挂载配置项。配置好相应信息后,单击下一步。
存储卷类型为配置项;名称为
nginx-config
;挂载源为app-config
;容器路径为/etc/nginx/conf.d
。
在高级配置页面,按需设置访问、伸缩、调度和标签注解后,单击最下方的创建。
在创建完成页面,查看应用任务。
在创建应用任务已提交面板,单击查看应用详情,查看容器应用状态是否为
Running
。
验证Configmap文件是否挂载成功。
选择需要登录的容器(例如nginx-volume-demo-7xxxxxx****),单击操作列的终端,选择nginx登录容器。
输出结果包含nginx.conf文件,说明配置项挂载成功。
ls -la /etc/nginx/conf.d/
验证文件内容是否正确。
cat /etc/nginx/conf.d/nginx.conf
输出内容与配置项内容一致,表明数据卷挂载方式已成功使应用访问到配置项数据。
kubectl配置
创建nginx-volume-demo.yaml。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-volume-demo namespace: default spec: replicas: 2 selector: matchLabels: app: nginx-volume template: metadata: labels: app: nginx-volume spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 volumeMounts: - name: nginx-config mountPath: /etc/nginx/conf.d volumes: - name: nginx-config configMap: name: app-config items: - key: nginx.conf path: nginx.conf
创建Deployment应用。
kubectl apply -f nginx-volume-demo.yaml
查看Deployment应用,Pod为
Running
状态,说明应用创建成功。kubectl get pods -l app=nginx-volume -n default
输出结果包含nginx.conf文件,说明配置项挂载成功。
kubectl exec deployment/nginx-volume-demo -n default -- ls -la /etc/nginx/conf.d/
验证文件内容是否正确。
kubectl exec deployment/nginx-volume-demo -n default -- cat /etc/nginx/conf.d/nginx.conf
输出内容与配置项内容一致,表明数据卷挂载方式已成功使应用访问到配置项数据。
方式二:环境变量注入
控制台配置
登录容器服务管理控制台,选择集群列表。单击目标集群名称,选择 。
创建Deployment应用。
在无状态页面,单击使用镜像创建。
在应用基本信息配置向导页面,配置应用的基本信息。
应用名称为
nginx-env-demo
;命令空间为default
。副本数量为
2
;类型为无状态(Deployment)
。
然后单击下一步,进入容器配置向导页面。
配置镜像名称和端口。
镜像名:
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
容器端口:80,协议为TCP。
重要拉取此镜像前,集群需具备公网访问能力。若在创建集群时已勾选为专有网络配置 SNAT(默认开启),则无需额外配置。否则,请参见为集群开启访问公网的能力进行设置。
在环境变量区域,单击新增。配置好相应信息后,单击下一步。
类型为配置项;名称为
CONFIG_
;变量/变量引用为app-config
。
在高级配置页面,按需设置访问、伸缩、调度和标签注解后,单击最下方的创建。
在创建完成页面,查看应用任务。
在创建应用任务已提交面板,单击查看应用详情,查看容器状态是否为
Running
。
验证环境变量是否注入成功。
选择需要登录的容器(例如nginx-env-demo-7xxxxxx****),单击操作列的终端,选择nginx登录容器。
env | grep CONFIG_
输出内容与配置项内容一致,表明环境变量注入方式已成功使应用访问到配置项数据。
kubectl配置
创建nginx-env-demo.yaml。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-env-demo namespace: default spec: replicas: 2 selector: matchLabels: app: nginx-env template: metadata: labels: app: nginx-env spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 # 批量注入ConfigMap envFrom: - prefix: CONFIG_ configMapRef: name: app-config
创建Deployment应用。
kubectl apply -f nginx-env-demo.yaml
查看Deployment应用,输出Pod为
Running
状态,说明应用创建成功。kubectl get pods -l app=nginx-env -n default
验证环境变量是否注入成功。
kubectl exec deployment/nginx-env-demo -n default -- env | grep CONFIG_
输出内容与配置项内容一致,表明环境变量注入方式已成功使应用访问到配置项数据。
管理配置项
配置项创建完成后,可以在配置项页面进行以下操作:
操作 | 说明 |
编辑配置项 | 单击目标配置项右侧操作列下的编辑,可修改配置项的名称和值。 重要 修改正在使用的配置项将直接影响关联应用的运行状态,导致服务重启或功能异常。建议在变更前充分评估影响范围,并在业务低峰期执行操作。 |
删除配置项 | 单击目标配置项右侧操作列下的删除,删除不再使用的配置项。 重要 请勿删除集群自动生成的系统配置项,这些配置项位于 kube-system 和 kube-public 命名空间下(如 CoreDNS Configuration),删除后可能影响集群正常运行。 |
相关文档
Pod异常问题排查,查看Pod异常的诊断流程、排查方法、常见问题及对应的解决方案。
创建无状态工作负载Deployment,查看如何在ACK集群中通过控制台及kubectl创建无状态应用。
Kubernetes 官方文档配置项,查看更多关于配置项的信息。