基于 Kubernetes 的 WordPress 网站部署(使用 ConfigMap)
在当今的云计算时代,容器化和编排技术已经成为现代应用部署的标准。Kubernetes作为容器编排领域的佼佼者,以其强大的功能和灵活性受到了广泛的关注和应用。本文将为您详细讲解如何使用Kubernetes部署一个完整的WordPress网站,后端数据库采用MySQL,帮助您掌握这一热门技术。
一.实验目的
1.使用 Kubernetes 的 ConfigMap 管理应用配置。
2.部署 MariaDB 数据库、WordPress 应用及 Nginx 反向代理。
3.实现配置与镜像分离,验证动态配置加载。
二.实验内容
1.实验环境
Kubernetes 集群:
Master 节点: | 10.1.1.151 |
Node1 节点: | 10.1.1.152 |
Node2 节点: | 10.1.1.153 |
工具:kubectl、docker、nginx
拓扑图
2.实验步骤
2.1 创建 MariaDB 的 ConfigMap
# maria-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: maria-cm
data:
DATABASE: "db"
USER: "wp"
PASSWORD: "123"
ROOT_PASSWORD: "123"
应用配置
kubectl apply -f maria-cm.yaml
2.2 创建 WordPress 的 ConfigMap
查看services IP:
apiVersion: v1
kind: ConfigMap
metadata:
name: wp-cm
data:
HOST: '10.244.1.66' # 这个IP一定要与mariadb数据库绑定
USER: 'wp'
PASSWORD: '123'
NAME: 'db'
应用配置:
kubectl apply -f wp-cm.yaml
2.3 创建 MariaDB Deployment
# maria-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: maria
labels:
app: wordpress
role: database
spec:
selector:
matchLabels:
app: wordpress
role: database
replicas: 1
template:
metadata:
labels:
app: wordpress
role: database
spec:
containers:
- name: maria
image: mariadb:10
ports:
- containerPort: 3306
envFrom: # 批量导入cm变量
- prefix: 'MARIADB_'
configMapRef:
name: maria-cm
应用配置:kubectl apply -f maria-deploy.yaml
查看环境变量:
2.4创建 WordPress Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
role: web
spec:
replicas: 3
selector:
matchLabels:
app: wordpress
role: web
template:
metadata:
labels:
app: wordpress
role: web
spec:
containers:
- image: wordpress:5
name: wordpress
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
envFrom:
- prefix: 'WORDPRESS_DB_'
configMapRef:
name: wp-cm
应用配置:kubectl apply -f wp-deploy.yaml
2.5 创建Nginx配置文件
server {
listen 80;
default_type text/html;
location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
}
启动nginx容器
三.实验结果
1.Pod状态&&服务状态
2.验证访问
访问 WordPress:
浏览器输入 http://10.1.1.151:30088(通过 Nginx 代理)。
初始化 WordPress:
根据提示完成数据库配置,使用以下参数:
数据库名:db
用户名:123456
密码:123456
数据库主机:maria(Kubernetes Service 名称)。
四.实验结论
ConfigMap 的作用:成功将数据库配置与镜像解耦,支持动态更新。
服务发现:通过 Kubernetes Service 名称 maria 实现数据库连接,避免硬编码 IP。
扩展性:WordPress 通过 Deployment 实现了多副本部署,Nginx 反向代理提供统一入口。