升级 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
如果有任何问题,随时联系我们进行沟通。:)