在 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