微服务开发框架升级

请按以下顺序依次进行升级部署,请不要随意调整升级顺序。升级后可能数据库结构会发生改变,故不能进行版本回退。文档升级命令中的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

注意事项

  • 如果报错提示job已存在,直接执行下述命令删除历史job即可

    1. kubectl delete job --all -n c7n-system

升级register server

  • 升级服务

    1. helm upgrade register-server c7n/go-register-server \
    2. -f <(helm get values register-server) \
    3. --version 0.19.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": "10.233.64.95:go-register-server:8000",
    6. "hostName": "10.233.64.95",
    7. "app": "go-register-server",
    8. "ipAddr": "10.233.64.95",
    9. "status": "UP",
    10. ...
    11. "metadata": {
    12. "VERSION": "0.19.0"
    13. },
    14. }
    15. ]
    16. }

升级manager service

  • 升级服务

    1. helm upgrade manager-service c7n/manager-service \
    2. -f <(helm get values manager-service) \
    3. --version 0.19.2
  • 验证升级

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

升级asgard service

  • 升级服务

    1. helm upgrade asgard-service c7n/asgard-service \
    2. -f <(helm get values asgard-service) \
    3. --version 0.19.2
  • 验证升级

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

升级notify service

  • 升级服务

    1. helm upgrade notify-service c7n/notify-service \
    2. -f <(helm get values notify-service) \
    3. --version 0.19.2
  • 验证部署

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

移除 iam service

  1. helm delete --purge iam-service

安装 base service

0.19以前的base-service的数据库为iam_service,0.19以后更名为base_service,对于配置文件中是使用iam_service还是base_service遵从一下标准: 如果是新安装的版本,就使用base_service,如果是升级上来的版本,原版本数据库使用的是什么数据库名称,配置文件中就配置对应的数据库名称

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

  • 编写参数配置文件 base-service.yaml

    1. preJob:
    2. timeout: 300
    3. preConfig:
    4. datasource:
    5. url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/manager_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true
    6. username: choerodon
    7. password: password
    8. preInitDB:
    9. datasource:
    10. url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/iam_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true
    11. username: choerodon
    12. password: password
    13. env:
    14. open:
    15. SPRING_CLOUD_CONFIG_ENABLED: true
    16. SPRING_CLOUD_CONFIG_URI: http://register-server.c7n-system:8000/
    17. SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc/iam_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true
    18. SPRING_DATASOURCE_USERNAME: choerodon
    19. SPRING_DATASOURCE_PASSWORD: password
    20. SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
    21. SPRING_REDIS_PORT: 6379
    22. SPRING_REDIS_DATABASE: 1
    23. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://register-server.c7n-system:8000/eureka/
    24. CHOERODON_GATEWAY_URL: http://api.example.choerodon.io
  • 部署服务

    1. helm install c7n/base-service \
    2. -f base-service.yaml \
    3. --name base-service \
    4. --version 0.19.3 \
    5. --namespace c7n-system
  • 验证部署

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

升级api gateway

  • 升级服务

    1. helm upgrade api-gateway c7n/api-gateway \
    2. -f <(helm get values api-gateway) \
    3. --set env.open.SPRING_CACHE_MULTI_L1_ENABLED=true \
    4. --set env.open.SPRING_CACHE_MULTI_L2_ENABLED=false \
    5. --version 0.19.1
  • 验证升级

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

升级oauth server

  • 升级服务

    1. helm upgrade oauth-server c7n/oauth-server \
    2. -f <(helm get values oauth-server) \
    3. --version 0.19.2
  • 验证升级

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

升级file service

  • 升级服务

    1. helm upgrade file-service c7n/file-service \
    2. -f <(helm get values file-service) \
    3. --version 0.19.2
  • 验证升级

    • 验证命令
    1. curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=file-service -o jsonpath="{.items[0].status.podIP}"):9091/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) \
    3. --version 0.19.2
  • 验证升级

    • 验证命令
    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. -f <(helm get values workflow-service) \
    3. --version 0.19.0
  • 验证升级

    • 验证命令
    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

从0.17开始,开发管理可以选择接入SonarQube进行代码质量管理。如果不需要进行代码质量管理在kubernetes控制节点的服务器中执行如下命令: kubectl edit cm devops-service -n c7n-system 如果存在service.sonarqube.url的内容删除即可。

  • 不需要代码质量管理执行如下命令升级服务:

    1. helm upgrade devops-service c7n/devops-service \
    2. --set env.open.AGENT_VERSION="0.19.2" \
    3. -f <(helm get values devops-service) \
    4. --version 0.19.10
  • 如果需要代码质量管理,请参考安装文档安装Sonarqube后再根据Sonarqube的参数执行如下命令进行升级:

    1. helm upgrade devops-service c7n/devops-service \
    2. --set env.open.AGENT_VERSION="0.19.2" \
    3. --set env.open.SERVICES_SONARQUBE_URL="http://sonarqube.example.choerodon.io" \
    4. --set env.open.SERVICES_SONARQUBE_USERNAME="admin" \
    5. --set env.open.SERVICES_SONARQUBE_PASSWORD="admin" \
    6. -f <(helm get values devops-service) \
    7. --version 0.19.10
    • 验证命令
    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

敏捷管理升级

移除state machine service

  1. helm delete --purge state-machine-service

移除 issue service

  1. helm delete --purge issue-service

移除foundation service

  1. helm delete --purge foundation-service

升级agile service

注意:SERVICES_ATTACHMENT_URL上个版本包含agile-service的bucket。0.19版本需要去掉bucket,只需设置minio的地址即可。

  • 升级服务

    1. helm upgrade agile-service c7n/agile-service \
    2. --set env.open.SERVICES_ATTACHMENT_URL=https://minio.choerodon.com.cn \
    3. -f <(helm get values agile-service) \
    4. --version 0.19.3
  • 验证升级

    • 验证命令
    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

测试管理升级

  • 升级服务

    1. helm upgrade test-manager-service c7n/test-manager-service \
    2. -f <(helm get values test-manager-service) \
    3. --version 0.19.2
  • 验证部署

    • 验证命令
    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

知识管理升级

  • 移除xwiki helm delete --purge xwiki
  • 移除wiki service helm delete --purge wiki-service

安装 elasticsearch-kb

  • 安装 elasticsearch helm install c7n/elasticsearch-kb \ --version 0.19.0 \ --name elasticsearch-kb \ --namespace c7n-system

升级knowledgebase-service

  • 升级服务

    1. helm upgrade knowledgebase-service c7n/knowledgebase-service \
    2. -f <(helm get values knowledgebase-service) \
    3. --set env.open.ELASTICSEARCH_IP=elasticsearch-kb.c7n-system:9200 \
    4. --version 0.19.2
  • 验证部署

    • 验证命令
    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

数据迁移

迁移数据库

执行0.19.0数据修复脚本,执行以下命令(HOST替换成对应参数),并注意要查看修复程序执行日志确认是否执行成功

  1. helm install c7n/choerodon-datafix \
  2. --set env.open.AgileDBHOST=c7n-mysql.c7n-system.svc \
  3. --set env.open.AgileDBPORT=3306 \
  4. --set env.open.AgileDBUSER=choerodon \
  5. --set env.open.AgileDBPASS=password \
  6. --set env.open.IssueDBHOST=c7n-mysql.c7n-system.svc \
  7. --set env.open.IssueDBPORT=3306 \
  8. --set env.open.IssueDBUSER=choerodon \
  9. --set env.open.IssueDBPASS=password \
  10. --set env.open.StateMachineDBHOST=c7n-mysql.c7n-system.svc \
  11. --set env.open.StateMachineDBPORT=3306 \
  12. --set env.open.StateMachineDBUSER=choerodon \
  13. --set env.open.StateMachineDBPASS=password \
  14. --set env.open.FoundationDBHOST=c7n-mysql.c7n-system.svc \
  15. --set env.open.FoundationDBPORT=3306 \
  16. --set env.open.FoundationDBUSER=choerodon \
  17. --set env.open.FoundationDBPASS=password \
  18. --set env.open.BaseDBHOST=c7n-mysql.c7n-system.svc \
  19. --set env.open.BaseDBPORT=3306 \
  20. --set env.open.BaseDBUSER=choerodon \
  21. --set env.open.BaseDBPASS=password \
  22. --set env.open.AsgardDBHOST=c7n-mysql.c7n-system.svc \
  23. --set env.open.AsgardDBPORT=3306 \
  24. --set env.open.AsgardDBUSER=choerodon \
  25. --set env.open.AsgardDBPASS=password \
  26. --version 0.19.0 \
  27. --name choerodon-datafix \
  28. --namespace c7n-system

清除 redis 旧的菜单和 api 统计数据

  • 查看 api-gateway 所用 redis index (SPRING_REDIS_DATABASE)

    1. helm get values api-gateway
  • 清理数据,以下命令中 select 5 的 5 即为 SPRING_REDIS_DATABASE 的值,请按实际情况修改

    1. kubectl get po -n c7n-system
    2. kubectl exec -it c7n-redis-xxxx -n c7n-system bash
    3. redis-cli
    4. select 5
    5. flushdb

清理管理服务菜单权限缓存数据

  1. kubectl get po -n c7n-system
  2. kubectl exec -it c7n-mysql-xxxx -n c7n-system bash
  3. mysql -h 127.0.0.1 -u choerodon -ppassword
  4. use manager_service;
  5. truncate table mgmt_actuator;

重启 manager-service ,重新初始化菜单权限数据

  1. kubectl scale deployment manager-service --replicas=0 -n c7n-system
  2. kubectl scale deployment manager-service --replicas=1 -n c7n-system

整合前端升级

  • 升级服务

    1. helm upgrade choerodon-front c7n/choerodon-front \
    2. --set env.open.API_HOST=http://api.example.choerodon.io \
    3. --set env.open.CLIENT_ID=choerodon \
    4. --set env.open.DEVOPS_HOST=ws://devops.example.choerodon.io \
    5. --set env.open.FILE_SERVER=http://minio.example.choerodon.io \
    6. --set env.open.HEADER_TITLE_NAME=Choerodon \
    7. --set env.open.HTTP=http \
    8. --set env.open.WEBSOCKET_SERVER=ws://notify.example.choerodon.io \
    9. --set env.open.COOKIE_SERVER= \
    10. --set env.open.CUSTOM_THEME_COLOR= \
    11. --set ingress.host="c7n.example.choerodon.io" \
    12. --set service.enabled=true \
    13. --set ingress.enabled=true \
    14. --version 0.19.6 \
  • 验证升级

    • 验证命令
    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>

迁移DevOps数据

调用Devops迁移数据接口

  • 同步harbor用户(如已经调用无需再次调用)

从0.18.13以下的版本升级到0.18.13以及以上的版本时,为了在gitlab-ci中使用每个项目单独的用户去推送镜像,需要手动调用api去同步创建harbor用户,请使用管理员用户登陆平台,在管理界面的平台服务->平台接口->devops-service->devops-check-controller里面调用数据修复接口,参数传入为0.18.13,记得检查gitlab-ci.yaml文件内docker login时的参数是否为 DOCKER_USERNAME和DOCKER_PASSWORD

  • 同步集群

从0.19.5以下的版本升级到0.19.5以及以上的版本时,为了将原来组织下的集群迁移到项目下,并为组织创建默认运维项目,需要手动调用api去同步创建项目。请使用管理员用户登陆平台,在管理界面的平台服务->平台接口->devops-service->devops-check-controller里面调用数据修复接口,参数传入为0.19.5

  • SonarQube插件升级

对于已经安装了的SonarQube,升级choerodon到0.19.x时对应的SonarQube插件版本也要升级到sonar-auth-choerodonoauth-plugin-1.5.2-RELEASE.jar