openshift - Openshift - confimap 和 pod 之间的相关性
问题描述
有一种快速的方式/oc 命令来获取哪个部署使用一个或多个配置映射?
就我而言,我需要知道我需要推出哪个部署来应用 configmap 更新。
没有关于 dc YAML 文件的证据。
提前致谢!
解决方案
来自OpenShift 3.9 中的指南
在 DeploymentConfig 中,这是从 ConfigMap 中提取所有环境变量的节。
spec:
containers:
...
envFrom:
- configMapRef:
name: env-config
...
可能值得为configMap
特定命名空间/项目中的关键字查找所有部署配置,以检查您是否附加了 configMap
$ oc get dc -o json -n $(oc project -q) | grep -A2 configMap
"configMapRef": {
"name": "printenv-config"
}
假设从 configmaps 注入环境变量,可能有更简单的方法来做到这一点?- 但您也可以通过管道输入 jq 并根据envFrom
数组键不为空进行过滤
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,在这种情况下,Stanza 是不同的,您需要相应地调整上述内容
"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"}
推荐阅读
- amazon-dynamodb - 使用无服务器框架部署无服务器项目时如何运行 DynamoDB 脚本?
- google-api - 试驾 Speech-to-Text 异步操作 - 无结果
- asp.net-core - 启动完成后在哪里运行代码
- c# - Android - 广播中的共享首选项
- python - 代码在 Python 2 中有效,但在 Python3 中无效 TypeError: a bytes-like object is required, not 'str'
- angular - 带有打字稿的Angular版本6 Raygun设置问题
- mysql - 使用别名时的重复字段
- xml - 如何在 XPath 中获取所选元素的文本?
- xamarin.forms - 登录成功时的 Xamarin 表单导航
- xml - Ada 等价于 Python 的 dir() 方法