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

如何检测Kubernetes集群中Helm部署的容器镜像与Chart更新?

检测Helm Chart和容器镜像更新的方法

刚好我之前也碰到过一模一样的需求——想找个像apt list --upgradable那样的方式,快速知道Azure上K8s集群里的Helm Chart和容器镜像有没有可用更新,下面分两部分给你讲具体的实现思路:

一、检测Helm Chart的可用更新

1. 原生Helm命令手动对比(无需额外工具)

如果不想装插件,用Helm自带的命令就能完成版本对比:

  • 第一步,先更新本地的Helm仓库索引,确保获取到最新的Chart版本信息:
    helm repo update
    
  • 第二步,查看当前已部署的所有release及其Chart版本:
    helm list -n <你的命名空间>
    
    输出里的CHART列会显示当前使用的Chart名称和版本(比如nginx-ingress-4.0.17)。
  • 第三步,查询对应仓库中该Chart的所有可用版本,最顶部的就是最新版:
    helm search repo <仓库别名>/<Chart名称> --versions
    
    比如你用的是Bitnami的nginx-ingress,就运行helm search repo bitnami/nginx-ingress --versions,把结果里的最新版和你当前部署的版本对比,就能知道是否有更新。

2. 用Helm插件自动检测(更高效)

手动对比多了太麻烦,推荐用社区维护的Helm插件,能直接帮你列出所有可更新的release:

  • helm-outdated插件:这是专门用来检测过时Helm Chart的工具,你可以通过Helm的插件安装命令配合它的官方仓库地址完成安装(可自行搜索插件名称获取仓库地址)。安装后运行以下命令,就能看到指定命名空间里所有可更新的Chart:

    helm outdated -n <你的命名空间>
    

    它会清晰展示当前版本、可用最新版本,甚至还会给出版本差异的提示。

  • helm-diff插件:这个插件主要用来预览Chart更新后的配置变化,但也能间接帮你确认是否有更新。安装后运行以下命令,会对比当前release和仓库中最新Chart的差异:

    helm diff upgrade <release名称> <仓库别名>/<Chart名称> -n <你的命名空间> --dry-run
    

    如果命令输出了具体的配置差异,说明这个Chart存在可用更新。

二、检测容器镜像的可用更新

Helm本身不直接处理镜像更新的检测,因为镜像可能是在values.yaml里配置的,也可能是Chart内置的。这里有几种实用的方法:

1. 手动提取镜像后检测

首先,从Helm release中提取当前使用的所有容器镜像:

helm get manifest <release名称> -n <你的命名空间> | grep -E 'image: ' | awk '{print $2}' | sort | uniq

得到镜像列表后,用skopeo工具(需要提前安装)来检查每个镜像的最新稳定版本:

# 示例:检查docker.io/library/nginx的最新稳定版
skopeo list-tags docker://docker.io/library/nginx | jq '.Tags[]' | grep -E '^"[0-9]+\.[0-9]+\.[0-9]+"$' | sort -Vr | head -1

这个命令会输出该镜像仓库里最新的语义化版本号,和你当前使用的版本对比即可。

2. 自动化工具批量检测

如果集群里有很多release,手动检测效率太低,推荐用这些工具:

  • Renovate:可以配置成自动扫描你的Helm配置和容器镜像,一旦发现有更新就生成提醒(比如PR),完全适配Azure Kubernetes Service的场景。
  • Dependabot:GitHub官方的版本监控工具,同样能监控Helm Chart和容器镜像的更新,适合用GitHub管理Helm配置的团队。
  • Watchtower:虽然它主打自动更新容器,但可以配置成只检测不更新的模式,通过日志输出哪些镜像有可用更新:
    kubectl run watchtower --image=containrrr/watchtower --restart=Never -- --monitor-only --include-restarting
    
    运行后查看日志就能看到可更新的镜像列表:
    kubectl logs watchtower
    

总结

如果只是临时检测,用原生Helm命令+skopeo就能搞定;如果需要长期监控,装个helm-outdated插件再配合Renovate或Dependabot,完全能满足你类似apt list --upgradable的需求。

内容的提问来源于stack exchange,提问作者Nick Muller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:44:39