1. 为什么需要ConfigMap管理配置
在传统的PHP应用部署中,我们通常会把数据库连接信息、环境变量等配置直接写在代码文件里。这种方式存在几个明显的问题:
- 每次修改配置都需要重新构建和部署整个应用
- 敏感信息(如数据库密码)暴露在代码仓库中
- 不同环境(开发/测试/生产)需要不同的配置,管理起来很麻烦
ConfigMap是Kubernetes提供的一种资源对象,专门用来存储非敏感的应用配置数据。它的核心价值在于实现了配置与代码的分离,让应用配置可以独立于应用本身进行管理和更新。
提示:虽然ConfigMap可以存储配置,但不适合存储敏感信息(如密码、API密钥等)。对于敏感数据,应该使用Kubernetes的Secret资源。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ConfigMap基础操作全流程
2.1 创建ConfigMap
ConfigMap可以通过YAML文件定义,然后使用kubectl apply命令创建。下面是一个典型的ConfigMap定义示例:
yaml复制# config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
namespace: default
data:
DB_HOST: "mysql://db.example.com:3306"
DB_MAX_CONNECTIONS: "100"
DEBUG_MODE: "false"
LOG_LEVEL: "info"
创建ConfigMap的命令:
bash复制kubectl apply -f config.yaml
验证ConfigMap是否创建成功:
bash复制kubectl get configmap app-config -o yaml
2.2 在PHP应用中使用ConfigMap
在Kubernetes部署文件中,我们可以通过环境变量方式将ConfigMap的值注入到PHP应用的容器中:
yaml复制# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-app
spec:
replicas: 3
selector:
matchLabels:
app: php-app
template:
metadata:
labels:
app: php-app
spec:
containers:
- name: php-container
image: your-php-image:latest
env:
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: app-config
key: DB_HOST
- name: DB_MAX_CONNECTIONS
valueFrom:
configMapKeyRef:
name: app-config
key: DB_MAX_CONNECTIONS
- name: DEBUG_MODE
valueFrom:
configMapKeyRef:
