跳轉到主要內容
本節說明將 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 secrets 副本的備份之前,請確保叢集已啟動。
備份只是預防措施。如果升級順利,您就不需要從備份還原。

執行安裝指令碼

在更新 ABBYY Vantage 之前,請先依照 Installation 的步驟進行。 請依下列步驟執行安裝指令碼:
  1. 設定組態檔。
預設情況下,更新 Vantage 時會刪除 technology core 第 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. 執行以下 playbooks,以執行部署前檢查,並閱讀並接受 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 檔案中所指定之資源(例如資料庫、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. 檢查叢集中的 pods 是否正常運作,如果不正常,請重新啟動它們。
  2. 分析未按預期運作之 pods 的日誌。
  3. 根據 pod 日誌中的疑難排解步驟進行操作。
  4. 如果在安裝新版本 Vantage 的任何步驟發生升級失敗(例如:等待 Vantage jobs、等待 Vantage deployments),請先排除錯誤原因,然後再執行安裝 playbook:
ansible-playbook -i inventories/k8s -v playbooks/site-k8s-deploy.yml

在新叢集上安裝具備資料復原功能的 Vantage

如果上述步驟仍無法解決問題,您可以依照以下步驟,在新叢集上安裝具備資料復原功能的 Vantage:
  1. 確保您已取得所有最新的資料備份。
  2. 從先前建立的備份中還原資料。
  3. 準備 env_specific 檔案,其中包含從備份還原的資料庫與外部儲存空間的連線資料。
  4. 依照〈安裝〉章節中執行安裝指令碼的步驟安裝 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 pods:
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 主機位址發生變更,且系統中仍有未接受的邀請,就需要重新傳送這些邀請。