最佳实践
常规方式部署应用
背景信息
本节介绍通过常规方式在ZStack Zaku上逐步部署一个Web应用的方法。本场景以部署WordPress应用为例。WordPress是使用PHP语言开发的博客平台,需配合MySQL使用,WordPress用于运行内容管理程序,MySQL作为数据库存储数据。
常规方式部署WordPress应用分为以下三步:
- 上传镜像
- 部署MySQL
- 部署WordPress
操作步骤
-
上传镜像
-
准备MySQL和WordPress镜像
本场景下,MySQL和WordPress镜像可直接从Docker Hub获取,无需另外制作。Note: 其他场景下,用户可通过dockerfile制作所需的镜像,也可将已有的容器保存为镜像使用。
-
创建本地仓库
在ZStack Zaku主菜单,点击制品仓库 > 本地仓库。在本地仓库界面,点击创建仓库,弹出创建仓库界面。可参考以下示例输入相应内容:
- 名称:设置仓库名称
- 简介:可选项,备注本地仓库相关信息
- 类型:本场景设置为私有
如图 1所示:图 1. 创建本地仓库 
- 将MySQL镜像上传到本地仓库
- 将WordPress镜像上传到本地仓库
-
准备MySQL和WordPress镜像
-
部署MySQL
-
创建数据卷
在ZStack Zaku主菜单,选择容器编排 > 数据卷管理 > 数据卷。在数据卷界面,点击创建数据卷,弹出创建数据卷界面。参考以下示例输入相应内容:
- 名称:本场景下设置为data-mysql
- 存储类:选择创建数据卷使用的存储类(StorageClass)。Note:
- 存储类是 Kubernetes 中用于动态创建数据卷的配置模板,定义了数据卷的属性、创建策略和所需的存储插件。
- 存储类由管理员创建和管理,如无可用存储类,请联系管理员。
- 访问模式:选择数据卷允许的访问模式。本场景下设置为ReadWriteOnce
- 容量:设置合适的数据卷的容量,单位:Gi、Ti
如图 5所示:图 5. 创建数据卷 
-
创建工作负载
在ZStack Zaku主菜单,点击容器编排 > 应用管理 > 工作负载,进入工作负载界面。点击创建工作负载,弹出创建工作负载界面。
- 基础信息可参考以下示例输入相应内容:
- 名称:本场景下,设置为mysql-wordpress
- 类型:选择StatefulSet
- 副本数:设置为1
- 其他设置可使用默认值。
如图 6所示:图 6. 创建MySQL工作负载-基础信息 
- 容器配置点击添加容器,并参考以下示例输入相应内容:
- 容器名称:设置容器名称
- 容器类型:选择工作容器
- 镜像来源:选择本地仓库
- 镜像:选择MySQL镜像
- 镜像标签:选择5.7.26
- 资源申请:可留空不填
- 资源限制:可留空不填
- 启动命令:可留空不填
- 启动参数:填写--ignore-db-dir=lost+found
- 环境变量:选择自定义键值对,添加以下四个环境变量:
- 键:MYSQL_ROOT_PASSWORD;值:MySQL root用户密码
- 键:MYSQL_DATABASE;值:MySQL启动时要创建的数据库名称
- 键:MYSQL_USER;值:数据库用户名称
- 键:MYSQL_PASSWORD;值:数据库用户密码
- 存活探针:本场景不启用
- 就绪探针:本场景不启用
- 启动探针:本场景不启用
- 启动后回调:本场景不启用
- 停止前回调:本场景不启用
如图 7所示:图 7. 创建MySQL工作负载-容器配置 

- 资源挂载
- 挂载数据卷:点击添加数据卷,参考以下示例输入相应内容:
- 数据卷:选择步骤a中创建的数据卷
- 容器:选择容器配置中创建的容器
- 挂载路径:填写/var/lib/mysql
- 权限:设置为读写
- 子路径:本场景不填写
- 本场景下,不挂载其他资源。
如图 8所示:图 8. 创建MySQL工作负载-资源挂载 
- 挂载数据卷:点击添加数据卷,参考以下示例输入相应内容:
- 高级配置:本场景下,保持默认配置
- 确认信息
查看将要创建的工作负载,并确认创建。
- 基础信息
-
创建服务
在ZStack Zaku主菜单,点击容器编排 > 网络管理 > 服务,进入服务界面。点击创建服务,弹出创建服务界面。
可参考以下示例输入相应内容:- 名称:本场景设置为mysql-wordpress
- 关联工作负载:选择步骤b中创建的工作负载
- 类型:选择ClusterIPNote: 本场景下,MySQL服务主要供WordPress服务使用,属于集群内访问,选择服务类型为ClusterIP即可。
- IP类型:选择IPv4
- 服务端口:设置以下信息:
- 端口:本场景设置为3306
- 容器端口:本场景设置为3306
- 协议:本场景设置为TCP
- 会话保持:本场景不开启
- 标签:本场景不填写
- 注解:本场景不填写
如图 9所示:图 9. 创建MySQL服务 
-
创建数据卷
-
部署WordPress
-
创建工作负载
在ZStack Zaku主菜单,点击容器编排 > 应用管理 > 工作负载,进入工作负载界面。点击创建工作负载,弹出创建工作负载界面。
- 基础信息可参考以下示例输入相应内容:
- 名称:本场景下,设置为wordpress
- 类型:选择Deployment
- 副本数:设置为1
- 其他设置可使用默认值。
如图 10所示:图 10. 创建Wordpress工作负载-基本信息 
- 容器配置点击添加容器,并参考以下示例输入相应内容:
- 容器名称:设置容器名称
- 容器类型:选择工作容器
- 镜像来源:选择本地仓库
- 镜像:选择WordPress镜像
- 镜像标签:选择php8.1
- 资源申请:可留空不填
- 资源限制:可留空不填
- 启动命令:可留空不填
- 启动参数:可留空不填
- 环境变量:选择自定义键值对,添加以下四个环境变量:
- 键:WORDPRESS_DB_Host;值:数据库访问地址,此处填写mysql-wordpress:3306
- 键:WORDPRESS_DB_USER;值:访问数据库的用户名,此处填写与MySQL工作负载环境变量MYSQL_USER中一致的值
- 键:WORDPRESS_DB_PASSWORD;值:访问数据库的用户名,此处填写与MySQL工作负载环境变量MYSQL_PASSWORD中一致的值
- 键:WORDPRESS_DB_NAME;值:数据库名称,此处填写与MySQL工作负载环境变量MYSQL_DATABASE中一致的值
- 存活探针:本场景不启用
- 就绪探针:本场景不启用
- 启动探针:本场景不启用
- 启动后回调:本场景不启用
- 停止前回调:本场景不启用
如图 10所示:图 11. 创建Wordpress工作负载-容器配置 

- 资源挂载:本场景下,此处无需挂载资源
- 高级配置:本场景下,保持默认配置
- 确认信息
查看将要创建的工作负载,并确认创建。
- 基础信息
-
创建服务
在ZStack Zaku主菜单,点击容器编排 > 网络管理 > 服务,进入服务界面。点击创建服务,弹出创建服务界面。
可参考以下示例输入相应内容:- 名称:本场景设置为wordpress
- 关联工作负载:选择步骤b中创建的工作负载
- 类型:选择NodePort
- IP类型:选择IPv4
- 服务端口:设置以下信息:
- 端口:本场景设置为80
- 容器端口:本场景设置为80
- 主机端口:可留空不填
- 协议:本场景设置为TCP
- 会话保持:本场景不开启
- 标签:本场景不填写
- 注解:本场景不填写
如图 12所示:图 12. 创建Wordpress服务 
-
创建工作负载
后续操作
进入服务列表,查看WordPress服务的端口,在浏览器中输入${NoteIP}:${Port}即可访问WordPress服务。Note: ${NoteIP}是集群任意节点IP地址,${Port}是WordPress服务端口。下图中,WordPress服务端口是31710。图 13. 服务端口


一键部署应用
背景信息
本节介绍在ZStack Zaku快捷部署应用的方法。本场景以部署MySQL应用为例,主要包括以下两步:- 上传MySQL Chart部署包
- 一键发布应用
操作步骤
-
上传MySQL Chart部署包
- 准备MySQL Chart部署包
-
创建本地仓库
在ZStack Zaku主菜单,点击制品仓库 > 本地仓库。在本地仓库界面,点击创建仓库,弹出创建仓库界面。可参考以下示例输入相应内容:
- 名称:设置仓库名称
- 简介:可选项,备注仓库相关信息
- 类型:本场景设置为私有
如图 1所示:图 1. 创建本地仓库 
- 上传MySQL Chart部署包
-
一键发布应用
在Chart列表,找到上传的MySQL Chart部署包,点击操作 > 发布,在弹出的发布应用界面,按需填写配置参数后,点击确定即可。
后续操作
应用发布完成后,用户可在ZStack Zaku主菜单,点击容器编排 > 应用管理 > 应用,在应用界面查看和管理该应用。Note: 除本节介绍的发布路径外,ZStack Zaku还在应用市场中提供多种官方Chart部署包,用户可进入制品仓库 > 应用市场,将这些部署包一键发布。此时,无需创建本地仓库并上传自行准备的Chart部署包,更加快速便捷。




