资讯动态

使用 incubator/cassandra-reaper Helm Chart 在 Kubernetes 中部署与配置 Cassandra Reaper

发布时间:2026/10/3 8:31:19 来源:尧图企业网站定制
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载本指南以当前仓库中 incubator/cassandra-reaper 的官方 README 为骨架结合该 Chart 的源码模板与默认配置系统讲解 Cassandra Reaper 在 Kubernetes 上的安装、卸载、参数配置、Ingress 暴露、Basic Auth 鉴权以及资源调度等完整实战方案。读完本文你将掌握基于 Helm 一键部署 Reaper、通过环境变量驱动其运行配置、为 Web 控制台配置 TLS 与基础认证以及按集群资源定制部署形态的具体操作方法。一、Chart 背景与仓库定位Cassandra Reaper 是一个集中式、有状态且高度可配置的 Apache Cassandra 修复Repair工具支持对单数据中心或多数据中心集群执行修复任务。仓库中 Chart.yaml 对它的描述是Reaper is a centralized, stateful, and highly configurable tool for running Apache Cassandra repairs against single or multi-site clusters.该 Chart 的基本元信息如下来自 Chart.yaml字段值Chart 名称cassandra-reaperChart 版本0.2.3应用版本appVersion1.3.0模板引擎gotpl镜像仓库thelastpickle/cassandra-reaper默认 tag1.3.0状态deprecated: true需要特别说明的是本仓库中的所有 Chart 已于 2020 年 11 月 13 日起停止更新维护README 中明确标注了仓库归档通知与弃用声明DEPRECATION NOTICE因此本指南所描述的内容适用于 Helm 2 时代及当时的 Kubernetes API 版本如 Deployment 使用apps/v1beta2、Ingress 使用extensions/v1beta1。如果你的集群使用 Helm 3 或较新的 Kubernetes 版本请将其作为配置思路参考并结合新版 API 进行适配迁移。二、快速安装与卸载安装在仓库根目录下通过 Helm 将 Chart 安装到cassandra命名空间release 名称为cassandra-reaperhelm install --namespace cassandra -n cassandra-reaper incubator/cassandra-reaper安装完成后可使用helm status cassandra-reaper查看发布状态。默认配置下Chart 会创建一个名为cassandra-reaper的 DeploymentreplicaCount为 1、一个ClusterIP类型的 Service以及对应的标签、探针等资源但不创建 Ingressingress.enabled默认为false。卸载helm delete --purge cassandra-reaper--purge为 Helm 2 时代的参数表示删除 release 时同时清除其历史记录使用 Helm 3 时直接执行helm delete cassandra-reaper即可。三、核心配置参数一览完整参数表以下为 README 中给出的完整可配置参数表这些参数均可通过values.yaml或helm install --set keyvalue覆盖参数说明默认值replicaCountcassandra-reaper副本数量1image.repositorycassandra-reaper镜像仓库thelastpickle/cassandra-reaperimage.tagcassandra-reaper镜像 tag1.3.0image.pullPolicy镜像拉取策略IfNotPresentservice.type暴露端口的 Kubernetes Service 类型如NodePortClusterIPingress.enabled是否启用 Ingress 资源falseingress.annotationsIngress 资源的注解{}ingress.labelsIngress 资源的额外标签{}ingress.pathIngress 资源的路径/ingress.hostsIngress 资源的主机列表[]ingress.tlsIngress 资源的 TLS 定义[]ingress.basicAuth.enabled若为 true 则创建 Basic Auth Secretfalseingress.basicAuth.nameBasic Auth Secret 资源的名称basic-authingress.basicAuth.secretBasic Auth 文件的 base64 编码内容启用 Basic Auth 时必须提供env环境变量键值对形式{}resources资源请求/限制{}nodeSelectorKubernetes 节点选择器{}tolerationsKubernetes 节点容忍度[]affinityKubernetes 节点亲和性{}上述参数在 values.yaml 中都有对应默认值声明此外该文件还额外支持nameOverride与fullnameOverride用于覆盖 Chart 默认的资源命名规则相关机制详见后文命名约定一节。四、通过环境变量驱动 Reaper 运行配置Cassandra Reaper 的运行时配置主要由环境变量驱动。README 明确指出要正确配置cassandra-reaper请参考其官方环境变量配置文档docker vars。本 Chart 的做法是把values.yaml中的env字段以键值对形式原样注入容器环境。从 deployment.yaml 的模板逻辑可以看到注入机制env: {{- range $key, $value : .Values.env }} - name: {{ $key }} value: {{ $value | quote }} {{- end }}即env是一个普通字典每个键成为容器环境变量名每个值通过quote模板函数自动加引号后写入。例如在values.yaml中配置env: REAPER_STORAGE_TYPE: cassandra REAPER_CASS_CONTACT_POINTS: cassandra REAPER_CASS_KEYSPACE: reaper_db REAPER_ENABLE_CROSS_ORIGIN: true REAPER_AUTO_ENABLE_NEW_CLUSTERS: false JAVA_OPTS: -Xms256m -Xmx512m上述写法会被渲染为容器的env列表Reaper 启动时即可读取对应配置。需要注意两点env与探针、端口等硬编码配置不同它是完全自由的字典键名需要与 Reaper 镜像内部约定的环境变量名称一致具体变量清单与取值请以所用镜像版本的官方配置文档为准值统一会被quote包裹因此布尔值、数字等类型在模板中以字符串形式注入Reaper 侧会自行解析。五、使用 Ingress 暴露 Web 控制台Reaper 默认通过 Service 在集群内部暴露若要对外提供 Web 控制台访问需要启用 Ingress。Chart 在 ingress.yaml 中渲染 Ingress 资源完整支持注解、自定义标签、多主机、TLS 与 Basic Auth。基础启用示例ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: true path: / hosts: - reaper.example.com对应的 Ingress 模板渲染逻辑摘自 ingress.yamlrules: {{- range .Values.ingress.hosts }} - host: {{ . | quote }} http: paths: - path: {{ $ingressPath }} backend: serviceName: {{ $fullName }} servicePort: http {{- end }}ingress.hosts支持多个主机每个主机都指向名为{{ fullname }}的 Service 的http端口即 8080见 Service 定义。ingress.path默认/可根据需要改为/reaper等子路径。配置 TLSingress.tls用于配置 HTTPS 证书默认值为空。在 values.yaml 中给出了参考结构ingress: tls: - secretName: chart-example-tls hosts: - chart-example.local模板会遍历ingress.tls列表为每个条目渲染tls[].hosts与对应的secretName即存放证书的 Kubernetes Secret 名称配合kubernetes.io/tls-acme: true注解可实现 Lets Encrypt 自动签发。每个 tls 条目中secretName与hosts为必填字段secretName在模板中直接引用见 ingress.yaml 中的secretName: {{ .secretName }}。自定义标签与注解ingress.annotations与ingress.labels通过toYaml模板函数整体渲染进 Ingress 的 metadata可用于指定 Ingress Controller 类别如kubernetes.io/ingress.class: nginx、流量管理、日志采集等场景ingress: labels: app: reaper team: database六、为控制台启用 Basic Auth 鉴权由于 Cassandra Reaper 自身目前缺乏内置的认证机制本 Chart 通过 Ingress 层的 Basic Auth 提供基础访问保护。README 特别说明这种方式是否生效取决于你选择的 Ingress Controller 实现如 Nginx Ingress 支持在 Secret 中挂载auth数据不同 Controller 的配置方式略有差异请查阅对应 Ingress Controller 的文档进行核对。启用 Basic Auth 时需要提供 auth 文件的 base64 编码版本。生成 auth 文件README 给出的生成示例为htpassword -c ./auth myuser cat ./auth | base64说明示例中的htpassword应为 Apache 工具集提供的htpasswd如apache2-utils包正确命令为htpasswd -c ./auth myuser # 按提示输入密码 cat ./auth | base64 # 输出 base64 编码后的 auth 文件内容启用并注入 Secret将上一步输出的 base64 字符串填入values.yamlingress: enabled: true basicAuth: enabled: true name: reaper-basic-auth # 自定义 Secret 名称 secret: 上一步 base64 输出的内容当ingress.enabled与ingress.basicAuth.enabled同时为 true 时secret.yaml 会创建一个Opaque类型的 Secret其渲染逻辑为type: Opaque data: auth: {{ required .Values.ingress.basicAuth.secret is required when basicAuth is enabled .Values.ingress.basicAuth.secret }}这里有几个值得注意的细节Secret 的数据键固定为auth这正是 Nginx Ingress 等 Controller 读取 Basic Auth 凭据的约定键名required模板函数保证只要启用了 Basic Auth 而未提供secret字段Helm 渲染阶段就会直接报错并给出提示信息从源头避免认证形同虚设的配置失误ingress.basicAuth.name不填时默认使用basic-auth见 secret.yaml 中的default basic-auth填了则使用自定义名称并在部署时注意与 Ingress Controller 的认证注解引用保持一致。七、Service 与健康检查机制Service 定义默认情况下 Chart 创建一个ClusterIP类型的 Service见 service.yamlspec: type: {{ .Values.service.type }} ports: - port: 8080 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/name: {{ include cassandra-reaper.name . }} app.kubernetes.io/instance: {{ .Release.Name }}Service 将集群内 8080 端口转发到 Pod 的http命名端口。若需要从集群外部直接访问不通过 Ingress可将service.type改为NodePort或LoadBalancer。探针配置Reaper 容器对外暴露两个端口见 deployment.yamlhttp8080Web 控制台api8081REST APIDeployment 同时配置了完备的存活与就绪探针探针类型探测路径端口initialDelaySecondsperiodSecondstimeoutSecondslivenessProbe/api808160205readinessProbe/api808110105探针均以 HTTP GET 方式请求 API 端口根路径就绪探针延迟较短10 秒用于尽快将可用实例加入 Service 端点存活探针延迟较长60 秒给 Reaper 充分的时间完成 JVM 启动与 Cassandra 连接初始化避免启动慢导致 Pod 被误杀。八、资源限制与调度策略资源请求与限制通过resources字段为 Reaper 容器声明 CPU/内存请求与上限模板使用toYaml直接渲染见 deployment.yamlresources: requests: cpu: 500m memory: 512Mi limits: cpu: 1000m memory: 1GiReaper 是有状态、运行 JVM 的修复任务调度器建议根据集群规模与修复并发度合理设置内存上限避免 OOM。节点调度Chart 支持三种 Kubernetes 原生调度约束模板中的渲染位置见 deployment.yamlnodeSelector: disktype: ssd tolerations: - key: dedicated operator: Equal value: reaper effect: NoSchedule affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: topology.kubernetes.io/zone operator: In values: - us-central1-a三者的默认值分别为{}、[]、{}即不做任何调度约束按需启用即可。九、命名约定与 Helm 渲染细节资源名称由 _helpers.tpl 中的三个模板函数统一生成理解它们有助于预判部署后资源的确切名称cassandra-reaper.name取.Chart.Name默认cassandra-reaper若设置了nameOverride则优先使用统一截断至 63 字符cassandra-reaper.fullname优先使用fullnameOverride否则若 release 名称已包含 Chart 名则直接复用 release 名否则拼接为{release-name}-cassandra-reaper同样截断至 63 字符Kubernetes 部分资源名称受 DNS 命名规范限制cassandra-reaper.chart渲染为{Chart.Name}-{Chart.Version}并将替换为_用于资源的helm.sh/chart标签。所有模板资源Deployment、Service、Ingress、Secret都统一携带以下标准标签app.kubernetes.io/namehelm.sh/chartapp.kubernetes.io/instancerelease 名称app.kubernetes.io/managed-by{{ .Release.Service }}这些标签保证了 Helm release 的资源选择与追踪一致性Service 的 selector 正是通过app.kubernetes.io/name与app.kubernetes.io/instance精确匹配到 Deployment 管理的 Pod。十、运维注意事项与弃用提示版本与 API 兼容性该 Chart 使用apps/v1beta2Deployment 与extensions/v1beta1Ingress仅适用于旧版 Kubernetes。在新集群中使用时建议参考 deployment.yaml 与 ingress.yaml 的语义自行迁移为apps/v1与networking.k8s.io/v1后者还需注意spec.rules[].http.paths[].pathType等新字段。仓库已归档本仓库 Chart 自 2020 年 11 月 13 日起不再更新Cassandra Reaper 官方后续版本1.4、2.x的配置变量与镜像入口可能有较大变化生产环境请优先评估维护活跃的官方部署方案并将本文作为理解 Reaper 部署形态与 Helm 模板编写思路的参考。认证方案取舍Basic Auth 依赖 Ingress Controller 实现若使用不支持auth数据键的 Controller该方案不会生效Reaper 自身没有内置认证因此切勿在无任何访问控制的情况下将控制台直接暴露到公网。副本数说明replicaCount默认为 1。Reaper 作为修复任务的调度者存在状态多副本部署需要确保存储与任务调度的一致性简单场景下保持单副本即可。结语围绕 incubator/cassandra-reaper 的 README本文完整继承了其安装、卸载命令与全部 20 余项配置参数并结合 values.yaml、deployment.yaml、ingress.yaml、secret.yaml、service.yaml 与 _helpers.tpl 的模板实现深入讲解了环境变量注入、Ingress/TLS/Basic Auth、健康检查与调度约束的底层渲染机制。即使该 Chart 已归档其集中式配置、模板化交付的设计思路与各参数的实际渲染路径仍可作为你在 Kubernetes 上部署与管理 Cassandra Reaper 的可靠参考资料。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐Cassandra Reaper 使用教程Cassandra Reaper 使用教程 项目介绍 Cassandra Reaper 是一个开源的自动化修复管理工具专门用于 Apache CassandrCassandra OperatorCassKopHelm Chart 部署指南在 Kubernetes 上以 CRD 方式创建与管理 Cassandra 集群Cassandra OperatorCassKopHelm Chart 部署指南在 Kubernetes 上以 CRD 方式创建与管理 CassandraIce macOS 菜单栏管理工具完整使用指南Ice macOS 菜单栏管理工具完整使用指南 Ice 是一款 macOS 菜单栏管理工具,解决菜单栏图标太多、被刘海屏挡住的问题,适合图标拥挤的 Mac 用户桌面应用上一篇5分钟搞定Windows任务栏美化TranslucentTB让你的桌面焕然一新下一篇让Windows任务栏焕然一新TranslucentTB透明美化工具完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑