Saul's blog Saul's blog
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)

Saul.J.Wu

立身之本,不在高低。
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)
  • 安全框架(认证、授权)

  • 分布式事务

  • 消息队列

  • K8S

    • K8S搭建
    • K8s加入集群报错
    • K8s新版本搭建
    • K8s入门
    • K8S核心概念
    • kubesphere
    • kubesphere 定制化安装及建立多租户系统
    • PV和PVC
    • 创建WordPress发布到K8s
      • WordPress 简介
      • 前提条件
      • 预估时间
      • 创建密钥
        • 创建 MySQL 密钥
        • 创建 WordPress 密钥
      • 创建存储卷
      • 创建应用
        • 1、在左侧菜单栏选择 应用负载 → 应用→ 自制应用,然后点击 部署新应用。
        • 2、添加mysql组件。
        • 3、添加wordpress组件
        • 4、创建应用
      • 监控应用
      • 查看应用资源
      • 外网访问
      • 访问 Wordpress
    • K8S之DevOps
    • K8S之DevOps最佳实践
  • 分布式
  • K8S
SaulJWu
2021-08-09

创建WordPress发布到K8s

# WordPress 简介

WordPress 是使用 PHP 开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的环境中架设属于自己的网站。本文以创建一个 Wordpress 应用 (opens new window) 为例,以创建 KubeSphere 应用的形式将 Wordpress 的组件(MySQL 和 Wordpress)创建后发布至 Kubernetes 中,并在集群外访问 Wordpress 服务。

一个完整的 Wordpress 应用会包括以下 Kubernetes 对象,其中 MySQL 作为后端数据库,Wordpress 本身作为前端提供浏览器访问。

img

每个程序有自己的pvc。

# 前提条件

已创建了企业空间、项目和普通用户 project-regular账号(该已账号已被邀请至示例项目),并开启了外网访问,请参考 多租户管理快速入门 (opens new window)。

# 预估时间

约 10 分钟。

# 创建密钥

MySQL 的环境变量 MYSQL_ROOT_PASSWORD即 root 用户的密码属于敏感信息,不适合以明文的方式表现在步骤中,因此以创建密钥的方式来代替该环境变量。创建的密钥将在创建 MySQL 的容器组设置时作为环境变量写入。

# 创建 MySQL 密钥

  1. 以项目普通用户 project-regular登录 KubeSphere,在当前项目下左侧菜单栏的 配置中心 选择 密钥,点击 创建。

img

  1. 填写密钥的基本信息,完成后点击 下一步。
  • 名称:作为 MySQL 容器中环境变量的名称,可自定义,例如 mysql-secret
  • 别名:别名可以由任意字符组成,帮助您更好的区分资源,例如 MySQL 密钥
  • 描述信息:简单介绍该密钥,如 MySQL 初始密码
  1. 密钥设置页,填写如下信息,完成后点击 创建。
  • 类型:选择 默认(Opaque)
  • Data:Data 键值对填写 MYSQL_ROOT_PASSWORD和 123456
    • 去docker hub中找到它的环境变量,所以才要填上MYSQL_ROOT_PASSWORD

img

# 创建 WordPress 密钥

同上,创建一个 WordPress 密钥,Data 键值对填写 WORDPRESS_DB_PASSWORD和 123456。此时两个密钥都创建完成。

img

# 创建存储卷

  1. 在当前项目下左侧菜单栏的 存储卷,点击 创建,基本信息如下。

image-20210809140211357

  • 名称:wordpress-pvc
  • 别名:Wordpress 持久化存储卷
  • 描述信息:Wordpress PVC
  1. 完成后点击 下一步,存储类型默认 local,访问模式和存储卷容量也可以使用默认值,点击 下一步,直接创建即可。

img

同理,也创建mysql-pvc

创建完,2个pvc都是等待中,等有人使用才会挂载它。

# 创建应用

# 1、在左侧菜单栏选择 应用负载 → 应用→ 自制应用,然后点击 部署新应用。

  • 应用名称:必填,起一个简洁明了的名称,便于用户浏览和搜索,例如填写 wordpress-application
  • 描述信息:简单介绍该工作负载,方便用户进一步了解

# 2、添加mysql组件。

  • 名称: mysql
  • 组件版本:v1
  • 别名:MySQL 数据库
  • 负载类型:选择 有状态服务
    • 有状态服务:需要持久化存储的
    • 无状态服务:不需要持久化存储的

image-20210809140918446

# 2.1、添加容器镜像

image-20210809141055795

点击 添加容器镜像,镜像填写 mysql:5.6(应指定镜像版本号),然后按回车键或点击 DockerHub,点击 使用默认端口。

image-20210809141044156

相当于dokcer中的3306暴露到服务的3306端口

# 2.2、设置资源

提示: 注意,在高级设置中确保内存限制 ≥ 1000 Mi,否则可能 MySQL 会因内存 Limit 不够而无法启动。

image-20210809141311611

# 2.3、配置环境变量

下滑至环境变量,在此勾选 环境变量,然后选择 引用配置文件或密钥,名称填写为 MYSQL_ROOT_PASSWORD(这个名称必须是docker hub中指定的),下拉框中选择密钥为 mysql-secret和 MYSQL_ROOT_PASSWORD。

完成后点击右下角 √。

# 2.4、添加存储卷

官方文档是从头到尾新增一个,这里我们选择刚才创建的PV,

  • 挂载路径:存储卷在容器内的挂载路径,选择 读写,路径填写 /var/lib/mysql
    • 这个路径也是要看docker hub中的设置,其实就是类似自己运行docker的时候指定挂载目录

完成后点击 √。

image-20210809145758219

# 3、添加wordpress组件

刚才添加了mysql组件,接下来添加wordpress组件。

  • 名称: wordpress
  • 组件版本:v1
  • 别名:Wordpress前端
  • 负载类型:默认 无状态服务

image-20210809150019035

# 3.1、指定容器地址

点击 添加容器镜像,镜像填写 wordpress:4.8-apache(应指定镜像版本号),然后按回车键或点击 DockerHub,点击 使用默认端口。

image-20210809150110341

# 3.2、设置资源

资源使用默认即可

# 3.3、配置环境变量

这里需要添加两个环境变量:

  • 点击 引用配置文件或密钥,名称填写 WORDPRESS_DB_PASSWORD,选择在第一步创建的配置 (Secret) wordpress-secret和 WORDPRESS_DB_PASSWORD。
  • 点击 添加环境变量,名称填写 WORDPRESS_DB_HOST,值填写 mysql,对应的是上一步创建 MySQL 服务的名称,否则无法连接 MySQL 数据库。

完成后点击 √。

image-20210809150344378

# 3.4 、添加存储卷

点击 添加存储卷,选择已有存储卷 wordpress-pvc,访问模式改为 读写,容器挂载路径 /var/www/html。完成后点击 √。

img

# 4、创建应用

检查 WordPress 组件信息无误后,再次点击 √,此时 MySQL 和 WordPress 组件信息都已添加完成,点击 创建。

# 监控应用

点击应用就可以看到更新中

image-20210809150701767

点击容器组,就可以看到容器在创建中

随意点击一个容器,然后点击事件,就可以看得到它的初始化过程:

image-20210809150927432

当容器组都准备好,可以去存储卷看到都是准备就绪

image-20210809151017208

# 查看应用资源

工作负载下查看 部署 和 有状态副本集 的状态,当它们都显示为 运行中,说明 WordPress 应用创建成功。

img

img

# 外网访问

访问 Wordpress 服务前,查看 wordpress 服务,将外网访问设置为 NodePort。

image-20210809151336471

点击 更多操作→ 编辑外网访问,选择 NodePort,然后该服务将在每个节点打开一个节点端口,通过 点击访问即可在浏览器访问 WordPress。

img

提示:此时也可以通过工具箱的 web kubctl 查看当前项目中 Wordpress 应用正在运行的所有资源。

img

# 访问 Wordpress

以上访问将通过 http://{$节点 IP}:{$节点端口 NodePort}访问 WordPress 博客网站。

img

至此,您已经熟悉了如何通过创建一个 KubeSphere 应用的方式,通过快速添加多个组件来完成一个应用的构建,最终发布至 Kubernetes。这种创建应用的形式非常适合微服务的构建,只需要将各个组件容器化以后,即可通过这种方式快速创建一个完整的微服务应用并发布 Kubernetes。

同时,这种方式还支持用户以 无代码侵入的形式开启应用治理,针对 微服务、流量治理、灰度发布与 Tracing 等应用场景,开启应用治理后会在每个组件中以 SideCar 的方式注入 Istio-proxy 容器来接管流量,后续将以一个 Bookinfo 的示例来说明如何在创建应用中使用应用治理。

帮我改善此页面 (opens new window)
上次更新: 2021/08/09, 11:55:32
PV和PVC
K8S之DevOps

← PV和PVC K8S之DevOps→

最近更新
01
zabbix学习笔记二
02-28
02
zabbix学习笔记一
02-10
03
Linux访问不了github
12-08
更多文章>
Theme by Vdoing | Copyright © 2020-2022 Saul.J.Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式