升級 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
如果有任何問題,隨時聯絡我們進行溝通。:)