在 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