基于 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 反向代理提供统一入口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值