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