跳转到主要内容
本节介绍将 ABBYY Vantage 更新到最新可用发布版本的过程。
在更新 Vantage 之前,请确保已满足系统要求部分中列出的新版本的所有要求。
更新过程包括以下步骤:
  1. 同步容器镜像
  2. 备份数据
  3. 运行安装脚本
  4. 卸载 Vantage
  5. 更新 ABBYY Vantage

同步容器镜像

要同步容器镜像,请参见下载容器镜像中的步骤。

备份数据

若要将 Vantage 恢复到更新前正在运行的版本,必须具备数据库、Consul 的备份以及 Kubernetes secrets 的副本。请按照以下步骤正确备份这些组件:
  1. 在为数据库和 Consul 创建备份之前,需要先停止集群,关闭集群中的所有节点。
  2. 为以下内容创建备份:
    • Databases(数据库):数据库列表为:apigatewayregistry, auth, auth-identity, catalogstorage, cron, documentset, folderimport, interactive-jobs, mail, mailimport, permissions, publicapi, reporting, secretstorage, security-audit, skillinfo, skillmonitor, storage, subscriptions, tokenmanagement, transactions, workflows, workspace
    • Consul:Kubernetes CronJob 会通过名称格式为 [X].consul-backup 的 pod 将 Consul 备份到外部 RWX 存储(例如 NFS)。您可以从名为 consul-backup 的 PVC 文件夹中获取备份的 TGZ 文件。
  3. 启动集群,启动集群中的所有节点。
  4. 备份 Kubernetes secrets 的副本。要获取密钥,请运行以下命令:
kubectl get secret -n abbyy-vantage secretstorage-encryptionkeys -o yaml
kubectl get secret -n abbyy-vantage tokenmanagement-encryptionkeys -o yaml
在为 Kubernetes Secret 副本创建备份之前,请确保集群已启动。
备份只是预防措施。如果升级成功,您无需从备份中恢复。

运行安装脚本

在更新 ABBYY Vantage 之前,请先完成安装中的各步骤。 要运行安装脚本:
  1. 配置相关文件。
默认情况下,在更新 Vantage 时会删除技术核心版本 2。若要保留它,请在 env_specific.yml 文件中添加 techcore.keep_previous_version 参数,并将其值设置为 true
  1. 准备证书。
  2. 下载容器镜像。
  3. 运行安装脚本(步骤 1–3)。

卸载 Vantage

请运行以下 playbook 来卸载产品:
ansible-playbook -i inventories/k8s -v playbooks/uninstall-vantage.yml
此 playbook 将删除所有服务,但保留数据存储本身不变。

更新 ABBYY Vantage

要更新 ABBYY Vantage:
  1. 运行以下 playbook,以执行预部署检查,并阅读并接受 Vantage 的法律文件:
ansible-playbook -i inventories/k8s -v playbooks/0-PreflightCheck-k8s.yml
ansible-playbook -i inventories/k8s -v playbooks/legal.yml
这些 playbook 将会:
  • 对在 playbook 的 env_specific.yml 文件中指定了 Parameter 的资源(数据库、SMTP 连接等)执行初步检查。
  • 要求系统管理员同意 EULA 和 ABBYY 隐私政策的条款。
  1. 运行以下 playbook 来更新 Vantage:
ansible-playbook -i inventories/k8s -v playbooks/site-k8s-deploy.yml
这些 playbook 会安装产品的新版本。整个过程大约需要 20–30 分钟。
在 ABBYY Vantage 更新后,您需要重新进行授权。升级前获取的授权令牌将不再有效。
若要使用 Advanced Designer 和 Scanning Station,您需要下载它们的新版本并在您的计算机上安装:
  • https://<your-vantage-host>/ad/latest - 用于下载 Advanced Designer
  • https://<your-vantage-host>/ss/latest - 用于下载 Scanning Station
如果更新过程失败,请参阅下一节“Recovery”。

恢复

如果更新过程失败,请按照以下步骤操作:
  1. 检查集群中的 pod 是否运行正常,如果不正常,请重启它们。
  2. 分析未按预期运行的 pod 的日志。
  3. 按照 pod 日志中的故障排除步骤进行操作。
  4. 如果在安装新版本 Vantage 的任何步骤中升级失败(例如等待 Vantage 作业、等待 Vantage 部署),请先排查并修复错误原因,然后重新运行安装 playbook:
ansible-playbook -i inventories/k8s -v playbooks/site-k8s-deploy.yml

在新集群上安装 Vantage 并进行数据恢复

如果上述步骤未能解决问题,您可以按照以下步骤在新集群上安装 Vantage 并恢复数据:
  1. 确保您拥有所有数据的最新备份。
  2. 从之前创建的备份中恢复数据。
  3. 准备 env_specific 文件,其中包含用于连接已从备份中恢复的数据库和外部存储所需的数据。
  4. 在 Installation 部分中,按照 Running the installation scripts 中的步骤安装 Vantage。对于步骤 2(从 Docker 镜像运行安装程序),请使用下面的命令:
docker run -it --net=host \
-v $PWD/kube:/root/.kube \
-v $PWD/inventory:/ansible/inventories/k8s/inventory \
-v $PWD/env_specific.yml:/ansible/inventories/k8s/group_vars/all/env_specific.yml \
-v $PWD/ssl:/ansible/files/ssl:ro \
--privileged \
registry.local/vantage/vantage-k8s:2.7.1
  1. 使用之前备份的值覆盖 secretstorage-encryptionkeystokenmanagement-encryptionkeys Secret 中的键值对: a. 运行以下命令:
    kubectl edit secrets -n abbyy-vantage secretstorage-encryptionkeys
    
    b. 在打开的文件中,找到 key-<guid>.xml 后面的 base64 字符串,将其替换为之前为 secretstorage-encryptionkeys Secret 备份的密钥中包含的 base64 字符串。 c. 保存更改并关闭编辑器。 d. 使用以下命令,以同样的方式处理 tokenmanagement-encryptionkeys Secret:
    kubectl edit secrets -n abbyy-vantage tokenmanagement-encryptionkeys
    
  2. 覆盖密钥后,重启 secretstoragetokenmanagement Pod:
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=secretstorage -o name)
kubectl -n abbyy-vantage rollout restart $(kubectl -n abbyy-vantage get deployments -l app.kubernetes.io/component=tokenmanagement -o name)
  1. 重新启动处理事务。在已连接到集群的计算机上,运行以下命令以访问处理事务服务:
kubectl port-forward -n abbyy-vantage deployments/abbyy-vantage-transactions 8080:8080
在浏览器中打开 http://localhost:8080/index.html,然后调用以下 API 方法:
/api/recovery/transactions/restart
如果在恢复后 Vantage 主机地址发生了变更,并且系统中存在尚未接受的邀请,则需要重新发送这些邀请。