是否有一种简单的方法来查询使用给定 ConfigMap 作为 valueFrom 的所有部署:configMapKeyRef。
我需要知道哪些部署使用我的配置映射,以便能够在配置映射更改后重新启动它们。
我正在寻找类似的东西:
kubectl get deployments --with-config-map my-config-map
没有办法像你想要的那样轻松地做到这一点。但是,您仍然可以通过使用 jsonpath 作为 kubectl 命令的输出来在一个命令中获取所需的数据。
感谢@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