在 Kubernetes 环境中部署 OpenResty Edge
在开始部署之前,请确保您已经搭建好 Kubernetes 集群。
下载部署文件
首步,请前往 OpenResty 公司的下载中心下载最新的部署文件 openresty-edge-VERSION.yml
。
调整部署文件
下载部署文件之后,请根据具体情况调整以下配置:
修改
storageClassName
,以符合您集群中的存储类名称,建议使用网络存储如 NFS、Ceph。配置文件中的storageClassName
默认为local-path
。对于名为
oredge-admin-database
和oredge-log-server-database
的 PVC,我们建议您使用reclaimPolicy: Retain
的 StorageClass,以避免数据库数据被误删。对于名为
oredge-node-data
的 volumeClaimTemplates,使用的 StorageClass 则可以使用默认的策略reclaimPolicy: Delete
。
您还可以根据需求调整以下配置(可选):
- Edge Admin Web 服务的默认端口设为 30443,类型默认为
NodePort
。 - Edge Node 服务默认通过
LoadBalancer
类型对外提供服务。 - Edge Admin 数据库、Edge Log Server 数据库以及 Edge Node 的持久卷声明(Persistent Volume Claim, PVC)的大小。其中,Edge Admin 和 Edge Log Server 数据库默认配置为 200GB。对于 Edge Node,每个实例默认配置为 100GB,存储了 Edge Node 的基础数据、代理缓存、以及日志。这意味着如果您运行了 10 个 Edge Node 实例,将最大允许消耗
1000GB
的存储空间。
执行 OpenResty Edge 部署
在完成部署文件的必要调整后,您可以使用 kubectl
命令行工具来部署 OpenResty Edge。
kubectl apply --server-side=true -f openresty-edge-VERSION.yml
此处使用 --server-side=true
选项是因为部署文件中的某些配置项可能会超出 kubectl 客户端模式的限制。
部署流程将创建以下资源:
- 一个
openresty-edge
命名空间 - 一个
openresty-edge-registry-secret
密钥,用于拉取 OpenResty Edge 镜像 - 四个 ConfigMap:分别对应 OpenResty Edge 配置包(openresty-edge-config-package)、Edge Admin 的配置(oredge-admin-config-ini)、Edge Log Server 配置(oredge-log-server-config-ini)、Edge Node 配置(oredge-node-config-ini)
- 四个 StatefulSet:分别对应 Edge Admin 数据库(oredge-admin-database)、Edge Log Server 数据库(oredge-log-server-database)、Edge Admin(oredge-admin)、Edge Node(oredge-node)
- 一个 Deployment:Edge Log Server(oredge-log-server)
- 五个服务:分别对应 Edge Admin Database、Edge Admin、Edge Log Server Database、Edge Log Server、Edge Node
- 两个 PVC:分别用于 Edge Admin 数据库和 Edge Log Server 数据库
- 若干个 PVC:分别用于每个 Edge Node 实例
确认部署情况
部署完成后,您可以通过检查 pod 状态来确认 OpenResty Edge 是否正确部署。
kubectl get pods -n openresty-edge
请确保所有的 OpenResty Edge 相关 pods 状态均为 Running
。
访问 OpenResty Edge
可以通过查阅服务(Service)的配置信息来获取访问 Edge Admin Web 所需的地址信息:
kubectl get svc -n openresty-edge
在获取到 OpenResty Edge 相关服务的信息后,使用返回的外部 IP 地址或者域名访问 OpenResty Edge 的 Web 界面:https://KUBERNERTES_NODE_IP:30443。
登录时使用的用户名为:admin
,
密码则可从部署文件中提取:
grep -A 1 'EDGE_ADMIN_INIT_PASSWORD' openresty-edge-VERSION.yml | grep value | awk -F "'" '{print $2}'
至此,部署完成。
更多说明
当您使用的 StorageClass 是默认的 reclaimPolicy: Delete
时,为了避免误操作导致数据丢失,我们建议您进行以下操作:
定期备份 OpenResty Edge Admin DB 及 OpenResty Edge Log Server DB 的数据。
修改 oredge-admin-database 和 oredge-log-server-database 的 PV 的回收策略成
Retain
:
kubectl get pv -n openresty-edge | grep -E 'oredge-admin-database|oredge-log-server-database' | awk -F ' ' '{print $1}' | xargs -n1 -I {} kubectl patch pv {} -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' -n openresty-edge