升級 Kubernetes 中的 OpenResty Edge
在對生產環境進行升級之前,我們強烈建議您使用生產資料構建一個與生產環境相同的測試環境,並在該環境中進行升級測試。只有在測試成功完成後,才應該在正式環境中執行升級操作。關於環境克隆的詳細步驟,請參見克隆 OpenResty Edge 環境文件。
1. 下載部署檔案
首先,請訪問 OpenResty 官方下載中心,從那裡下載最新版本的部署檔案 openresty-edge-VERSION.yml
。
下載完成後,請對 openresty-edge-VERSION.yml
進行調整,詳見調整部署檔案 以及更多說明。
除了上面提到的調整外,如果您使用的 StorageClass 不是網路儲存而是單機的儲存,那麼您可能還需要新增像下面這樣的選擇器到 oredge-admin-database
和 oredge-log-server-database
的服務(非 PVC)中,將 <node-name>
改成當前服務所在的 Kubernetes Node 名稱。
spec:
template:
spec:
nodeSelector:
kubernetes.io/hostname: <node-name>
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
如果您使用的是非 Kubernetes 的方式部署 Edge Node,請參考此文件進行升級:升級 OpenResty 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
如果有任何問題,隨時聯絡我們進行溝通。:)