Openshift-confimap和pods之间的相关性
有一个快速方法/oc命令可以获取哪个部署使用一个或多个configmap 在我的例子中,我需要知道应用configmap更新需要展开哪个部署 dc YAML文件上没有证据 提前谢谢 来自OpenShift 3.9中的 在DeploymentConfig中,这是从ConfigMap中提取所有环境变量的一节Openshift-confimap和pods之间的相关性,openshift,Openshift,有一个快速方法/oc命令可以获取哪个部署使用一个或多个configmap 在我的例子中,我需要知道应用configmap更新需要展开哪个部署 dc YAML文件上没有证据 提前谢谢 来自OpenShift 3.9中的 在DeploymentConfig中,这是从ConfigMap中提取所有环境变量的一节 spec: containers: ... envFrom: - configMapRef: name: env-config
spec:
containers:
...
envFrom:
- configMapRef:
name: env-config
...
在中,可能值得在特定命名空间/项目中为关键字configMap
对所有部署配置进行灰色映射,以检查是否已连接configMaps
$ oc get dc -o json -n $(oc project -q) | grep -A2 configMap
"configMapRef": {
"name": "printenv-config"
}
假设从configmaps注入环境变量,可能有一种更简单的方法但是您也可以通过管道进入jq,并根据envFrom
数组键不为null进行过滤
oc get dc -o json | jq -r '[.items[] | select(.spec.template.spec.containers[].envFrom[]? != null)]' | jq -c '.[] | {namespace: .metadata.namespace, dcname: .metadata.name, configMap: .spec.template.spec.containers[].envFrom[].configMapRef.name}'
结果:
{"namespace":"aps-env","dcname":"openshift-tasks","configMap":"another-config-map"}
{"namespace":"aps-env","dcname":"printenv","configMap":"printenv-config"}
{"dcname":"gogs","configMapName":"gogs-configmap"}
或者,您可以通过卷装载来装载configMap,在这种情况下,节是不同的,您需要相应地调整上述内容
"volumes": [
...
{
"configMap": {
"defaultMode": 420,
"name": "gogs"
},
"name": "config-volume"
}
...
基于卷装入的configMap的不同查询
$ oc get dc -o json | jq -r '[.items[] | select(.spec.template.spec.volumes[]?.configMap != null)]' | jq -c '.[] | {dcname: .metadata.name, configMapName: .spec.template.spec.volumes[].configMap.name}' | grep -v null
结果:
{"namespace":"aps-env","dcname":"openshift-tasks","configMap":"another-config-map"}
{"namespace":"aps-env","dcname":"printenv","configMap":"printenv-config"}
{"dcname":"gogs","configMapName":"gogs-configmap"}