v1.15.0 Release Notes

2022 年 9 月 30 日,Zadig 正式发布 v1.15.0。

功能列表

开发者体验

  • 支持 Zadig 手机版
  • 支持本地安装 Zadig
  • 支持自定义工作流 API
  • 前端交互和样式优化

工作流

  • 自定义工作流支持测试任务
  • 自定义工作流支持原生 Kubernetes 部署
  • 自定义工作流支持通知
  • 自定义工作流支持协作模式
  • 自定义任务支持枚举类型
  • 自定义工作流支持定时器

其他

  • 显式支持 AWS 资源(对象存储、K8s 集群、镜像仓库)
  • K8s YAML 模板支持 go template 方式
  • 升级类库,提升代码安全性

缺陷与优化

  • 自定义工作流名称长度优化
  • 修复使用构建模板时配置工作流触发器无法选择代码仓库的问题
  • 修复工作流构建配置中包括不存在服务的问题
  • 修复未启用的软件包无法在系统中编辑的问题
  • 修复代码源 URL 中含 Path 时拉取代码失败的问题
  • 修复在环境中点击工作流升级时未对工作流做分支过滤的问题
  • 交付物部署工作流的编辑不再依赖服务构建配置
  • Helm Chart 项目使用模板创建的服务支持编辑 values.yaml

业务变更声明

声明

为实现更安全更细粒度的 ABAC 权限管理,本次版本中针对生产/预发布环境做如下业务调整,请详细阅读知晓后再升级。

变更范围

  1. 项目权限管理中,「角色」->「权限列表」去除 环境(生产/预发布) 的相关配置项。
  2. 「项目」->「环境」页面去除生产标签和生产集群信息。
  3. 「系统设置」->「集群管理」去除生产集群标识的相关配置。

权限变更

影响范围

有生产集群相关权限配置的用户,在升级后其环境权限配置将全部失效。

如何操作修复

项目管理员在升级后通过协作模式重新配置所有环境的权限,实现细粒度环境权限管理,参考:协作模式

版本升级过程

注意事项

  • 本次版本有业务变更,请详细阅读 业务变更声明 后再继续升级操作
  • 如果当前系统版本 < v1.14.0,请先升级到 v1.14.0,具体升级过程参见 v1.14.0 升级方式,再按照以下方式升级到 v1.15.0
  • 本次版本升级涉及基础组件更新,若你使用 Zadig 内置的 MongoDB,MySQL,MinIO 对象存储组件,请务必按照升级指南做好数据的备份/恢复工作

数据库备份

如果已经正式使用,升级前请务必做好数据库备份

高可用数据库

如果使用外部的高可用数据库存储数据,数据的备份恢复操作如下:

  1. 数据库备份命令:
  • 备份 MongoDB 数据
  1. mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
  • 备份 MySQL 数据
  1. mysqldump -h <HOST> -P <PORT> -u root -p user > user.sql
  2. mysqldump -h <HOST> -P <PORT> -u root -p dex > dex.sql
  1. 数据库恢复命令:
  • 恢复 MongoDB 数据
  1. mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存储路径
  • 恢复 MySQL 数据
  1. # 在 MySQL 中执行如下操作:
  2. mysql> drop database user;
  3. mysql> create database user;
  4. mysql> drop database dex;
  5. mysql> create database dex;
  6. # 命令行执行如下数据恢复操作:
  7. mysql -h <HOST> -P <PORT> -u root -p user < user.sql
  8. mysql -h <HOST> -P <PORT> -u root -p dex < dex.sql

内置数据库

如果使用 Zadig 内置的数据库组件,升级前必须做好数据库备份

数据库备份命令:

  • 备份 MySQL 数据

内置 MySQL 服务默认密码为 zadig

  1. kubectl port-forward svc/zadig-mysql -n ${NAMESPACE} 3306:3306
  2. mysqldump -h 127.0.0.1 -P 3306 -u root -p user > user.sql
  3. mysqldump -h 127.0.0.1 -P 3306 -u root -p dex > dex.sql
  • 备份 MongoDB 数据
  1. kubectl port-forward svc/zadig-mongodb -n <Zadig 所在的 Namespace> 27090:27017
  2. mongodump --out=<你想要的路径> --db=zadig mongodb://localhost:27090
  3. mongodump --out=<你想要的路径> --db=zadig_policy mongodb://localhost:27090

对象存储数据备份

如果使用 Zadig 内置的 MinIO 组件作为对象存储服务,升级前必须做好数据备份

MinIO 数据备份操作:

  1. export NAMESPACE=<Zadig Namespace>
  2. kubectl port-forward svc/zadig-minio -n ${NAMESPACE} 9000:9000
  3. mc alias set zadig-minio http://localhost:9000 AKIAIOSFODNN72019EXAMPLE wJalrXUtnFEMI2019K7MDENGbPxRfiCYEXAMPLEKEY
  • 备份文件对象
  1. mc mirror zadig-minio/bucket/ ./bucket/

升级操作

请根据不同的安装方式执行对应的升级步骤。

安装方式:基于现有 Kubernetes 安装

该安装方式下,请使用基于现有 Kubernetes 安装新中的脚本进行升级。

安装方式:基于 Helm 命令安装

该种安装方式下,执行以下步骤升级至 v1.15.0:

  1. 执行以下命令后查看 zadig.yaml 文件,如果文件中包含镜像信息(即:tag:a.b.c),需要手动删除。
  1. helm get values <Release Name> -n <Zadig Namespace> > zadig.yaml
  1. 如果曾经对以下 values 进行修改,请额外修改对应参数
  • microservice.user.database => connections.mysql.db.user
  • microservice.config.dexdatabase => connections.mysql.db.dex
  1. 根据安装方式,执行命令升级。
  • 域名方式:
  1. export NAMESPACE=<Zadig 安装的 NAMESPACE>
  2. helm repo update
  3. helm upgrade -f zadig.yaml <release_name> koderover-chart/zadig --namespace ${NAMESPACE} --version=1.15.0
  • IP + PORT 方式:
  1. export NAMESPACE=<Zadig 安装的 NAMESPACE>
  2. export PORT=<30000 - 32767 任一端口,与初次安装时使用的端口不同即可>
  3. helm repo update
  4. helm upgrade -f zadig.yaml <release_name> koderover-chart/zadig --namespace ${NAMESPACE} \
  5. --set gloo.gatewayProxies.gatewayProxy.service.httpNodePort=${PORT} \
  6. --set gloo.gatewayProxies.gatewayProxy.service.type=NodePort --version=1.15.0

升级后操作

MySQL 数据恢复

如果使用 Zadig 内置的 MySQL 组件,升级后需要进行数据恢复

内置 MySQL 服务默认密码为 zadig

MySQL 数据恢复操作:

  1. kubectl port-forward svc/kr-mysql -n <Zadig 所在的 Namespace> 3306:3306
  2. mysql -h 127.0.0.1 -P 3306 -u root -p
  3. # 在 MySQL 中执行如下操作:
  4. mysql> drop database user;
  5. mysql> create database user;
  6. mysql> drop database dex;
  7. mysql> create database dex;
  8. # 命令行执行如下数据恢复操作:
  9. mysql -h 127.0.0.1 -P 3306 -u root -p user < user.sql
  10. mysql -h 127.0.0.1 -P 3306 -u root -p dex < dex.sql

MongoDB 数据恢复

如果使用 Zadig 内置的 MongoDB 组件,升级后需要进行数据恢复

  • 数据恢复命令:
  1. kubectl port-forward svc/kr-mongodb -n <Zadig 所在的 Namespace> 27090:27017
  2. mongorestore mongodb://root:zadig@localhost:27090 <备份数据文件/目录> --drop
  • 同步数据: 下载数据同步工具v1.15.0 Release Notes - 图3 (opens new window),执行升级 Job。

    1. 最后一行脚本 value: {{ default "http" .Values.protocol }}://{{- include "zadig.endpoint" . }}修改为系统实际访问域名/IP
    2. mongodb://zadig-mongodb:27017 修改为对应的连接串
    3. -d下面一行的zadig 修改为对应的 dbname
    4. 执行如下命令
    1. kubectl apply -f 1.15.0-upgrade-helper.yaml -n <Zadig 所在 namespace>
    1. 确保 Job 执行成功

对象存储数据恢复

如果使用 Zadig 内置的 MinIO 组件作为对象存储服务,升级后需要进行数据恢复操作

  • MinIO 数据恢复命令:
  1. kubectl port-forward svc/kr-minio -n <Zadig 所在 namespace> 9000:9000
  2. mc alias set zadig-minio http://localhost:9000 AKIAIOSFODNN72019EXAMPLE wJalrXUtnFEMI2019K7MDENGbPxRfiCYEXAMPLEKEY
  3. mc mirror ./bucket/ zadig-minio/bucket/
  • 对象存储设置: 登录 Zadig 系统,依次点击 系统设置 -> 对象存储 进入对象存储管理页面,编辑提供商/接入地址为 zadig-minio.${NAMESPACE}.svc.cluster.local:9000 的记录,将接入地址改为 kr-minio.${NAMESPACE}.svc.cluster.local:9000,点击保存。