如何查询Kubernetes集群中最近操作过的Helm Chart?
查询Kubernetes集群中最近操作的Helm Chart列表
一、使用Helm工具原生方案
直接通过helm ls的参数组合就能实现需求,针对多命名空间场景,需添加跨命名空间查询参数:
基础命令(按更新时间倒序展示所有Release)
helm ls --all --sort-by updated --all-namespaces
--all:显示所有状态的Release(含已卸载的),若仅需活跃状态可移除该参数--sort-by updated:按updated字段倒序排列,最新操作的Release排在最前--all-namespaces(缩写-A):遍历集群所有命名空间的Release
进阶:仅展示最近N个操作的Release
结合head命令筛选结果,比如只查看最近10条:
helm ls --all --sort-by updated --all-namespaces | head -n 11
(-n 11是为了保留表头+10条数据)
自定义输出格式(灵活筛选字段)
若需提取特定字段,可通过-o json/yaml结合jq处理:
helm ls --all --sort-by updated --all-namespaces -o json | jq '.[] | {name: .name, namespace: .namespace, updated: .updated, status: .status}'
二、使用kubectl直接查询方案
Helm 3的Release元数据以Secret形式存储(对应命名空间内,标签owner=helm);Helm 2则以ConfigMap存储在kube-system命名空间(标签OWNER=TILLER),可直接查询这些资源获取更新时间:
针对Helm 3集群
kubectl get secrets -A -l owner=helm -o json | jq ' .items | sort_by(.metadata.annotations."meta.helm.sh/release-time" | fromdateiso8601) | reverse | .[] | { release_name: .metadata.annotations."meta.helm.sh/release-name", namespace: .metadata.namespace, updated_time: .metadata.annotations."meta.helm.sh/release-time", status: .metadata.annotations."status.helm.sh/release-status" } '
- 筛选所有带
owner=helm标签的Secret - 按
meta.helm.sh/release-time注解的时间戳倒序排序 - 提取Release名称、所属命名空间、更新时间及状态
针对Helm 2集群
kubectl get configmaps -n kube-system -l OWNER=TILLER -o json | jq ' .items | sort_by(.metadata.annotations."meta.helm.sh/release-time" | fromdateiso8601) | reverse | .[] | { release_name: .metadata.annotations."meta.helm.sh/release-name", namespace: .metadata.annotations."meta.helm.sh/release-namespace", updated_time: .metadata.annotations."meta.helm.sh/release-time" } '
- 定位
kube-system中带OWNER=TILLER标签的ConfigMap - 按时间戳倒序排序后提取关键信息
内容的提问来源于stack exchange,提问作者thiagowfx
相关产品推荐
相关产品推荐

