OpenResty XRay™ 自主部署版 Helm 部署
概述
使用 Helm 在 Kubernetes 叢集中部署 OpenResty XRay,可以簡化應用的安裝、升級與生命週期管理。Helm 使用一種名為 chart 的打包格式。OpenResty XRay 目前尚未提供公開的 Helm 倉庫,需要使用本地 chart 包進行部署。
本文件涵蓋以下內容:
前提條件
在開始之前,請確保已經具備以下條件:
- 一個執行中的 Kubernetes 叢集。
- 已安裝 Helm CLI,並已配置好與目標叢集的連線。
- 擁有在叢集中部署應用所需的許可權。
- 瞭解叢集中可用的儲存類(StorageClass),用於配置持久化儲存。
安裝
獲取 Helm Chart
OpenResty XRay 當前不提供公開的 Helm 倉庫,chart 以本地包(.tar.gz)的形式分發。
使用本地 Helm Chart 安裝
下載我們提供的 OpenResty XRay Helm chart 包(
.tar.gz檔案)。將 chart 包解壓到本地任意目錄。
進入解壓後的目錄:
cd path_to_directory/orxray在執行安裝命令之前,請先按照下文 配置 一節調整
values.yaml,使其符合你的實際環境。
配置
values.yaml 概述
values.yaml 檔案彙總了 OpenResty XRay Helm chart 的所有可配置項。在部署之前,請認真檢查並按需修改此檔案。
Ingress 配置
如果計劃透過 Ingress Controller 或應用閘道器暴露服務,需要在 values.yaml 中相應地配置 ingress 部分:
ingress:
enabled: true
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
paths: []
hosts:
- host: xray-console.example.com
paths: ["/"]
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
持久卷宣告覆蓋
對於持久化資料儲存,persistentVolumeClaimOverride 部分允許你指定自定義的 storageClassName 和 volumeName。請根據叢集中可用的儲存選項進行配置:
persistentVolumeClaimOverride:
consoleData:
storageClassName: <your-storage-class-name>
volumeName: <your-volume-name>
為了快速驗證,你可以指定 storageClassName 為 local-path。
資源限制與請求
values.yaml 中已經預設了預設的資源 requests 與 limits,你可以根據節點的實際容量與業務負載進行調整:
resources:
console:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "500m"
memory: 512Mi
HTTP 代理配置(可選)
如果你的網路環境需要透過 HTTP 代理才能訪問外部網路,請在 values.yaml 中按下面的方式配置:
customInfo:
env:
httpProxy: "http://proxyserver.example.com:8080"
httpProxyAuthorization: "Basic `base64 'username:password'`"
部署 OpenResty XRay
完成上述配置後,執行以下命令將 OpenResty XRay 部署到 Kubernetes 叢集:
helm install openresty-xray ./orxray -f ./orxray/values.yaml
運維
檢視 Pod 狀態
檢視 OpenResty XRay 相關 Pod 的執行狀態:
kubectl get pods -l "app.kubernetes.io/name=orxray"
檢視上一步獲取到的 Pod 的詳細資訊:
kubectl describe pod POD-NAME
如果 Pod 出現 pod has unbound immediate PersistentVolumeClaims 之類的錯誤,可以進一步檢查 PVC 與 StorageClass 的資訊:
kubectl get pvc
kubectl get storageclass
kubectl describe pvc PVC-NAME
進入指定容器排查問題(以 build-box-rockylinux-8 為例):
kubectl exec -it POD-NAME -c build-box-rockylinux-8 -- bash
檢視服務日誌
檢視 OpenResty XRay 控制檯(console)日誌:
kubectl logs CONSOLE-POD-NAME -c xray-console
# 檢視該容器上一次執行(崩潰前)的日誌
kubectl logs CONSOLE-POD-NAME -c xray-console --previous
檢視 tenant-db 與 build-box 容器的日誌:
kubectl logs TENANT-POD-NAME -c xray-tenant-db
kubectl logs TENANT-POD-NAME -c xray-tenant-db --previous
kubectl logs TENANT-POD-NAME -c build-box-rockylinux-8
kubectl logs TENANT-POD-NAME -c build-box-rockylinux-8 --previous
升級元件
升級 OpenResty XRay 時,請先下載最新版本的 chart 包並解壓,然後執行:
helm upgrade openresty-xray ./orxray -f ./orxray/values.yaml
如果本次升級未涉及 PVC 的變更,則無需刪除現有 PVC,已儲存的資料不會受到影響。
總結
透過 Helm 在 Kubernetes 叢集中部署 OpenResty XRay,可以讓安裝、升級與日常運維更加規範、可控。部署前請重點審閱 values.yaml 中的 Ingress、持久卷宣告以及資源配置,確保它們與目標叢集環境及實際業務需求相匹配。