You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Helm Hook在卸载时删除Zeebe的Persistent Volumes

解决Helm卸载Zeebe时残留PV/PVC的Hook配置方法

Helm出于数据安全考虑,默认不会自动删除Persistent Volume Claims(PVC)和Persistent Volumes(PV)。要在执行helm uninstall时自动清理这些资源,你可以通过Helm Hook创建一个清理Job,具体步骤如下:

1. 编写清理Hook的Job配置

创建一个名为zeebe-pv-cleanup-hook.yaml的文件,内容如下:

apiVersion: batch/v1
kind: Job
metadata:
  name: zeebe-pv-cleanup
  annotations:
    # 指定Hook触发时机:卸载完成后执行
    "helm.sh/hook": post-delete
    # 控制Hook执行顺序,数字越小优先级越高
    "helm.sh/hook-weight": "1"
    # Hook执行成功后自动删除Job资源
    "helm.sh/hook-delete-policy": hook-succeeded
spec:
  template:
    spec:
      restartPolicy: OnFailure
      containers:
      - name: kubectl-client
        # 使用带kubectl命令的镜像
        image: bitnami/kubectl:latest
        command:
        - /bin/sh
        - -c
        - |
          # 删除Zeebe相关的PVC(根据实际标签调整,这里用app=zeebe作为示例)
          kubectl delete pvc -l app=zeebe --namespace {{ .Release.Namespace }}
          # 删除与这些PVC绑定的PV(仅处理当前命名空间下的绑定PV)
          for pv_name in $(kubectl get pv -o jsonpath='{.items[?(@.spec.claimRef.namespace=={{ .Release.Namespace }})].metadata.name}'); do
            kubectl delete pv $pv_name
          done

2. 将Hook集成到Zeebe部署中

因为你只编辑过values.yaml,有两种方式添加这个Hook:

  • 方式一:安装时指定额外配置文件
    执行安装命令时,同时加载你的自定义values.yaml和Hook配置文件:
    helm install zeebe camunda/zeebe -f your-custom-values.yaml -f zeebe-pv-cleanup-hook.yaml
    
  • 方式二:修改Zeebe的Helm Chart(如果有修改权限)
    把上面的zeebe-pv-cleanup-hook.yaml文件复制到Zeebe Chart的templates目录下,再重新安装或升级Chart。

3. 关键注意事项

  • 权限问题:如果你的K8s集群开启了RBAC,需要确保Hook的Job有足够权限删除PVC和PV。可以额外添加一个ServiceAccount、Role和RoleBinding,绑定到Job的serviceAccountName字段上。
  • PV回收策略:如果PV的回收策略是Retain,删除PVC后PV会进入Released状态,此时需要手动确认删除;如果是动态创建的PV(回收策略默认Delete),删除PVC后PV会被自动清理,脚本里的PV删除命令可以根据实际情况调整。
  • 标签匹配:脚本里用-l app=zeebe筛选Zeebe的PVC,如果你部署时用了其他自定义标签,需要修改这个筛选条件。

内容的提问来源于stack exchange,提问作者Andy Dufresne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:25:56