在 Kubernetes 环境中部署 OpenResty Edge

在开始部署之前,请确保您已经搭建好 Kubernetes 集群。

下载部署文件

首步,请前往 OpenResty 公司的下载中心下载最新的部署文件 openresty-edge-VERSION.yml

调整部署文件

下载部署文件之后,请根据具体情况调整以下配置:

  1. 修改 storageClassName,以符合您集群中的存储类名称,建议使用网络存储如 NFS、Ceph。配置文件中的 storageClassName 默认为 local-path

    对于名为 oredge-admin-databaseoredge-log-server-database 的 PVC,我们建议您使用 reclaimPolicy: Retain 的 StorageClass,以避免数据库数据被误删。

    对于名为 oredge-node-data 的 volumeClaimTemplates,使用的 StorageClass 则可以使用默认的策略 reclaimPolicy: Delete

您还可以根据需求调整以下配置(可选):

  1. Edge Admin Web 服务的默认端口设为 30443,类型默认为 NodePort
  2. Edge Node 服务默认通过 LoadBalancer 类型对外提供服务。
  3. 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时,为了避免误操作导致数据丢失,我们建议您进行以下操作:

  1. 定期备份 OpenResty Edge Admin DB 及 OpenResty Edge Log Server DB 的数据。

  2. 修改 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