升級 Kubernetes 中的 OpenResty Edge

在對生產環境進行升級之前,我們強烈建議您使用生產資料構建一個與生產環境相同的測試環境,並在該環境中進行升級測試。只有在測試成功完成後,才應該在正式環境中執行升級操作。關於環境克隆的詳細步驟,請參見克隆 OpenResty Edge 環境文件。

1. 下載部署檔案

首先,請訪問 OpenResty 官方下載中心,從那裡下載最新版本的部署檔案 openresty-edge-VERSION.yml

2. 配置升級策略

  • 在安裝有 kubectl 命令並可以訪問 Kubernetes 叢集的機器上,新建名為 patch-on-delete.yaml 的檔案:
spec:
  updateStrategy:
    $retainKeys:
    - type
    type: OnDelete
  • 應用升級策略:
kubectl patch statefulset oredge-log-server-database -n openresty-edge --patch "$(cat patch-on-delete.yaml)"
kubectl patch statefulset oredge-admin-database -n openresty-edge --patch "$(cat patch-on-delete.yaml)"
kubectl patch statefulset oredge-admin -n openresty-edge --patch "$(cat patch-on-delete.yaml)"
kubectl patch statefulset oredge-node -n openresty-edge --patch "$(cat patch-on-delete.yaml)"

3. 升級 Edge Log Server

執行以下命令啟動升級流程:

kubectl apply --server-side=true -f openresty-edge-VERSION.yml

在升級過程中,您可以執行 kubectl get pods -n openresty-edge 命令來監控升級進度。

4. 升級 Edge Log Server 資料庫

執行以下命令以升級日誌伺服器資料庫:

kubectl delete pod oredge-log-server-database-0 -n openresty-edge

5. 升級 Edge Node

在升級每個 oredge-node 相關的 POD 之前,請確保配置已經完全同步新的 Edge Node。 當前正在升級中的 Edge Node 上的服務將會中斷,因此為防止整體服務中斷,請確保有可用的 Edge Node。

kubectl delete pod oredge-node-SERIAL_NUMBER -n openresty-edge

SERIAL_NUMBER 替換為具體的 POD 序號,例如 oredge-node-0

6. 升級 Edge Admin 資料庫

執行以下命令升級 Edge Admin 資料庫:

kubectl delete pod oredge-admin-database-0 -n openresty-edge

7. 升級 Edge Admin

執行以下命令升級 Edge Admin:

kubectl delete pod oredge-admin-0 -n openresty-edge

8. 重編譯配置

登入到 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

如果有任何問題,隨時聯絡我們進行溝通。:)