教程
辅助升级篇
适用于 SuperMap iManager for Kubernetes 和 GIS 云套件 10.1.0 之前的版本为升级到当前最新版本需要进行的手动操作说明。
升级包支持的最低版本为 10.1.0 版本,10.1.0 之前的版本想要通过升级包升级到当前最新版本,首先需要通过之前的升级方式升级到 10.1.0 版本。然后按照此说明进行必要的操作。操作执行完成之后再参考使用升级包进行升级操作。
注意事项
- 此辅助说明要求操作用户具备通过 kubectl 操作 Kubernetes 集群的能力以及访问 Docker 的能力。
- 辅助说明操作过程中的
当前目录
指的是包含和本说明一同解压的所有文件的目录。 - 说明中使用的命令直接粘贴可能会导致格式不正确,请对比行号保证格式正确。
数据库迁移
从 MySQL 数据库迁移到 PostgreSQL 数据库
以下操作如果无特殊说明,均在
当前目录
操作
10.1.0 之前的 keycloak 使用 MySQL 数据库存储数据,10.1.0 之后的版本使用 PostgreSQL 数据库存储,在使用升级包升级之前,需要把数据从 MySQL 数据库迁移到 PostgreSQL 数据库。
参数说明
参数 | 说明 |
---|---|
<namespace> |
SuperMap iManager for Kubernetes 和 GIS 云套件所在命名空间 |
<Kubernetes public ip> |
升级包所在主机可以访问产品的 ip,比如 http://172.16.120.139:31100 可以访问产品页面,那么 <Kubernetes public ip> 就应该是 172.16.120.139 |
-
检查 Keycloak 使用的数据库,输入以下命令,查看是否有 keycloak-postgresql 服务,如果没有,则进行下一步,否则不用进行
kubectl -n <namespace> get svc | grep keycloak-postgresql
-
准备镜像。从阿里云拉取以下镜像,如果是内网环境,需要从阿里云拉取,通过
docker save
保存成文件传输到内网通过docker load
还原,再通过docker tag
修改镜像仓库名再 push 到内网镜像仓库,下面使用到镜像的地方需要手动替换成内网镜像仓库地址。docker pull registry.cn-beijing.aliyuncs.com/supermap/postgres:10 docker pull registry.cn-chengdu.aliyuncs.com/supermap/pgloader:ccl.3.6.3
-
应用编排,创建 keycloak-postgresql(使用非阿里云镜像仓库需要修改编排中的镜像仓库地址)。等待创建的 keycloak-postgresql Pod 启动成功,可以通过日志查看
kubectl -n <namespace> apply -f data_migration/keycloak-postgresql-single.yaml
-
迁移数据到 PostgreSQL
SuperMap iManager for Kubernetes 使用以下命令获取导出端口
mysql_port=$(kubectl -n <namespace> get svc imanager-mysql-for-export --output="jsonpath={.spec.ports[0].nodePort}");
GIS 云套件使用以下命令获取导出端口
mysql_port=$(kubectl -n <namespace> get svc keycloak-mysql-for-export --output="jsonpath={.spec.ports[0].nodePort}");
开始迁移
postgresql_port=$(kubectl -n <namespace> get svc keycloak-postgresql-for-import --output="jsonpath={.spec.ports[0].nodePort}"); docker run -it --rm registry.cn-chengdu.aliyuncs.com/supermap/pgloader:ccl.3.6.3 \ pgloader \ mysql://supermap:supermap@<Kubernetes public ip>:$mysql_port/keycloak \ postgresql://supermap:supermap@<Kubernetes public ip>:$postgresql_port/keycloak docker run -it --rm \ --entrypoint bash \ -v $(pwd)/data_migration/:/root/data_migration \ registry.cn-beijing.aliyuncs.com/supermap/postgres:10 \ -c "export PGPASSWORD=supermap; psql -h <Kubernetes public ip> -p 30507 -U supermap keycloak < /root/data_migration/transtar.sql"
-
清理服务
kubectl -n <namespace> delete svc keycloak-mysql-for-export keycloak-postgresql-for-import imanager-mysql-for-export
GIS 云套件
以下部分为 GIS 云套件特有操作
参数说明:
<giscloudsuite namespace>
是 GIS 云套件所在命名空间
-
伸缩 StatefulSet consul-server 副本数为 3
kubectl scale -<giscloudsuite namespace> --replicas=3 statefulset/consul-server
-
暴露 Service keycloak
注意:以下操作如操作不当,会导致升级后无法访问,请核对后进行操作
- 确认 keycloak 的协议和端口
访问 GIS 云套件页面,点击服务管理,此时应该跳转到登录页面。如果没有跳转,执行退出登录操作。
查看登录页面请求地址,记录登录地址的协议和端口。例如请求地址是:
https://172.16.120.139:32221
,此时的协议是 https 协议,使用的端口是 32221- 删除 Service keycloak 和 keycloak-external
kubectl -n <giscloudsuite namespace> delete svc keycloak keycloak-external
- 替换下面占位符,重新创建 Service keycloak。
如果使用 https 协议,
<target port>
替换为 8443,否则替换成 8080<access port>
是 keycloak 访问的端口,如上面示例中的 32221cat <<EOF | kubectl -n <giscloudsuite namespace> apply -f - apiVersion: v1 kind: Service metadata: labels: type: icloud-native kind: icloud-native-dev name: keycloak spec: type: NodePort ports: - name: http port: <target port> targetPort: <target port> NodePort: <access port> selector: app: keycloak EOF