Openshift-confimap和pod之间的相关性

时间:2019-01-16 14:43:17

标签: openshift

有一种快速的方法/ oc命令来获取使用一个或多个configmap进行的部署?

就我而言,我需要知道需要进行哪些部署才能应用configmap更新。

dc YAML文件上没有证据。

谢谢!

1 个答案:

答案 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"}