將 OpenResty Edge Admin 資料庫遷移至 Kubernetes 環境

在開始遷移操作之前,請確保已根據在 Kubernetes 環境中部署 OpenResty Edge的文件指引,部署了最新版本的 OpenResty Edge。

匯出當前資料庫

請在您安裝了 Edge Admin 資料庫的機器上執行 pg_dump 命令以匯出資料庫。開啟命令列終端並執行以下指令:

/usr/local/openresty-postgresql12/bin/pg_dump or_edge_admin -C -U postgres | gzip > or_edge_admin-$(date +%F).gz

執行時,系統可能會提示您輸入密碼。

將匯出的資料庫檔案傳輸至 Kubernetes Pod

利用 kubectl cp 命令,把本地匯出的資料庫檔案傳輸到 Kubernetes Pod 中:

kubectl cp or_edge_admin-$(date +%F).gz openresty-edge/oredge-admin-database-0:/tmp/or_edge_admin-$(date +%F).gz

請注意,openresty-edge 是 OpenResty Edge 服務所在的名稱空間名稱,而 oredge-admin-database-0 是目標 Pod 的名稱。

在 Kubernetes Pod 中匯入資料庫

接下來,您需要進入 Pod 並利用 psql 命令來匯入資料庫。

首先,使用以下命令進入 Pod:

kubectl exec -it oredge-admin-database-0 -n openresty-edge -- /bin/bash

在 Pod 內部,刪除現有資料庫 or_edge_admin 中的所有初始資料(如有重要資料請提前備份):

/usr/local/openresty-postgresql12/bin/psql -U or_edge_admin -d or_edge_admin --command 'DROP SCHEMA public CASCADE'

/usr/local/openresty-postgresql12/bin/psql -U or_edge_admin -d or_edge_admin --command 'CREATE SCHEMA public'

然後,在 Pod 的命令列中,使用 psql 命令開始匯入資料:

zcat /tmp/or_edge_admin-$(date +%F).gz | /usr/local/openresty-postgresql12/bin/psql -U or_edge_admin -d or_edge_admin

耐心等待資料匯入完成。

更新 Edge Admin Database 的 Schema 至最新版

執行以下命令來升級資料庫 schema:

bash /docker-entrypoint-post.d/update-admin-db.sh

重新編譯 OpenResty Edge 配置

登入到 Edge Admin 的 Pod oredge-admin-0

kubectl exec -it oredge-admin-0 -n openresty-edge -- /bin/bash

執行以下命令以重新編譯配置檔案:

cd /usr/local/oredge-admin
sudo bash utils/recompile-apps.sh wildcard-http
sudo bash utils/recompile-apps.sh http
sudo bash utils/recompile-apps.sh http_proxy
sudo bash utils/recompile-apps.sh socks5_proxy
sudo bash utils/recompile-apps.sh global
sudo bash utils/recompile-apps.sh waf
sudo bash utils/recompile-apps.sh dns
sudo bash utils/recompile-apps.sh global-action
sudo bash utils/recompile-apps.sh gateway

按照上述步驟操作後,您應該已經成功完成了資料庫資料的遷移,將 OpenResty Edge Admin 資料庫整合至 Kubernetes 叢集中。