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

如何在Kubernetes集群中列出使用指定ConfigMap的所有Deployment

查询使用指定ConfigMap的Deployment方法

目前kubectl没有直接提供--with-config-map这类参数,但可以通过以下几种简便方法实现需求:

方法一:用kubectl结合jq精准筛选

通过kubectl输出JSON格式数据,再用jq过滤出包含指定ConfigMap引用的Deployment:

kubectl get deployments -o json | jq '.items[] | select(.spec.template.spec.containers[].env[]?.valueFrom.configMapKeyRef.name == "my-config-map") | .metadata.name'

如果要覆盖envFrom方式引用ConfigMap的场景,可扩展jq表达式:

kubectl get deployments -o json | jq '.items[] | select( (.spec.template.spec.containers[].env[]?.valueFrom.configMapKeyRef.name == "my-config-map") or (.spec.template.spec.containers[].envFrom[]?.configMapRef.name == "my-config-map") ) | .metadata.name'

方法二:用grep快速临时查询

如果没有jq工具,也可以结合kubectl的YAML输出和grep筛选:

kubectl get deployments -o yaml | grep -B5 -A5 "configMapKeyRef:" | grep -B10 -A10 "name: my-config-map" | grep "metadata:" -A1 | grep "name:"

注:该方法可能会出现重复输出,需要手动去重,适合临时快速查询。

方法三:自定义kubectl插件(适合频繁使用)

如果需要经常执行这类查询,可以写一个简单的shell脚本作为kubectl插件,命名为kubectl-findcm:

#!/bin/bash
if [ -z "$1" ]; then
    echo "Usage: kubectl findcm <configmap-name>"
    exit 1
fi
kubectl get deployments -o json | jq ".items[] | select(.spec.template.spec.containers[].env[]?.valueFrom.configMapKeyRef.name == \"$1\") | .metadata.name"

给脚本赋予执行权限后,就可以像原生kubectl命令一样使用:

kubectl findcm my-config-map

附:ConfigMap变更后批量重启Deployment

查到目标Deployment后,可执行以下命令批量滚动重启:

kubectl get deployments -o json | jq -r '.items[] | select(.spec.template.spec.containers[].env[]?.valueFrom.configMapKeyRef.name == "my-config-map") | .metadata.name' | xargs kubectl rollout restart deployment

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:45:13