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 安裝

  1. 下載我們提供的 OpenResty XRay Helm chart 包(.tar.gz 檔案)。

  2. 將 chart 包解壓到本地任意目錄。

  3. 進入解壓後的目錄:

    cd path_to_directory/orxray
    
  4. 在執行安裝命令之前,請先按照下文 配置 一節調整 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 部分允許你指定自定義的 storageClassNamevolumeName。請根據叢集中可用的儲存選項進行配置:

persistentVolumeClaimOverride:
  consoleData:
    storageClassName: <your-storage-class-name>
    volumeName: <your-volume-name>

為了快速驗證,你可以指定 storageClassName 為 local-path。

資源限制與請求

values.yaml 中已經預設了預設的資源 requestslimits,你可以根據節點的實際容量與業務負載進行調整:

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、持久卷宣告以及資源配置,確保它們與目標叢集環境及實際業務需求相匹配。