41·配置管理进阶

ConfigMap 简介

kubernetesconfigmapconfiguration

ConfigMap 简介

学习目标

  1. 理解 ConfigMap 的作用和使用场景
  2. 掌握 ConfigMap 与 Pod 的关系
  3. 了解配置管理的最佳实践

核心概念

一句话解释

ConfigMap 是 Kubernetes 中用于存储非敏感配置数据的 API 对象,以键值对形式存储。

为什么需要 ConfigMap

没有 ConfigMap 的问题:
┌─────────────────────────────────────┐
│           Pod                       │
│  ┌─────────────────────────────┐   │
│  │  应用代码                    │   │
│  │  - 数据库地址: db.prod.com  │   │
│  │  - 端口: 3306              │   │
│  │  - 日志级别: info          │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘
问题:
1. 配置硬编码在镜像中
2. 环境切换困难
3. 配置变更需要重新构建镜像

使用 ConfigMap:
┌─────────────────────────────────────┐
│           Pod                       │
│  ┌─────────────────────────────┐   │
│  │  应用代码                    │   │
│  │  读取配置文件/环境变量       │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘
           ↓ 读取配置
┌─────────────────────────────────────┐
│         ConfigMap                   │
│  - 数据库地址: db.prod.com        │
│  - 端口: 3306                    │
│  - 日志级别: info                │
└─────────────────────────────────────┘

ConfigMap vs Secret

特性ConfigMapSecret
数据类型非敏感数据敏感数据
存储方式明文Base64 编码
典型用途配置文件、环境变量密码、Token、证书
大小限制1MB1MB

ConfigMap 的使用方式

方式说明示例
环境变量注入到容器环境变量DATABASE_HOST
命令行参数作为容器启动参数--db-host=$(DATABASE_HOST)
卷挂载挂载为文件/etc/config/app.conf

ConfigMap 的数据来源

1. 字面量
   - 直接定义键值对
   - 适合简单的配置项

2. 文件
   - 从文件读取内容
   - 适合配置文件

3. 目录
   - 从目录读取所有文件
   - 适合多个配置文件

实际应用场景

场景 1:数据库配置
- 数据库地址、端口、用户名(非密码)

场景 2:应用配置
- 日志级别、缓存大小、超时时间

场景 3:配置文件
- Nginx 配置、应用配置文件

场景 4:多环境管理
- 开发、测试、生产环境的配置

实践练习

练习 1:理解 ConfigMap

回答以下问题:

  1. ConfigMap 和 Secret 有什么区别?
  2. ConfigMap 有哪几种使用方式?
  3. 为什么要把配置和代码分离?

练习 2:设计配置

为以下应用设计 ConfigMap:

  • Web 应用
  • 需要:数据库地址、端口、日志级别、缓存大小
  • 区分开发和生产环境

小结

要点说明
ConfigMap存储非敏感配置数据
数据格式键值对
使用方式环境变量、命令行参数、卷挂载
核心价值配置与代码分离
大小限制1MB

练习编辑器

bash
Loading...

继续学习

完成本课后,建议继续学习下一课「创建 ConfigMap」 以巩固所学知识。