教程

升级包篇

用于SuperMap iManager for Kubernetes 和 GIS 云套件升级说明。

要升级的当前版本: 10.1.x, 10.2.x, 10.2.0a, 11.0.x, 11.1.x,11.2.x

可升级至最新版本: 11.2.1

如果要升级的当前版本为 10.1.0,并且该版本是从 10.0.1 版本升级上来的,请先参考辅助升级进行操作,再参考此说明进行升级。

必需的环境变量

PRODUCT:更新的产品名称,默认使用iManager,可选iManager,cloudsuite KUBERNETESMASTERURL:k8s master url,可以通过执行kuberctl cluster-info获得,例如:http://172.16.112.150:6443 CURRENT_VERSIONN:待升级的当前版本,比如10.1.3,10.2.0

iManager表示更新的产品为iManager for k8s cloudsuite表示更新的产品为GIS云套件

可选环境变量

可选环境变量在执行脚本之前通过export命令添加,例如 export DEPLOYMENTCENTERPORT=31237 DEPLOYMENTCENTERPORT:用于升级之后访问部署中心的端口。默认为31111。部署中心为11.2.0新增的服务,用于可视化管理创建的iManager for k8s或者云套件。 部署中心可通过访问kubernetes任意节点的ip+DEPLOYMENTCENTERPORT设置的端口访问

环境准备

  • 文中所需的软件安装包均可在百度网盘中下载: https://pan.baidu.com/s/1lWLyyT1jAbADGuxEG3m4gA
    提取码:ge4d
  • 镜像包。如果 iManager for k8s 和 GIS 云套件使用阿里云镜像仓库可以跳过这一步。下载升级之后版本对应的镜像包,比如从 11.0.0 升级至 11.1.1,则需要准备 11.1.1 镜像包。以 11.1.1 为例:

    镜像包位于网盘路径: iManager部署包/iManager 11.1.1/iManager for Kubernetes部署包/supermap-imanager-for-kubernetes-registry-all-11.1.1-linux-x64.tar.gz

    下载镜像包之后,将镜像包拷贝到任意装有 Docker 服务的机器任意目录,解压,进入解压后的目录,参照目录下的 readme.txt 将镜像包同步到原有镜像仓库。

注意事项

为确保更顺利地完成升级,升级前请先仔细阅读此注意事项:

  1. 升级脚本要求操作用户具备通过 kubectl 操作 Kubernetes 集群的能力以及访问 Docker 的能力。
  2. 升级(iManager for k8s 或 GIS 云套件)过程中相关服务会重新启动,此时产品无法访问与使用。
  3. 使用升级包从 10.1.0 版本升级至最新版本后,10.1.0版本中对报警规则的静默操作记录会丢失,如有需要,升级后需再次静默。10.1.1(含)之后的版本升级不受影响。
  4. 使用升级包从 10.1.0 版本升级至最新版本后,统计报表 生成的报表会丢失升级之前的用户操作数据,如有需要,请在升级前下载报表保存。10.1.1(含)之后的版本升级不受影响。
  5. 使用升级包升级到最新版本的环境无法使用”支持禁用不常用服务和配置外部已有第三方服务“该功能。
  6. 从 11.2.0 之前的版本升级到最新版本后,部分开启端口所暴露的端口将会关闭。
  7. 从 11.2.0 之前的版本升级到最新版本后,对于基础服务和 GIS 云套件站点的服务添加的告警规则会失效,需要在 iManager 报警服务 -> 报警规则页面删除原有的并重新添加
  8. 想要从 11.2.0 之前的版本升级到最新版本,还需要进入当前目录下,创建 yamls 目录,并将旧部署包中的 values.yaml 放到 yamls 目录下,按照以下说明进行处理。当前目录 指的是包含和本文档一同解压的所有文件的目录。

    11.1.0 之前部署包中的 deploydisablelog 拆分成 deploydisablefluentdes, deploydisableelasticsearch, deploydisable_kibana。

    deploydisablemetricsserver 拆分成 deploydisablemetricsserver, deploydisablekubestatemetrics

    如之前部署的 deploydisablelog 为 true,则这几个相应的配置也需要修改成 true

升级iManager

  1. 阅读 注意事项
  2. 如果之前的版本未开启服务网格,而想要在升级之后的版本开启,请下载将要升级版本的正式部署包并解压,在新部署包解压后目录下执行以下命令开启

    kubectl label ns <imanager namespace> istio-injection=enabled --overwrite
    chmod +x ./istio.sh && ./istio.sh open
  3. 然后执行以下命令启动。升级过程中会在当前目录创建 logs 目录,里面包含升级日志

    export PRODUCT=iManager
    export KUBERNETES_MASTER_URL=<kubernetes master url>
    export CURRENT_VERSION=<current version>
    export NAMESPACE=<imanager namespace>
    chmod +x upgrade.sh && ./upgrade.sh

    <imanager namespace> 是 iManager for k8s 所在命名空间,默认是 supermap

    升级完成后,请访问 iManager for k8s 主页面,检查 存储管理 中是否包含新增的且未挂载的服务,没有挂载的服务可以通过页面上的“绑定”操作进行绑定

    当前版本小于 11.2.0 时需要增加 DEPLOYMENTCENTERPORT 环境变量来指定部署中心端口,否则默认使用 31111 端口

    export DEPLOYMENT_CENTER_PORT=31111

升级GIS云套件

如果是使用 GIS 云套件包部署且当前版本低于 11.2.0,需要额外执行以下步骤:

执行以下命令找到环境变量 KIBANA_BASEPATH 并去掉对应值的最后一个引号 “。比如原来的值是 /kibana” 修改为 /kibana

kubectl -n <cloudsuite namespace> \
edit deploy ispeco-dashboard-api
  1. 为保证升级过程顺利,升级前请将 StatefulSet cloudsuite-keycloak 和 StatefulSet cloudsuite-keycloak-database 伸缩成 1。如果 cloudsuite-keycloak 不是 StatefulSet 类型,则不需要处理。可以通过执行下面命令查看 cloudsuite-keycloak 是否为 StatefulSet

    11.2.0 之前的云套件需要检查 StatefulSet keycloakStatefulSet keycloak-postgresql,将下面命令的 cloudsuite-keycloak 替换为 keycloak,cloudsuite-keycloak-database 替换为 keycloak-postgresql

    kubectl -n <cloudsuite namespace> get statefulset cloudsuite-keycloak

    如果上述命令有结果返回,则可以通过执行下面命令伸缩成 1

    kubectl -n <cloudsuite namespace> scale --replicas=1 statefulset/cloudsuite-keycloak

    执行下面命令将 keycloak-postgresql 伸缩成 1

    kubectl -n <cloudsuite namespace> scale --replicas=1 statefulset/cloudsuite-keycloak-database

    等待 cloudsuite-keycloak 和 cloudsuite-keycloak-database pod 数量剩余 1。

    等待升级包升级完成,站点可访问之后,可将 cloudsuite-keycloak 和 cloudsuite-keycloak-database 伸缩会原来副本数

  2. 如升级之前已经开启机器学习服务,请在升级之前关闭机器学习服务,待升级之后再开启。
  3. 11.0.0 引入了 Serverless 技术,如果想要在 GIS 云套件中体验该技术,请从网盘以下路径下载 Serverless 安装部署包(网盘路径:iManager部署包/软件工具包/kubernetes离线安装包/Serverless/kubernetes-serverless-amd64-deploy.zip),依据 Serverless 部署包在要升级的环境部署,之后在执行升级脚本之前设置环境变量。如果不想使用可以跳过这一步

    export ASYNC_FUNCTION_ENABLED=true

    Serverless 部署包位于网盘路径: iManager部署包/软件工具包/Kubernetes离线安装包/Serverless 目录下

  4. 执行升级命令之前,请先在网页登出,并关闭所有打开页面。
  5. 执行升级命令

    export PRODUCT=cloudsuite
    export KUBERNETES_MASTER_URL=<kubernetes master url>
    export NAMESPACE=<cloudsuite namespace>
    export CURRENT_VERSION=<current version>
    chmod +x upgrade.sh && ./upgrade.sh

    如升级的 GIS 云套件不是在 iManager for Kubernetes 页面创建,并且云套件所在命名空间没有部署中心服务,还需要增加 DEPLOYMENTCENTERPORT 环境变量来指定部署中心端口,否则默认使用 31111 端口。

    export DEPLOYMENT_CENTER_PORT=31111

    是否存在部署中心可通过 kubectl -n <cloudsuite namespace> get svc imanager-deployment-center 查看

    <cloudsuite namespace> 为 GIS 云套件所在命名空间

附录

1. 卸载iManager

1.1 通过 Kubernetes 任意节点的 ip 加上 DEPLOYMENT_CENTER_PORT 设置的端口访问部署中心页面。在部署中心页面可以选择卸载 —> 无痕卸载。等待卸载完成

DEPLOYMENT_CENTER_PORT 为升级时填写的端口,不填默认使用 31111

1.2 下载最新的 iManager 部署包并解压,进入解压目录,根据部署包文档编辑 values.yaml 文件,保存退出后,按照部署包文档卸载

values.yaml 文件中的 deploy_namespace 为 iManager 所在的命名空间

1.3 找到升级前部署 iManager 的部署包,进入部署包,按照文档进行卸载

2. 卸载 GIS 云套件

如 GIS 云套件是 iManager 创建的站点,可访问 iManager 页面,通过删除站点的方式卸载。

如 GIS 云套件是通过 GIS 云套件包部署或者由部署中心创建并升级按以下步骤卸载,

2.1 通过 Kubernetes 任意节点的 ip 加上 DEPLOYMENT_CENTER_PORT 设置的端口访问部署中心页面。在部署中心页面可以选择卸载 —> 无痕卸载。等待卸载完成

DEPLOYMENT_CENTER_PORT 为升级时填写的端口,不填默认使用 31111

2.2 下载最新的 iManager 部署包并解压,进入解压目录,根据部署包文档编辑 values.yaml 文件,保存退出后,按照部署包文档卸载

11.2.0 引入部署中心,原 GIS 云套件部署包的作用由 iManager 部署包提供

values.yaml 文件中的 deploy_namespace 为 GIS 云套件所在的命名空间

2.3 找到升级前部署 GIS 云套件的部署包,进入部署包,按照文档进行卸载

3.更新服务

以下服务的更新可选,请根据需要进行更新。

更新服务节点

访问 iManager for k8s 的 GIS 云套件详情页面,点击“修改镜像”修改对应服务的镜像为 10.2.1 镜像,例如:更新服务节点”gisapp-portal-default-0”。

将镜像名修改为 <registry>/<namespace>/<image>:<tag> 格式

<registry> 为升级包仓库地址

<namespace> 为升级包使用的命名空间

<image> 为服务节点对应的镜像,各个服务节点对应的镜像名参见下面表格

<tag> 为镜像的版本标签,格式为 “版本-架构”,例如:10.2.1-amd64, 10.2.1-arm64

服务节点类型对应的前缀和镜像列表:

服务节点类型 服务名称前缀 镜像名称
通用节点 gisapp- iserver-gisapplication
地图节点 gisapp-mapping- iserver-gisapplication-mapping
数据节点 gisapp-data- iserver-gisapplication-data-analysis
通用分析节点 gisapp-analysis- iserver-gisapplication-data-analysis
地址匹配分析节点 gisapp-addressmatchanalysis- iserver-gisapplication-analysis-address-match
空间分析节点 gisapp-spatialanalysis- iserver-gisapplication-analysis-spatial
网络分析节点 gisapp-networkanalysis- iserver-gisapplication-analysis-network
交通换乘分析节点 gisapp-trafficanalysis- iserver-gisapplication-analysis-traffic-transfer
ArcGIS几何分析节点 gisapp-geometryanalysis- iserver-gisapplication-analysis-geometry
三维节点 gisapp-realspace- iserver-gisapplication-realspace
瓦片节点 gisapp-tiles- iserver-gisapplication-tiles
数据流节点 gisapp-dataflow- iserver-dataflow

如果使用 GIS 云套件包进行部署,可以创建新的服务节点,把原来服务节点上的服务迁移到到新节点,移除原来节点。

更新流数据服务

参考更新服务节点即可,服务名称前缀为:iserver-streaming-。

更新内置服务

如您需要更新内置服务,禁用后重新开启即可。

4.常见问题解答

  1. 云套件升级后,iportal页面图片加载失败,页面无法正常显示中英文怎么办?

    答:请联系技术支持人员协调处理。

  2. 如果升级之后查看页面,发现页面上展示的产品信息没有变化怎么办?

    答: a. 如果是 iManager 的产品信息未变更,请查看基础服务页面,找到 imanager-dashboard-ui 服务,点击修改镜像查看镜像是否和升级后的当前版本一致。如果镜像版本一致,请参考帮助文档教程 —> 附录 —> 定制iManager产品信息 修改产品信息即可。

    b. 如果是 GIS 云套件信息未变更,请访问 iManager for k8s 的 GIS 云套件详情页面,找到 ispeco-dashboard-ui 服务,点击修改镜像查看镜像是否和升级后的当前版本一致。如果镜像版本一致,那么参考帮助文档GIS云套件 —> 附录 —> 定制GIS云套件产品信息 修改即可。