如何使用oc客户端从configmap中提取特定值

时间:2020-05-05 09:06:23

标签: kubernetes yaml openshift

我的配置图如下:

apiVersion: v1
data:
  my-data.yaml |2-
   #data comes here
kind: ConfigMap

是否可以通过

提取my-data.yaml键的内容
oc get configmap

或任何其他oc命令?

例如

oc get configmap myconfigmap  -o=yaml <[only my-data.yaml]>

3 个答案:

答案 0 :(得分:4)

我想演示一个示例命令,前面提到了“ coderanger”。

此示例从yaml转换为json,然后使用“ jq”命令过滤了“ .keyname”。 您也可以使用“ yq”命令来代替python一线和jq组合。

oc get configmap/myconfigmap \
   -o "jsonpath={ .data['my-data\.yaml']}" | \
   python -c 'import sys, yaml, json; y=yaml.load(sys.stdin.read()); print json.dumps(y)' | \
   jq '. | .keyname'

希望对您有帮助。

答案 1 :(得分:1)

不。据kube所见,那只是一长串。您可以使用json路径输出模式来过滤为一个值。然后用jq或yq解析它。或者只是两次使用jq:)

答案 2 :(得分:1)

有一些shell变通办法可以解析{ first_name: 'vij',email: 'vij@gmail.com',mobile_number: '9088888000',address: 'addad,dada'} 文件:

yaml

您可以使用yq,它是建立在jq之上的命令行YAML处理器。

您可以下载它并在http://mikefarah.github.io/yq/上找到文档。

yq

另一个工具是openuado/niet

Niet类似于xmllintjq,但对于YAML和JSON数据-您可以使用它来切片,过滤,映射和转换结构化数据。

您可以使用简单表达式或使用xpath高级功能轻松访问数据。

您可以轻松地将YAML格式转换为JSON格式,反之亦然。

niet代表纯bash-yaml

对于纯bash,您可以尝试:

bash

读取yaml文件并在bash中创建变量

简单的41行重击script仅使用jasperes/bash-yamlsed来解析awk文件并从中创建变量。

yaml

mrbaseman/parse_yaml提供了一个bash函数,该函数可以解析简单的YAML文件。输出是外壳程序代码,该代码定义了包含已解析值的外壳程序变量。 parse_yaml不支持多维数组。因此,将为每个值创建一个单独的变量,该变量的名称由yaml文件中所有级别的名称组成,这些名称与默认为bash

的分隔符粘合在一起