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、持久卷声明以及资源配置,确保它们与目标集群环境及实际业务需求相匹配。