微服务开发框架升级

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

添加Choerodon Chart仓库

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

升级register server

  • 升级服务
  1. helm upgrade register-server c7n/go-register-server \
  2. -f <(helm get values register-server) \
  3. --version 0.11.0
  • 验证升级

    • 验证命令
  1. curl $(kubectl get svc register-server -o jsonpath="{.spec.clusterIP}" -n c7n-system):8000/eureka/apps
  • 出现以下类似信息即为成功升级
  1. {
  2. "name": "go-register-server",
  3. "instance": [
  4. {
  5. "instanceId": "192.168.3.19:go-register-server:8000",
  6. "hostName": "192.168.3.19",
  7. "app": "go-register-server",
  8. "ipAddr": "192.168.3.19",
  9. "status": "UP",
  10. "overriddenstatus": "UNKNOWN",
  11. "port": {
  12. "@enabled": true,
  13. "$": 8000
  14. },
  15. "securePort": {
  16. "@enabled": false,
  17. "$": 443
  18. },
  19. "countryId": 8,
  20. "dataCenterInfo": {
  21. "name": "MyOwn",
  22. "@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"
  23. },
  24. "leaseInfo": {
  25. "renewalIntervalInSecs": 10,
  26. "durationInSecs": 90,
  27. "registrationTimestamp": 1528201698,
  28. "lastRenewalTimestamp": 1528201698,
  29. "evictionTimestamp": 0,
  30. "serviceUpTimestamp": 1528201698
  31. },
  32. "metadata": {
  33. "VERSION": "0.11.0"
  34. },
  35. "homePageUrl": "http://192.168.3.19:8000/",
  36. "statusPageUrl": "http://192.168.3.19:8000/info",
  37. "healthCheckUrl": "http://192.168.3.19:8000/health",
  38. "vipAddress": "go-register-server",
  39. "secureVipAddress": "go-register-server",
  40. "isCoordinatingDiscoveryServer": true,
  41. "lastUpdatedTimestamp": 1528201698,
  42. "lastDirtyTimestamp": 1528201698,
  43. "actionType": "ADDED"
  44. }
  45. ]
  46. }

升级config server

  • 升级服务
  1. helm upgrade config-server c7n/config-server \
  2. --set service.enable=true \
  3. -f <(helm get values config-server) \
  4. --version 0.11.0
  • 验证升级

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

升级manager service

  • 获取上一次部署时的参数
  1. helm get values manager-service
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade manager-service c7n/manager-service \
  2. -f <(helm get values manager-service) \
  3. --version 0.11.1
  • 验证升级

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

升级asgard service

  • 获取上一次部署时的参数helm get values asgard-service
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade asgard-service c7n/asgard-service \
  2. --set preJob.preConfig.datasource.url="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/manager_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
  3. --set preJob.preConfig.datasource.username=choerodon \
  4. --set preJob.preConfig.datasource.password=password \
  5. --set preJob.preInitDB.datasource.url="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/asgard_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
  6. --set preJob.preInitDB.datasource.username=choerodon \
  7. --set preJob.preInitDB.datasource.password=password \
  8. --set env.open.SPRING_DATASOURCE_URL="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/asgard_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
  9. --set env.open.SPRING_DATASOURCE_USERNAME=choerodon \
  10. --set env.open.SPRING_DATASOURCE_PASSWORD=password \
  11. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE="http://register-server.c7n-system:8000/eureka/" \
  12. --set env.open.SPRING_CLOUD_CONFIG_ENABLED=true \
  13. --set env.open.SPRING_CLOUD_CONFIG_URI="http://config-server.c7n-system:8010/" \
  14. --set env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS="kafka-0.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-1.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-2.kafka-headless.c7n-system.svc.cluster.local:9092" \
  15. --set env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_ZK_NODES="zookeeper-0.zookeeper-headless.c7n-system.svc.cluster.local:2181\,zookeeper-1.zookeeper-headless.c7n-system.svc.cluster.local:2181\,zookeeper-2.zookeeper-headless.c7n-system.svc.cluster.local:2181" \
  16. --version 0.11.1
  • 验证部署

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

升级notify service

  • 获取上一次部署时的参数
  1. helm get values notify-service
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade notify-service c7n/notify-service \
  2. --set env.open.SPRING_REDIS_DATABASE=2 \
  3. -f <(helm get values notify-service) \
  4. --version 0.11.0
  • 验证部署

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

升级iam service

  • 获取上一次部署时的参数
  1. helm get values iam-service
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade iam-service c7n/iam-service \
  2. -f <(helm get values iam-service) \
  3. --version 0.11.0
  • 验证升级

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

升级api gateway

  • 获取上一次部署时的参数
  1. helm get values api-gateway
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade api-gateway c7n/api-gateway \
  2. -f <(helm get values api-gateway) \
  3. --version 0.11.0
  • 验证升级

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

升级gateway helper

0.11版本gateway helper服务需要连接Redis数据库,请根据集群内的Redis数据库地址,替换以下参数env.open.SPRING_REDIS_HOST、env.open.SPRING_REDIS_PORT的值。
  • 升级服务
  1. helm upgrade gateway-helper c7n/gateway-helper \
  2. --set env.open.SPRING_CACHE_MULTI_L1_ENABLED=true \
  3. --set env.open.SPRING_CACHE_MULTI_L2_ENABLED=false \
  4. --set env.open.SPRING_REDIS_HOST=c7n-redis.c7n-system.svc \
  5. --set env.open.SPRING_REDIS_PORT=6379 \
  6. --set env.open.SPRING_REDIS_DATABASE=4 \
  7. -f <(helm get values gateway-helper) \
  8. --version 0.11.1
  • 验证升级

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

升级oauth server

  • 获取上一次部署时的参数
  1. helm get values oauth-server
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade oauth-server c7n/oauth-server \
  2. -f <(helm get values oauth-server) \
  3. --version 0.11.0
  • 验证升级

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

升级file service

  • 获取上一次部署时的参数
  1. helm get values file-service
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade file-service c7n/file-service \
  2. -f <(helm get values file-service) \
  3. --version 0.11.0
  • 验证升级

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

DevOps服务升级

升级devops service

0.11版本对参数进行了如下修改:原本的preJob.preConfig.mysql.database改为preJob.preConfig.datasource.url,即为manager-service数据库的完整url;原本的preJob.preConfig.mysql.username改为preJob.preConfig.datasource.username;原本的preJob.preConfig.mysql.password改为preJob.preConfig.datasource.password;原本的preJob.preInitDB.mysql.database改为preJob.preInitDB.datasource.url,即初始化数据库的完整url;原本的preJob.preInitDB.mysql.username改为preJob.preInitDB.datasource.username;原本的preJob.preInitDB.mysql.password改为preJob.preInitDB.datasource.password。
  • 获取上一次部署时的参数helm get values devops-service
  • 根据上一次部署时的参数和集群内MySQL数据库的地址,替换下面参数,升级服务
  1. helm upgrade devops-service c7n/devops-service \
  2. --set env.open.JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" \
  3. --set preJob.preConfig.datasource.host=c7n-mysql.c7n-system.svc \
  4. --set preJob.preConfig.datasource.port=3306 \
  5. --set preJob.preConfig.datasource.url="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/manager_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
  6. --set preJob.preConfig.datasource.username=choerodon \
  7. --set preJob.preConfig.datasource.password=password \
  8. --set preJob.preInitDB.datasource.host=c7n-mysql.c7n-system.svc \
  9. --set preJob.preInitDB.datasource.port=3306 \
  10. --set preJob.preInitDB.datasource.url="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/devops_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
  11. --set preJob.preInitDB.datasource.username=choerodon \
  12. --set preJob.preInitDB.datasource.password=password \
  13. --set env.open.SPRING_DATASOURCE_URL="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/devops_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
  14. --set env.open.SPRING_DATASOURCE_USERNAME=choerodon \
  15. --set env.open.SPRING_DATASOURCE_PASSWORD=password \
  16. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE="http://register-server.c7n-system:8000/eureka/" \
  17. --set env.open.SPRING_REDIS_HOST=c7n-redis.c7n-system.svc \
  18. --set env.open.SPRING_REDIS_DATABASE=3 \
  19. --set env.open.CHOERODON_EVENT_CONSUMER_KAFKA_BOOTSTRAP_SERVERS="kafka-0.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-1.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-2.kafka-headless.c7n-system.svc.cluster.local:9092" \
  20. --set env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS="kafka-0.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-1.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-2.kafka-headless.c7n-system.svc.cluster.local:9092" \
  21. --set env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_ZK_NODES="zookeeper-0.zookeeper-headless.c7n-system.svc.cluster.local:2181\,zookeeper-1.zookeeper-headless.c7n-system.svc.cluster.local:2181\,zookeeper-2.zookeeper-headless.c7n-system.svc.cluster.local:2181" \
  22. --set env.open.SPRING_CLOUD_CONFIG_ENABLED=true \
  23. --set env.open.SPRING_CLOUD_CONFIG_URI="http://config-server.c7n-system:8010/" \
  24. --set env.open.SERVICES_HARBOR_BASEURL="https://registry.example.choerodon.io" \
  25. --set env.open.SERVICES_HARBOR_USERNAME=admin \
  26. --set env.open.SERVICES_HARBOR_PASSWORD="Harbor12345" \
  27. --set env.open.SERVICES_HELM_URL="http://chart.example.choerodon.io" \
  28. --set env.open.SERVICES_GITLAB_URL="http://gitlab.example.choerodon.io" \
  29. --set env.open.SERVICES_GITLAB_SSHURL="gitlab.example.choerodon.io" \
  30. --set env.open.SERVICES_GITLAB_PASSWORD=password \
  31. --set env.open.SERVICES_GITLAB_PROJECTLIMIT=100 \
  32. --set env.open.SERVICES_GATEWAY_URL=http://api.example.choerodon.io \
  33. --set env.open.SECURITY_IGNORED="/ci\,/webhook\,/v2/api-docs\,/agent/**\,/ws/**\,/webhook/**" \
  34. --set env.open.AGENT_VERSION="0.11.0" \
  35. --set env.open.AGENT_REPOURL="https://openchart.choerodon.com.cn/choerodon/c7n/" \
  36. --set env.open.AGENT_SERVICEURL="ws://devops.example.choerodon.io/agent/" \
  37. --set env.open.TEMPLATE_VERSION_MICROSERVICE="0.11.0" \
  38. --set env.open.TEMPLATE_VERSION_MICROSERVICEFRONT="0.11.0" \
  39. --set env.open.TEMPLATE_VERSION_JAVALIB="0.11.0" \
  40. --set ingress.enable=true \
  41. --set ingress.host=devops.example.choerodon.io \
  42. --set service.enable=true \
  43. --set persistence.enabled=true \
  44. --set persistence.existingClaim="chartmuseum-pvc" \
  45. --version 0.11.1
  • 验证升级

    • 验证命令
  1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=devops-service -o jsonpath="{.items[0].status.podIP}"):8061/health | jq -r .status
  • 出现以下类似信息即为成功升级
  1. UP
  • 升级之后,请用平台 admin 用户登录平台,点击管理,使用api管理功能,然后在api测试里面选择devops-service和对应的版本0.11.1,由于环境做了权限隔离,需要删掉0.11.1版本以前部署管理员在gitops库里面的权限

devops-service > devops-check-controler > 平滑升级接口:

  1. version: 填写 0.11.0

选择第一个接口。调用完之后可以查看devops-service的devops-check-log表里面的log字段查看平滑升级信息

devops-service升级后,请在组织层下集群管理菜单上创建集群,将界面中提供的执行脚本在部署环境k8s集群中执行,执行之后原先猪齿鱼平台在上在该集群上部署的环境客户端将自动与该集群客户端进行关联,平台上在该集群部署的环境也成为激活状态。之后创建环境只需要选择集群即可,不需要再向集群中执行相应脚本,只有在集群创建时需要执行Agent安装脚本。

升级gitlab service

  • 获取上一次部署时的参数
  1. helm get values gitlab-service
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade gitlab-service c7n/gitlab-service \
  2. --set env.open.JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" \
  3. -f <(helm get values gitlab-service) \
  4. --version 0.11.1
  • 验证升级

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

敏捷管理升级

0.11版本敏捷管理增加了state-machine-service和issue-service,需要对后端数据进行迁移,请升级前备份agile-service数据库,防止网络等原因造成修复失败导致数据丢失。

部署state machine service

  • 创建数据库
  1. helm install c7n/mysql-client \
  2. --set env.MYSQL_HOST=mysql \
  3. --set env.MYSQL_PORT=3306 \
  4. --set env.MYSQL_USER=root \
  5. --set env.MYSQL_PASS=password \
  6. --set env.SQL_SCRIPT="\
  7. CREATE USER IF NOT EXISTS 'choerodon'@'%' IDENTIFIED BY 'password';\
  8. CREATE DATABASE IF NOT EXISTS state_machine_service DEFAULT CHARACTER SET utf8;\
  9. GRANT ALL PRIVILEGES ON state_machine_service.* TO choerodon@'%';\
  10. FLUSH PRIVILEGES;" \
  11. --version 0.1.0 \
  12. --name create-c7ncd-db \
  13. --namespace c7n-system
  • 根据集群替换以下参数,部署服务
  1. helm install c7n/state-machine-service \
  2. --set env.open.JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" \
  3. --set preJob.preConfig.configFile="application.yml" \
  4. --set preJob.preConfig.mysql.host=c7n-mysql.c7n-system.svc \
  5. --set preJob.preConfig.mysql.port=3306 \
  6. --set preJob.preConfig.mysql.database=manager_service \
  7. --set preJob.preConfig.mysql.username=choerodon \
  8. --set preJob.preConfig.mysql.password=password \
  9. --set preJob.preInitDB.mysql.host=c7n-mysql.c7n-system.svc \
  10. --set preJob.preInitDB.mysql.port=3306 \
  11. --set preJob.preInitDB.mysql.database=state_machine_service \
  12. --set preJob.preInitDB.mysql.username=choerodon \
  13. --set preJob.preInitDB.mysql.password=password \
  14. --set deployment.managementPort=8385 \
  15. --set env.open.SPRING_DATASOURCE_URL="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/state_machine_service?useUnicode=true&characterEncoding=utf-8&useSSL=false" \
  16. --set env.open.SPRING_DATASOURCE_USERNAME=choerodon \
  17. --set env.open.SPRING_DATASOURCE_PASSWORD=password \
  18. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE="http://register-server.c7n-system:8000/eureka/" \
  19. --set env.open.SPRING_KAFKA_BOOTSTRAP_SERVERS="kafka-0.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-1.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-2.kafka-headless.c7n-system.svc.cluster.local:9092" \
  20. --set env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS="kafka-0.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-1.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-2.kafka-headless.c7n-system.svc.cluster.local:9092" \
  21. --set env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_ZK_NODES="zookeeper-0.zookeeper-headless.c7n-system.svc.cluster.local:2181\,zookeeper-1.zookeeper-headless.c7n-system.svc.cluster.local:2181\,zookeeper-2.zookeeper-headless.c7n-system.svc.cluster.local:2181" \
  22. --set env.open.SPRING_KAFKA_PRODUCER_VALUE_SERIALIZER="org.apache.kafka.common.serialization.ByteArraySerializer" \
  23. --set env.open.SPRING_CLOUD_CONFIG_ENABLED=true \
  24. --set env.open.SPRING_CLOUD_CONFIG_URI="http://config-server.c7n-system:8010/" \
  25. --set env.open.CHOERODON_EVENT_CONSUMER_KAFKA_BOOTSTRAP_SERVERS="kafka-0.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-1.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-2.kafka-headless.c7n-system.svc.cluster.local:9092" \
  26. --name state-machine-service \
  27. --version 0.11.1 \
  28. --namespace c7n-system

参数名含义preJob.preConfig.configFile初始化配置文件名preJob.preConfig.mysql{}初始化配置所需manager-service数据库信息preJob.preInitDB.mysql{}初始化数据库所需数据库信息env.open.SPRING_DATASOURCE_URL数据库链接地址env.open.SPRING_DATASOURCE_USERNAME数据库用户名env.open.SPRING_DATASOURCE_PASSWORD数据库密码deployment.managementPort开放端口号env.open.SPRING_CLOUD_CONFIG_ENABLED启用配置中心env.open.SPRING_CLOUD_CONFIG_URI配置中心地址env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE注册服务地址env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERSkafk地址env.open.SPRING_KAFKA_BOOTSTRAP_SERVERSkafk地址env.open.CHOERODON_EVENT_CONSUMER_KAFKA_BOOTSTRAP_SERVERSkafk地址env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_ZK_NODESzookeeper地址env.open.SPRING_KAFKA_PRODUCER_VALUE_SERIALIZERKafka参数,无需修改

部署issue service

  • 创建数据库
  1. helm install c7n/mysql-client \
  2. --set env.MYSQL_HOST=mysql \
  3. --set env.MYSQL_PORT=3306 \
  4. --set env.MYSQL_USER=root \
  5. --set env.MYSQL_PASS=password \
  6. --set env.SQL_SCRIPT="\
  7. CREATE USER IF NOT EXISTS 'choerodon'@'%' IDENTIFIED BY 'password';\
  8. CREATE DATABASE IF NOT EXISTS issue_service DEFAULT CHARACTER SET utf8;\
  9. GRANT ALL PRIVILEGES ON issue_service.* TO choerodon@'%';\
  10. FLUSH PRIVILEGES;" \
  11. --version 0.1.0 \
  12. --name create-c7ncd-db \
  13. --namespace c7n-system
  • 部署服务
  1. helm install c7n/issue-service \
  2. --set env.open.JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" \
  3. --set preJob.preConfig.configFile="application.yml" \
  4. --set preJob.iamge="registry.cn-hangzhou.aliyuncs.com/choerodon-tools/dbtool:0.5.2" \
  5. --set preJob.preConfig.enable=true \
  6. --set preJob.preConfig.mysql.host=c7n-mysql.c7n-system.svc \
  7. --set preJob.preConfig.mysql.port=3306 \
  8. --set preJob.preConfig.mysql.database=manager_service \
  9. --set preJob.preConfig.mysql.username=choerodon \
  10. --set preJob.preConfig.mysql.password=password \
  11. --set preJob.preInitDB.mysql.host=c7n-mysql.c7n-system.svc \
  12. --set preJob.preInitDB.mysql.port=3306 \
  13. --set preJob.preInitDB.mysql.database=issue_service \
  14. --set preJob.preInitDB.mysql.username=choerodon \
  15. --set preJob.preInitDB.mysql.password=password \
  16. --set env.open.SPRING_DATASOURCE_URL="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/issue_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true" \
  17. --set env.open.SPRING_DATASOURCE_USERNAME=choerodon \
  18. --set env.open.SPRING_DATASOURCE_PASSWORD=password \
  19. --set env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE="http://register-server.c7n-system:8000/eureka/" \
  20. --set env.open.SPRING_KAFKA_BOOTSTRAP_SERVERS="kafka-0.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-1.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-2.kafka-headless.c7n-system.svc.cluster.local:9092" \
  21. --set env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS="kafka-0.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-1.kafka-headless.c7n-system.svc.cluster.local:9092\,kafka-2.kafka-headless.c7n-system.svc.cluster.local:9092" \
  22. --set env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_ZK_NODES="zookeeper-0.zookeeper-headless.c7n-system.svc.cluster.local:2181\,zookeeper-1.zookeeper-headless.c7n-system.svc.cluster.local:2181\,zookeeper-2.zookeeper-headless.c7n-system.svc.cluster.local:2181" \
  23. --set env.open.SPRING_CLOUD_CONFIG_ENABLED=true \
  24. --set env.open.SPRING_CLOUD_CONFIG_URI="http://config-server.c7n-system:8010/" \
  25. --set env.open.SERVICE_ATTACHMENT_URL="http://minio.example.choerodon.io/agile-service" \
  26. --name issue-service \
  27. --version 0.11.1 \
  28. --namespace c7n-system

参数名含义preJob.preConfig.configFile初始化配置文件名preJob.iamgepreJob镜像地址preJob.preConfig.enable是否开启初始化配置preJob.preConfig.mysql{}初始化配置所需manager-service数据库信息preJob.preInitDB.mysql{}初始化数据库所需数据库信息env.open.SPRING_DATASOURCE_URL数据库链接地址env.open.SPRING_DATASOURCE_USERNAME数据库用户名env.open.SPRING_DATASOURCE_PASSWORD数据库密码env.open.SPRING_CLOUD_CONFIG_ENABLED启用配置中心env.open.SPRING_CLOUD_CONFIG_URI配置中心地址env.open.EUREKA_CLIENT_SERVICEURL_DEFAULTZONE注册服务地址env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERSkafk地址env.open.SPRING_KAFKA_BOOTSTRAP_SERVERSkafk地址env.open.SPRING_CLOUD_STREAM_KAFKA_BINDER_ZK_NODESzookeeper地址env.open.env.open.SERVICE_ATTACHMENT_URLminio地址env.open.SPRING_REDIS_HOSTRedis数据库地址env.open.SPRING_REDIS_POSTRedis数据库端口

升级agile service

请确保env.open.SPRING_DATASOURCE_URL参数中包含allowMultiQueries=true属性,否则会造成数据迁移失败。
  • 获取上一次部署时的参数
  1. helm get values agile-service
  • 升级服务
  1. helm upgrade agile-service c7n/agile-service \
  2. --set env.open.JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" \
  3. -f <(helm get values agile-service) \
  4. --set env.open.SPRING_DATASOURCE_URL="jdbc:mysql://c7n-mysql.c7n-system.svc:3306/agile_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true" \
  5. --version 0.11.1
  • 验证升级

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

数据迁移

部署成功之后,需要进行数据迁移,将会把敏捷服务的优先级,问题类型迁移至issue服务,将状态交由状态机服务管理。请确认issue服务,状态机服务正确启动后,再进行操作。
  • 进入example.choerodon.io/#/iam/api-test选择agile_service -> fix-data-controller从0.10升级到0.11 - 图1

  • 点击/v1/fix_data/move_status右侧按钮进入API测试页面,执行第一个接口从0.10升级到0.11 - 图2

  • 点击发送即可,等待issue-service服务日志中出现修复成功,数据即升级成功。如果日志中抛出了异常,则需要删除state-machine-service和issue-service数据库,然后重新部署两个服务,并重新执行此接口。

  • 点击/v1/fix_data/update_all_data右侧按钮进入API测试页面,执行第二个接口

从0.10升级到0.11 - 图3

  • 点击发送即可,等待agile-service服务日志中出现v0.11.0迁移数据步骤2: 执行完成!,数据即升级成功,如果日志中抛出了异常,则重试即可。

  • 注意事项

    • 如果第一个迁移接口执行失败,需要删除state-machine-service和issue-service数据库,然后重新部署两个服务,并重新执行此接口。state-machine-service和issue-service是新增服务,不会对原有数据造成影响。

    • 如果第二个迁移接口执行失败,日志中出现SQL错误,请确认agile服务部署时,SPRING_DATASOURCE_URL参数中包含allowMultiQueries=true属性。

    • 如果升级过程中遇到其它问题,请至猪齿鱼论坛提问。

测试管理升级

  • 升级服务
  1. helm upgrade test-manager-service c7n/test-manager-service \
  2. --set env.open.JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" \
  3. -f <(helm get values test-manager-service) \
  4. --version 0.11.1
  • 验证部署

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

知识管理升级

  • 升级XWiki

XWiki-0.11.0版本需要依赖Choerodon微服务框架的0.11.0版本功能,在升级XWiki之前,请确保Choerodon微服务框架已经升级到0.11.0版本。

  • 使用admin用户登录wiki系统(直接访问wiki系统的域名),然后点击顶部导航栏右侧的齿轮(设置)按钮,进入系统设置: 设置->内容->导入 ,进入到导入的设置页,然后上传Choerodon-wiki-0.11.0-update.xar更新包 ,下载地址
  • 上传成功之后,点击刚上传的xar包,在页面右侧会出现需要导入的包的内容,滚动页面到最下方,点击导入按钮,等待导入完成即可。
  • 在wiki系统部署时绑定的的存储卷目录下,找到/data下的hibernate.cfg.xml文件,然后编辑文件,找到<mapping resource="mailsender.hbm.xml"/>并在下面添加一行<mapping resource="c7n_extension.hbm.xml"/>
  • 修改XWiki镜像为registry.cn-hangzhou.aliyuncs.com/choerodon-tools/xwiki:10.4-mysql-tomcat-0.11.0,重启XWiki之后,访问wiki系统(直接访问wiki系统的域名),等待初始化完成即可(如果系统文档较多,则初始化耗时较长,请耐心等待)。
    • 获取上一次部署时的参数
  1. helm get values wiki-service
  • 根据上一次部署时的参数,替换下面参数,升级wiki-service服务
  1. helm upgrade wiki-service c7n/wiki-service \
  2. --set env.open.JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" \
  3. -f <(helm get values wiki-service) \
  4. --version 0.11.0
  • 更新旧数据

    • 进入Choerodon平台,选择菜单API管理下的API测试
    • 选择微服务wiki-service,版本为0.11.0,打开wiki-scanning-controller,使用同步项目下的成员到wiki系统的组织成员组里面接口,点击搜索按钮跳转页面。
    • 点击接口测试,点击发送之后,wiki系统就会自动修复0.11.0版本的数据了。

整合前端升级

  • 获取上一次部署时的参数
  1. helm get values choerodon-front
  • 根据上一次部署时的参数,替换下面参数,升级服务
  1. helm upgrade choerodon-front c7n/choerodon-front \
  2. --set env.open.PRO_WEBSOCKET_SERVER="ws://notify.example.choerodon.io" \
  3. -f <(helm get values choerodon-front) \
  4. --version 0.11.1
  • 验证升级

    • 验证命令
  1. curl $(kubectl get svc choerodon-front -o jsonpath="{.spec.clusterIP}" -n c7n-system)
  • 出现以下类似信息即为成功升级
  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>