微服务开发框架升级

添加Choerodon Chart仓库

在0.22将helm2升级到helm3,后续不再支持helm2。

  1. helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
  2. helm repo update

服务列表

在0.22版本更换框架为hzero开源框架,对c7n服务进行了拆分了重构,c7n原框架服务替换为hzero框架对应服务,数据库也进行了相应更换。

服务类别原服务名新服务名原数据库新数据库服务是否变更
框架基础服务api-gatewayhzero-gatewaybase_servicehzero_platform
框架基础服务oauth-serverhzero-oauthbase_servicehzero_platform
框架基础服务go-register-serverhzero-register--
框架基础服务asgard-servicehzero-asgardasgard_serviceasgard_service
框架基础服务file-servicehzero-file-hzero_file
框架基础服务notify-servicehzero-messagenotify_servicehzero_message
框架基础服务manager-servicehzero-adminmanager_servicehzero_admin
框架基础服务base-servicehzero-iambase_servicehzero_platform
框架基础服务base-servicehzero-platformbase_servicehzero_platform
DevOps服务devops-servicedevops-servicedevops_servicedevops_service
DevOps服务workflow-serviceworkflow-serviceworkflow_serviceworkflow_service
DevOps服务gitlab-servicegitlab-service--
敏捷服务agile-serviceagile-serviceagile_serviceagile_service
敏捷服务test-manager-servicetest-manager-servicetest_manager_servicetest_manager_service
敏捷服务knowledgebase-serviceknowledgebase-serviceknowledgebase_serviceknowledgebase_service

数据备份

  • 数据库备份
  • 各服务helm配置备份

    1. for name in $(helm list | awk '{print $1}' | grep -v NAME) ; do helm get values $name > $name.yaml; done

删除旧版猪齿鱼框架服务

因为此次升级需要更换框架服务,需删掉之前服务升级。

  1. helm delete --purge base-service
  2. helm delete --purge api-gateway
  3. helm delete --purge file-service
  4. helm delete --purge manager-service
  5. helm delete --purge notify-service
  6. helm delete --purge oauth-server
  7. helm delete --purge register-server
  8. helm delete --purge asgard-service

升级 helm

因为从 0.22 版本开始支持 helm3,所以升级前还需要将 helm2 实例升级到 helm3 实例。

  • 下载 helm3 客户端

    1. 下载 helm3 压缩包

      1. curl -L -o helm-v3.2.4-linux-amd64.tar.gz https://file.choerodon.com.cn/kubernetes-helm/v3.2.4/helm-v3.2.4-linux-amd64.tar.gz
    2. 解压压缩包(以linux-amd64为例)

      1. tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
    3. 将文件移动到PATH目录中,并重命名为 helm3(以linux-amd64为例)

      1. sudo mv linux-amd64/helm /usr/bin/helm3
  • 配置 helm3 客户端

    安装 helm3 的 2to3 插件

    1. helm3 plugin install https://github.com/helm/helm-2to3

    添加默认仓库

    1. helm3 repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
    2. helm3 repo update
  • 迁移 helm2 实例

    • 验证所有示例是否都能迁移
    1. for r in $(helm list | awk '{print $1}' | grep -v NAME); do helm3 2to3 convert $r --dry-run; done
    • 迁移实例
    1. for r in $(helm list | awk '{print $1}' | grep -v NAME); do helm3 2to3 convert $r; done
    • 清理 helm2 实例
    1. helm3 2to3 cleanup
    • 最后替换 helm3 替换 helm
    1. # which helm
    2. /usr/bin/helm
    3. # mv /usr/bin/helm3 /usr/bin/helm
    4. mv:是否覆盖"/usr/bin/helm" y
    5. # helm version
    6. version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}

创建数据库

开始进行升级部署前请先备份好数据库!
请按以下顺序依次进行升级部署,请不要随意调整升级顺序。升级后可能数据库结构会发生改变,故不能进行版本回退。文档升级命令中的RELEASE NAME是在基于分步安装文档之上编写的,若你在安装时指定了其他RELEASE NAME,请以你安装时指定的RELEASE NAME为准。一键部署安装的请执行helm list命令查看RELEASE NAME。

  • 编写参数配置文件 create-c7nfw-db.yaml

    1. env:
    2. MYSQL_HOST: c7n-mysql.c7n-system.svc
    3. MYSQL_PORT: "3306"
    4. MYSQL_USER: root
    5. MYSQL_PASS: password
    6. SQL_SCRIPT: |
    7. CREATE USER IF NOT EXISTS 'choerodon'@'%' IDENTIFIED BY 'password';
    8. CREATE DATABASE IF NOT EXISTS hzero_platform DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    9. CREATE DATABASE IF NOT EXISTS hzero_message DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    10. CREATE DATABASE IF NOT EXISTS hzero_file DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    11. CREATE DATABASE IF NOT EXISTS hzero_monitor DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    12. CREATE DATABASE IF NOT EXISTS hzero_admin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    13. GRANT ALL PRIVILEGES ON hzero_platform.* TO choerodon@'%';
    14. GRANT ALL PRIVILEGES ON hzero_message.* TO choerodon@'%';
    15. GRANT ALL PRIVILEGES ON hzero_file.* TO choerodon@'%';
    16. GRANT ALL PRIVILEGES ON hzero_monitor.* TO choerodon@'%';
    17. GRANT ALL PRIVILEGES ON hzero_admin.* TO choerodon@'%';
    18. FLUSH PRIVILEGES;
  • 执行安装

    1. helm upgrade --install create-c7nfw-db c7n/mysql-client \
    2. -f create-c7nfw-db.yaml \
    3. --version 0.1.0 \
    4. --namespace c7n-system

数据迁移

  • 编写配置文件 data-migration.yaml

    1. env:
    2. open:
    3. # 默认迁移事件
    4. MODULE_NAME: emailConfig
    5. # asgard 数据库
    6. SPRING_DATASOURCE_ASGARD_SERVICE_PASSWORD: password
    7. SPRING_DATASOURCE_ASGARD_SERVICE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/asgard_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    8. SPRING_DATASOURCE_ASGARD_SERVICE_USERNAME: choerodon
    9. # 原base-service 数据库
    10. SPRING_DATASOURCE_BASE_C7N_PASSWORD: password
    11. SPRING_DATASOURCE_BASE_C7N_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/base_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    12. SPRING_DATASOURCE_BASE_C7N_USERNAME: choerodon
    13. # 初始化脚本地址
    14. # 初始化数据库工具也进行了更新 不用指定特定数据库 只要ip只向hzero_...数据库
    15. SPRING_DATASOURCE_C7N_PASSWORD: password
    16. SPRING_DATASOURCE_C7N_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    17. SPRING_DATASOURCE_C7N_USERNAME: choerodon
    18. # 新hzero_message 数据库
    19. SPRING_DATASOURCE_HZERO_MESSAGE_PASSWORD: password
    20. SPRING_DATASOURCE_HZERO_MESSAGE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_message?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    21. SPRING_DATASOURCE_HZERO_MESSAGE_USERNAME: choerodon
    22. # 新hzero_platform 数据库
    23. SPRING_DATASOURCE_HZERO_PLATFORM_PASSWORD: password
    24. SPRING_DATASOURCE_HZERO_PLATFORM_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    25. SPRING_DATASOURCE_HZERO_PLATFORM_USERNAME: choerodon
    26. # 原notify_service 数据库
    27. SPRING_DATASOURCE_NOTIFY_C7N_PASSWORD: password
    28. SPRING_DATASOURCE_NOTIFY_C7N_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/notify_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    29. SPRING_DATASOURCE_NOTIFY_C7N_USERNAME: choerodon
  • 执行安装

    1. helm upgrade --install data-migration c7n/data-migration \
    2. -f data-migration.yaml \
    3. --version 0.22.3 \
    4. --namespace c7n-system
  • 验证迁移

    • 查询服务日志,出现以下日志,数据迁移成功! txt 修复完成,正常退出

      此次升级更换底层框架,数据迁移逻辑较为复杂,请注意迁移服务日志,如果出现异常信息,不能再继续升级。 迁移失败,会告知当前迁移步骤,更改MODULE_NAME:为当前失败步骤,尝试重复迁移。

部署 hzero register

  • 编写参数配置文件 hzero-register.yaml

    1. env:
    2. open:
    3. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
  • 执行安装

    1. helm upgrade --install hzero-register c7n/hzero-register \
    2. -f hzero-register.yaml \
    3. --version 0.22.2 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get svc hzero-register -o jsonpath="{.spec.clusterIP}" -n c7n-system):8001/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero admin

  • 编写参数配置文件 hzero-admin.yaml

    1. preJob:
    2. preInitDB:
    3. datasource:
    4. url: jdbc:mysql://c7n-mysql.c7n-system:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    5. username: choerodon
    6. password: password
    7. env:
    8. open:
    9. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    10. HZERO_AUTO_REFRESH_SWAGGER_ENABLE: true
    11. SPRING_REDIS_HOST: c7n-redis.c7n-system
    12. SPRING_REDIS_PORT: 6379
    13. # 此db不可更改
    14. SPRING_REDIS_DATABASE: 1
    15. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    16. SPRING_DATASOURCE_USERNAME: choerodon
    17. SPRING_DATASOURCE_PASSWORD: password
  • 部署服务

    1. helm upgrade --install hzero-admin c7n/hzero-admin \
    2. -f hzero-admin.yaml \
    3. --version 0.22.3 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-admin -o jsonpath="{.items[0].status.podIP}"):8063/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero iam

  • 编写参数配置文件 hzero-iam.yaml

    1. preJob:
    2. preInitDB:
    3. datasource:
    4. url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    5. username: choerodon
    6. password: password
    7. driver: com.mysql.jdbc.Driver
    8. env:
    9. open:
    10. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    11. CHOERODON_GATEWAY_URL: http://api.example.choerodon.io
    12. SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
    13. SPRING_REDIS_PORT: 6379
    14. # 此db不可更改
    15. SPRING_REDIS_DATABASE: 1
    16. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    17. SPRING_DATASOURCE_USERNAME: choerodon
    18. SPRING_DATASOURCE_PASSWORD: password
    19. HZERO_EXPORT_COREPOOLSIZE: 1
  • 部署服务

    1. helm upgrade --install hzero-iam c7n/hzero-iam \
    2. -f hzero-iam.yaml \
    3. --version 0.22.4 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-iam -o jsonpath="{.items[0].status.podIP}"):8031/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero asgard

  • 编写参数配置文件 hzero-asgard.yaml

    1. preJob:
    2. preInitDB:
    3. datasource:
    4. password: password
    5. url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    6. username: choerodon
    7. driver: com.mysql.jdbc.Driver
    8. env:
    9. open:
    10. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    11. SPRING_DATASOURCE_PASSWORD: password
    12. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/asgard_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    13. SPRING_DATASOURCE_USERNAME: choerodon
    14. SPRING_REDIS_DATABASE: 7
    15. SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
    16. SPRING_REDIS_PORT: 6379
  • 升级服务

    1. helm upgrade --install hzero-asgard c7n/hzero-asgard \
    2. -f hzero-asgard.yaml \
    3. --version 0.22.4 \
    4. --namespace c7n-system
  • 验证升级

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-asgard -o jsonpath="{.items[0].status.podIP}"):8041/actuator/health | jq -r .status
    • 出现以下类似信息即为成功升级
    1. UP

部署 hzero swagger

  • 若需了解项目详情及各项参数含义,请移步 choerodon/hzero-swagger

  • 编写参数配置文件 hzero-swagger.yaml

    1. env:
    2. open:
    3. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    4. HZERO_OAUTH_URL: https://api.example.choerodon.io/oauth/oauth/authorize
    5. SPRING_REDIS_HOST: c7n-redis.c7n-system
    6. SPRING_REDIS_PORT: 6379
    7. # 此db不可更改
    8. SPRING_REDIS_DATABASE: 1
    9. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    10. SPRING_DATASOURCE_USERNAME: choerodon
    11. SPRING_DATASOURCE_PASSWORD: password
  • 部署服务

    1. helm upgrade --install hzero-swagger c7n/hzero-swagger \
    2. -f hzero-swagger.yaml \
    3. --version 0.22.1 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-swagger -o jsonpath="{.items[0].status.podIP}"):8051/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero gateway

  • 编写参数配置文件 hzero-gateway.yaml

    1. env:
    2. open:
    3. SPRING_REDIS_HOST: c7n-redis.c7n-system
    4. SPRING_REDIS_PORT: 6379
    5. # 此db不可更改
    6. SPRING_REDIS_DATABASE: 4
    7. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    8. SPRING_DATASOURCE_USERNAME: choerodon
    9. SPRING_DATASOURCE_PASSWORD: password
    10. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    11. ingress:
    12. enabled: true
    13. host: api.example.choerodon.io
  • 部署服务

    1. helm upgrade --install hzero-gateway c7n/hzero-gateway \
    2. -f hzero-gateway.yaml \
    3. --version 0.22.4 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-gateway -o jsonpath="{.items[0].status.podIP}"):8081/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero oauth

  • 若需了解项目详情及各项参数含义,请移步 choerodon/hzero-oauth

  • 编写参数配置文件 hzero-oauth.yaml

    1. env:
    2. open:
    3. # 如果使用https 该参数设置为true
    4. HZERO_OAUTH_LOGIN_ENABLE_HTTPS: false
    5. HZERO_OAUTH_LOGIN_SUCCESS_URL: http://app.example.choerodon.io
    6. HZERO_OAUTH_LOGIN_DEFAULT_CLIENT_ID: choerodon
    7. HZERO_GATEWAY_URL: http://api.example.choerodon.io
    8. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    9. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    10. SPRING_DATASOURCE_USERNAME: choerodon
    11. SPRING_DATASOURCE_PASSWORD: password
    12. SPRING_REDIS_HOST: c7n-redis.c7n-system
    13. SPRING_REDIS_PORT: 6379
    14. # 此db不可更改
    15. SPRING_REDIS_DATABASE: 3
  • 部署服务

    1. helm upgrade --install hzero-oauth c7n/hzero-oauth \
    2. -f hzero-oauth.yaml \
    3. --version 0.22.2 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-oauth -o jsonpath="{.items[0].status.podIP}"):8021/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero platform

  • 编写参数配置文件 hzero-platform.yaml

    1. preJob:
    2. preInitDB:
    3. datasource:
    4. url: jdbc:mysql://c7n-mysql.c7n-system:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    5. username: choerodon
    6. password: password
    7. driver: com.mysql.jdbc.Driver
    8. env:
    9. open:
    10. HZERO_PLATFORM_HTTP_PROTOCOL: http
    11. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    12. SPRING_REDIS_HOST: c7n-redis.c7n-system
    13. SPRING_REDIS_PORT: 6379
    14. # 此db不可更改
    15. SPRING_REDIS_DATABASE: 1
    16. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    17. SPRING_DATASOURCE_USERNAME: choerodon
    18. SPRING_DATASOURCE_PASSWORD: password
    19. HZERO_EXPORT_COREPOOLSIZE: 1
  • 部署服务

    1. helm upgrade --install hzero-platform c7n/hzero-platform \
    2. -f hzero-platform.yaml \
    3. --version 0.22.2 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-platform -o jsonpath="{.items[0].status.podIP}"):8101/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero monitor

  • 若需了解项目详情及各项参数含义,请移步 choerodon/hzero-monitor

  • 编写参数配置文件 hzero-monitor.yaml

    1. preJob:
    2. preInitDB:
    3. datasource:
    4. url: jdbc:mysql://c7n-mysql.c7n-system:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    5. username: choerodon
    6. password: password
    7. env:
    8. open:
    9. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    10. SPRING_REDIS_HOST: c7n-redis.c7n-system
    11. SPRING_REDIS_PORT: 6379
    12. # 此db不可更改
    13. SPRING_REDIS_DATABASE: 1
    14. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_monitor?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    15. SPRING_DATASOURCE_USERNAME: choerodon
    16. SPRING_DATASOURCE_PASSWORD: password
  • 部署服务

    1. helm upgrade --install hzero-monitor c7n/hzero-monitor \
    2. -f hzero-monitor.yaml \
    3. --version 0.22.4 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-monitor -o jsonpath="{.items[0].status.podIP}"):8261/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero file

  • 编写参数配置文件 hzero-file.yaml

    1. preJob:
    2. preInitDB:
    3. datasource:
    4. url: jdbc:mysql://c7n-mysql.c7n-system:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    5. username: choerodon
    6. password: password
    7. driver: com.mysql.jdbc.Driver
    8. env:
    9. open:
    10. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    11. MINIO_ACCESSKEY: accesskey
    12. MINIO_ENDPOINT: https://minio.example.choerodon.io
    13. MINIO_SECRETKEY: secretkey
    14. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_file?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    15. SPRING_DATASOURCE_USERNAME: choerodon
    16. SPRING_DATASOURCE_PASSWORD: password
    17. SPRING_REDIS_HOST: c7n-redis.c7n-system
    18. SPRING_REDIS_PORT: 6379
    19. # 此db不可更改
    20. SPRING_REDIS_DATABASE: 1
    21. SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE: 200MB
    22. SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE: 200MB
    23. FILE_GATEWAY_URL: https://api.example.choerodon.io/hfle
  • 部署服务

    1. helm upgrade --install hzero-file c7n/hzero-file \
    2. -f hzero-file.yaml \
    3. --version 0.22.4 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-file -o jsonpath="{.items[0].status.podIP}"):8111/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 hzero message

  • 编写参数配置文件 hzero-message.yaml

    1. preJob:
    2. preInitDB:
    3. datasource:
    4. url: jdbc:mysql://c7n-mysql.c7n-system:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    5. username: choerodon
    6. password: password
    7. env:
    8. open:
    9. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://hzero-register.c7n-system:8000/eureka/
    10. HZERO_WEBSOCKET_OAUTHURL: http://hzero-oauth/oauth/api/user
    11. SPRING_REDIS_HOST: c7n-redis.c7n-system
    12. SPRING_REDIS_PORT: 6379
    13. # 此db不可更改
    14. SPRING_REDIS_DATABASE: 1
    15. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system:3306/hzero_message?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
    16. SPRING_DATASOURCE_USERNAME: choerodon
    17. SPRING_DATASOURCE_PASSWORD: password
    18. ingress:
    19. enabled: true
    20. host: notify.example.choerodon.io
  • 部署服务

    1. helm upgrade --install hzero-message c7n/hzero-message \
    2. -f hzero-message.yaml \
    3. --version 0.22.10 \
    4. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=hzero-message -o jsonpath="{.items[0].status.podIP}"):8121/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

敏捷管理升级

开始进行升级部署前请先备份好数据库。

此次升级数据库初始化工具也进行了升级;更改了菜单数据初始化方式;本服务数据初始化使用preJob.preInitDB.datasource.xxx参数和之前一样; 菜单数据初始化使用preJob.preInitDB.datasources.platform.xxx,可支持框架数据和业务数据分库初始化菜单

升级 agile service

  • 升级服务

    1. helm upgrade agile-service c7n/agile-service \
    2. -f <(helm get values agile-service --namespace c7n-system) \
    3. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://hzero-register.c7n-system:8000/eureka/ \
    4. --set preJob.preInitDB.datasource.url='jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai' \
    5. --set preJob.preInitDB.datasources.platform.url='jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai' \
    6. --set preJob.preInitDB.datasources.platform.username=choerodon \
    7. --set preJob.preInitDB.datasources.platform.password=password \
    8. --set preJob.preInitDB.datasources.platform.driver=com.mysql.jdbc.Driver \
    9. --version 0.22.2 \
    10. --namespace c7n-system
  • 验证升级

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=agile-service -o jsonpath="{.items[0].status.podIP}"):8379/actuator/health | jq -r .status
    • 出现以下类似信息即为成功升级
    1. UP

升级 test manager service

  • 升级服务

    1. helm upgrade test-manager-service c7n/test-manager-service \
    2. -f <(helm get values test-manager-service --namespace c7n-system) \
    3. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://hzero-register.c7n-system:8000/eureka/ \
    4. --set preJob.preInitDB.datasource.url='jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai' \
    5. --set preJob.preInitDB.datasources.platform.url='jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai' \
    6. --set preJob.preInitDB.datasources.platform.username=choerodon \
    7. --set preJob.preInitDB.datasources.platform.password=password \
    8. --set preJob.preInitDB.datasources.platform.driver=com.mysql.jdbc.Driver \
    9. --version 0.22.2 \
    10. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=test-manager-service -o jsonpath="{.items[0].status.podIP}"):8094/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

升级 knowledgebase service

请再次确认数据库已备份完成,再进行 knowledgebase service 的部署工作!!!

  • 升级服务

    1. helm upgrade knowledgebase-service c7n/knowledgebase-service \
    2. -f <(helm get values knowledgebase-service --namespace c7n-system) \
    3. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://hzero-register.c7n-system:8000/eureka/ \
    4. --set preJob.preInitDB.datasource.url='jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai' \
    5. --set preJob.preInitDB.datasources.platform.url='jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai' \
    6. --set preJob.preInitDB.datasources.platform.username=choerodon \
    7. --set preJob.preInitDB.datasources.platform.password=password \
    8. --set preJob.preInitDB.datasources.platform.driver=com.mysql.jdbc.Driver \
    9. --set env.open.SPRING_REDIS_HOST=c7n-redis.c7n-system.svc \
    10. --set env.open.SPRING_REDIS_PORT=6379 \
    11. --set env.open.SPRING_REDIS_DATABASE=14 \
    12. --version 0.22.1 \
    13. --namespace c7n-system
  • 验证部署

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=knowledgebase-service -o jsonpath="{.items[0].status.podIP}"):8281/actuator/health | jq -r .status
    • 出现以下类似信息即为成功部署
    1. UP

DevOps服务升级

升级gitlab service

  • 升级gitlab-service

    1. helm upgrade gitlab-service c7n/gitlab-service \
    2. -f <(helm get values gitlab-service --namespace c7n-system) \
    3. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://hzero-register.c7n-system:8000/eureka/ \
    4. --version 0.22.1 \
    5. --namespace c7n-system
  • 验证升级

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=gitlab-service -o jsonpath="{.items[0].status.podIP}"):8071/actuator/health | jq -r .status
    • 出现以下类似信息即为成功升级
    1. UP

升级workflow service

  • 升级workflow-service

    1. helm upgrade workflow-service c7n/workflow-service \
    2. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://hzero-register.c7n-system:8000/eureka/ \
    3. -f <(helm get values workflow-service --namespace c7n-system) \
    4. --version 0.22.2 \
    5. --namespace c7n-system
  • 验证升级

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=workflow-service -o jsonpath="{.items[0].status.podIP}"):8066/actuator/health | jq -r .status
    • 出现以下类似信息即为成功升级
    1. UP

升级devops service

  • 升级devops-service:

    1. helm upgrade devops-service c7n/devops-service \
    2. --set env.open.AGENT_VERSION="0.22.3" \
    3. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://hzero-register.c7n-system:8000/eureka/ \
    4. --set env.open.AGENT_SERVICEURL=ws://devops.example.choerodon.io/websocket \
    5. --set preJob.preInitDB.datasource.url='jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai' \
    6. --set preJob.preInitDB.datasources.platform.url='jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai' \
    7. --set preJob.preInitDB.datasources.platform.username=choerodon \
    8. --set preJob.preInitDB.datasources.platform.password=password \
    9. --set preJob.preInitDB.datasources.platform.driver=com.mysql.jdbc.Driver \
    10. -f <(helm get values devops-service --namespace c7n-system) \
    11. --version 0.22.12 \
    12. --namespace c7n-system
    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=devops-service -o jsonpath="{.items[0].status.podIP}"):8061/actuator/health | jq -r .status
    • 出现以下类似信息即为成功升级
    1. UP
    • 数据迁移部分,请执行以下命令查看devops-service数据迁移的日志。见到”修复数据完成”字样则完成了数据迁移,否则出现异常则在总前端升级之后,去平台层手动调用接口重试数据迁移(请使用管理员用户登陆平台,在管理界面的平台服务->平台接口->devops-service->devops-check-controller里面调用数据修复接口/v1/upgrade,参数传入为0.21.0)。
    1. kubectl logs -n c7n-system $(kubectl get po -n c7n-system -l choerodon.io/release=devops-service -o jsonpath="{.items[0].metadata.name}") -f | grep Check

自Choerodon 0.22.0版本开始,C7N agent中helm组件已由V2升级至V3,对集群中实例进行helm操作,helm指令需为 v3.2.4 版本。 若未达到要求版本,请先更新helm指令后再进行后续操作。

整合前端升级

升级hzero-front

  • 编写参数配置文件 hzero-front.yaml

    1. env:
    2. open:
    3. BUILD_CLIENT_ID: choerodon
    4. BUILD_API_HOST: http://api.example.choerodon.io
    5. #默认websocket
    6. BUILD_WEBSOCKET_HOST: ws://ws.hft.jajabjbj.top
    7. ingress:
    8. enabled: true
    9. host: hzero.example.choerodon.io
  • 部署服务

  1. helm upgrade --install hzero-front c7n/hzero-front \
  2. -f hzero-front.yaml \
  3. --version 0.22.1 \
  4. --namespace c7n-system
  • 验证部署

    • 验证命令

      1. curl $(kubectl get svc hzero-front -o jsonpath="{.spec.clusterIP}" -n c7n-system):80
    • 出现以下类似信息即为成功部署

      1. !doctype html><html lang="zh"><head><meta charset="utf-8"/><title>HZERO</title><link rel="shortcut icon" href="/manifest.json"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><meta name="format-detection" content="telephone=no"/>...

升级choerodon-front

  • 升级服务

    1. helm upgrade choerodon-front c7n/choerodon-front \
    2. -f <(helm get values choerodon-front --namespace c7n-system) \
    3. --set env.open.HZERO_FRONT=" http://hzero.example.choerodon.io" \
    4. --version 0.22.1 \
    5. --namespace c7n-system
  • 验证升级

    • 验证命令
    1. curl $(kubectl get svc choerodon-front -o jsonpath="{.spec.clusterIP}" -n c7n-system):8080
    • 出现以下类似信息即为成功升级
    1. <!DOCTYPE html><html><head><meta http-equiv="Content-type"content="text/html; charset=utf-8"><title>Choerodon</title><link rel="shortcut icon"href="favicon.ico"></head><body><div id="app"></div><script type="text/javascript"src="app/vendor_19e4b950.js"></script><script type="text/javascript"src="app/main_19e4b950.js"></script></body></html>

    默认登录用户

    升级完成后,默认的管理员用户名密码为 [admin/Admin@123!],可使用此用户密码登陆系统。安装完成后建议立即在个人中心修改默认密码。

更改Minio Bucket权限

对于之前0.22版本之前创建的文件夹,需要手动在minio界面更改权限为( * Read and Write)。 从0.21升级到0.22 - 图1