升级 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

如果有任何问题,随时联系我们进行沟通。:)