有一种快速的方法/ oc命令来获取使用一个或多个configmap进行的部署?
就我而言,我需要知道需要进行哪些部署才能应用configmap更新。
dc YAML文件上没有证据。
谢谢!
答案 0 :(得分:1)
从OpenShift 3.9的guide起
在DeploymentConfig中,这是从ConfigMap中提取所有环境变量的节。
spec:
containers:
...
envFrom:
- configMapRef:
name: env-config
...
可能值得在特定名称空间/项目中为关键字configMap
的所有deployConfigs进行配置,以检查是否已附加configMaps
$ oc get dc -o json -n $(oc project -q) | grep -A2 configMap
"configMapRef": {
"name": "printenv-config"
}
假设从configmap中注入环境变量,可能有更简单的方法吗? -但您也可以通过envFrom
数组键不为空的方式插入jq并进行过滤
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"}
或者,您可能通过卷装载来装载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
结果:
{"dcname":"gogs","configMapName":"gogs-configmap"}