最佳实践

常规方式部署应用

背景信息

本节介绍通过常规方式在ZStack Zaku上逐步部署一个Web应用的方法。

本场景以部署WordPress应用为例。WordPress是使用PHP语言开发的博客平台,需配合MySQL使用,WordPress用于运行内容管理程序,MySQL作为数据库存储数据。

常规方式部署WordPress应用分为以下三步:
  1. 上传镜像
  2. 部署MySQL
  3. 部署WordPress

操作步骤

  1. 上传镜像
    1. 准备MySQL和WordPress镜像
      本场景下,MySQL和WordPress镜像可直接从Docker Hub获取,无需另外制作。
      Note: 其他场景下,用户可通过dockerfile制作所需的镜像,也可将已有的容器保存为镜像使用。
    2. 创建本地仓库
      ZStack Zaku主菜单,点击制品仓库 > 本地仓库。在本地仓库界面,点击创建仓库,弹出创建仓库界面。
      可参考以下示例输入相应内容:
      • 名称:设置仓库名称
      • 简介:可选项,备注本地仓库相关信息
      • 类型:本场景设置为私有
      图 1所示:
      图 1. 创建本地仓库


    3. 将MySQL镜像上传到本地仓库
      进入本地仓库详情页镜像标签,点击上传
      图 2所示:
      图 2. 上传镜像


      上传镜像界面,参照以下示例输入相应内容:
      • 上传方式:本场景选择在线上传
      • 外部镜像地址:本场景填写docker.io/library/mysql:5.7.26
      • 架构:选择与将要部署应用的节点相同的架构
      • 用户名:本场景可留空不填
      • 密码:本场景可留空不填
      图 3所示:
      图 3. 上传MySQL镜像


    4. 将WordPress镜像上传到本地仓库
      进入本地仓库详情页镜像标签,点击上传
      上传镜像界面,参考以下示例输入相应内容:
      • 上传方式:本场景选择在线上传
      • 外部镜像地址:本场景填写docker.io/library/wordpress:php8.1
      • 架构:选择与将要部署应用的节点相同的架构
      • 用户名:本场景可留空不填
      • 密码:本场景可留空不填
      图 4所示:
      图 4. 上传WordPress镜像


      Note: 除在线上传外,ZStack Zaku还支持文件上传、命令上传两种镜像上传方式,用户可以将镜像压缩包上传到本地仓库,或通过命令直接将镜像推送到本地仓库,详情可参考上传镜像
  2. 部署MySQL
    1. 创建数据卷
      ZStack Zaku主菜单,选择容器编排 > 数据卷管理 > 数据卷。在数据卷界面,点击创建数据卷,弹出创建数据卷界面。
      参考以下示例输入相应内容:
      • 名称:本场景下设置为data-mysql
      • 存储类:选择创建数据卷使用的存储类(StorageClass)。
        Note:
        • 存储类是 Kubernetes 中用于动态创建数据卷的配置模板,定义了数据卷的属性、创建策略和所需的存储插件。
        • 存储类由管理员创建和管理,如无可用存储类,请联系管理员。
      • 访问模式:选择数据卷允许的访问模式。本场景下设置为ReadWriteOnce
      • 容量:设置合适的数据卷的容量,单位:Gi、Ti
      图 5所示:
      图 5. 创建数据卷


    2. 创建工作负载

      ZStack Zaku主菜单,点击容器编排 > 应用管理 > 工作负载,进入工作负载界面。点击创建工作负载,弹出创建工作负载界面。

      1. 基础信息
        可参考以下示例输入相应内容:
        • 名称:本场景下,设置为mysql-wordpress
        • 类型:选择StatefulSet
        • 副本数:设置为1
        • 其他设置可使用默认值。
        图 6所示:
        图 6. 创建MySQL工作负载-基础信息


      2. 容器配置
        点击添加容器,并参考以下示例输入相应内容:
        • 容器名称:设置容器名称
        • 容器类型:选择工作容器
        • 镜像来源:选择本地仓库
        • 镜像:选择MySQL镜像
        • 镜像标签:选择5.7.26
        • 资源申请:可留空不填
        • 资源限制:可留空不填
        • 启动命令:可留空不填
        • 启动参数:填写--ignore-db-dir=lost+found
        • 环境变量:选择自定义键值对,添加以下四个环境变量:
          • 键:MYSQL_ROOT_PASSWORD;值:MySQL root用户密码
          • 键:MYSQL_DATABASE;值:MySQL启动时要创建的数据库名称
          • 键:MYSQL_USER;值:数据库用户名称
          • 键:MYSQL_PASSWORD;值:数据库用户密码
        • 存活探针:本场景不启用
        • 就绪探针:本场景不启用
        • 启动探针:本场景不启用
        • 启动后回调:本场景不启用
        • 停止前回调:本场景不启用
        图 7所示:
        图 7. 创建MySQL工作负载-容器配置




      3. 资源挂载
        • 挂载数据卷:点击添加数据卷,参考以下示例输入相应内容:
          • 数据卷:选择步骤a中创建的数据卷
          • 容器:选择容器配置中创建的容器
          • 挂载路径:填写/var/lib/mysql
          • 权限:设置为读写
          • 子路径:本场景不填写
        • 本场景下,不挂载其他资源。
        图 8所示:
        图 8. 创建MySQL工作负载-资源挂载


      4. 高级配置:本场景下,保持默认配置
      5. 确认信息

        查看将要创建的工作负载,并确认创建。

    3. 创建服务

      ZStack Zaku主菜单,点击容器编排 > 网络管理 > 服务,进入服务界面。点击创建服务,弹出创建服务界面。

      可参考以下示例输入相应内容:
      • 名称:本场景设置为mysql-wordpress
      • 关联工作负载:选择步骤b中创建的工作负载
      • 类型:选择ClusterIP
        Note: 本场景下,MySQL服务主要供WordPress服务使用,属于集群内访问,选择服务类型为ClusterIP即可。
      • IP类型:选择IPv4
      • 服务端口:设置以下信息:
        • 端口:本场景设置为3306
        • 容器端口:本场景设置为3306
        • 协议:本场景设置为TCP
      • 会话保持:本场景不开启
      • 标签:本场景不填写
      • 注解:本场景不填写
      图 9所示:
      图 9. 创建MySQL服务


  3. 部署WordPress
    1. 创建工作负载

      ZStack Zaku主菜单,点击容器编排 > 应用管理 > 工作负载,进入工作负载界面。点击创建工作负载,弹出创建工作负载界面。

      1. 基础信息
        可参考以下示例输入相应内容:
        • 名称:本场景下,设置为wordpress
        • 类型:选择Deployment
        • 副本数:设置为1
        • 其他设置可使用默认值。
        图 10所示:
        图 10. 创建Wordpress工作负载-基本信息


      2. 容器配置
        点击添加容器,并参考以下示例输入相应内容:
        • 容器名称:设置容器名称
        • 容器类型:选择工作容器
        • 镜像来源:选择本地仓库
        • 镜像:选择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工作负载-容器配置




      3. 资源挂载:本场景下,此处无需挂载资源
      4. 高级配置:本场景下,保持默认配置
      5. 确认信息

        查看将要创建的工作负载,并确认创建。

    2. 创建服务

      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应用为例,主要包括以下两步:
  1. 上传MySQL Chart部署包
  2. 一键发布应用

操作步骤

  1. 上传MySQL Chart部署包
    1. 准备MySQL Chart部署包
    2. 创建本地仓库
      ZStack Zaku主菜单,点击制品仓库 > 本地仓库。在本地仓库界面,点击创建仓库,弹出创建仓库界面。
      可参考以下示例输入相应内容:
      • 名称:设置仓库名称
      • 简介:可选项,备注仓库相关信息
      • 类型:本场景设置为私有
      图 1所示:
      图 1. 创建本地仓库


    3. 上传MySQL Chart部署包
      进入本地仓库详情页Chart标签,点击上传,将步骤a中准备的镜像压缩包上传到该仓库。
      图 2所示:
      图 2. 上传Chart部署包


  2. 一键发布应用
    在Chart列表,找到上传的MySQL Chart部署包,点击操作 > 发布,在弹出的发布应用界面,按需填写配置参数后,点击确定即可。

后续操作

应用发布完成后,用户可在ZStack Zaku主菜单,点击容器编排 > 应用管理 > 应用,在应用界面查看和管理该应用。
Note: 除本节介绍的发布路径外,ZStack Zaku还在应用市场中提供多种官方Chart部署包,用户可进入制品仓库 > 应用市场,将这些部署包一键发布。此时,无需创建本地仓库并上传自行准备的Chart部署包,更加快速便捷。