如何列出 Kubernetes 集群中使用给定 ConfigMap 的所有部署

问题描述 投票:0回答:2

是否有一种简单的方法来查询使用给定 ConfigMap 作为 valueFrom 的所有部署:configMapKeyRef。

我需要知道哪些部署使用我的配置映射,以便能够在配置映射更改后重新启动它们。

我正在寻找类似的东西:

kubectl get deployments --with-config-map my-config-map

kubernetes openshift kubernetes-helm configmap
2个回答
2
投票

没有办法像你想要的那样轻松地做到这一点。但是,您仍然可以通过使用 jsonpath 作为 kubectl 命令的输出来在一个命令中获取所需的数据。


0
投票

感谢@OreOp。作为快速回答,我在这里粘贴了一些我尝试过的示例,它列出了所有 pod 及其 configMap 名称

kubectl get pods \
-o=jsonpath='{range .items[*]}{.metadata.namespace}{"::"}{.metadata.name}{"\t\t"}{.spec.volumes[*]..configMap.name}{"\n"}{end}' -A

范围可以嵌套:

kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.namespace}{"::"}{.metadata.name}{"\t\t"}{range .spec.volumes[*]..configMap}{.name}{", "}{end}{"\n"}{end}' -A

但输出不太好:

kube-system::calico-kube-controllers-74d5f9d7bb-wpk4t       kube-root-ca.crt, 
kube-system::calico-node-62cpd      kube-root-ca.crt, 
kube-system::calico-node-bxpbm      kube-root-ca.crt, 
kube-system::calico-node-xc4w5      kube-root-ca.crt, 
kube-system::coredns-5dd5756b68-h8xlz       coredns, kube-root-ca.crt, 
kube-system::coredns-5dd5756b68-k2zf5       coredns, kube-root-ca.crt, 
kube-system::etcd-unode1        
kube-system::kube-apiserver-unode1      
kube-system::kube-controller-manager-unode1     
kube-system::kube-proxy-gzt65       kube-proxy, kube-root-ca.crt, 
kube-system::kube-proxy-tmvp9       kube-proxy, kube-root-ca.crt, 
kube-system::kube-proxy-x7djq       kube-proxy, kube-root-ca.crt, 
kube-system::kube-scheduler-unode1      
© www.soinside.com 2019 - 2024. All rights reserved.