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

Kubernetes 如何使用oc客户端从configmap提取特定值,kubernetes,yaml,openshift,Kubernetes,Yaml,Openshift,我的配置映射如下所示: apiVersion: v1 data: my-data.yaml |2- #data comes here kind: ConfigMap 是否可以通过提取my data.yaml键的内容 oc get configmap 或任何其他oc命令 e、 g oc-get-configmap-myconfigmap-o=yaml 不。在库贝看来,这只是一个长字符串。不过,您可以使用json路径输出模式只过滤一个值。然后用jq或yq解析它。或者只需使用jq两次:)

我的配置映射如下所示:

apiVersion: v1
data:
  my-data.yaml |2-
   #data comes here
kind: ConfigMap
是否可以通过提取
my data.yaml
键的内容

oc get configmap
或任何其他
oc
命令

e、 g

oc-get-configmap-myconfigmap-o=yaml

不。在库贝看来,这只是一个长字符串。不过,您可以使用json路径输出模式只过滤一个值。然后用jq或yq解析它。或者只需使用jq两次:)

有一些shell解决方法可以解析
yaml
文件:

yq
您可以使用
yq
,这是一种构建在其上的命令行YAML处理器

您可以下载它并在上找到文档

niet
另一个工具是

Niet与YAML和JSON数据类似,但您可以使用它对结构化数据进行切片、过滤、映射和转换

通过使用简单表达式或使用xpath高级功能访问非平凡数据,可以轻松检索数据

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

bash-yaml
用于纯
bash
对于纯
bash
,您可以尝试:

  • 或者
jasperes/bash yaml
读取yaml文件并在bash中创建变量

bash的简单41行仅使用
sed
awk
解析
yaml
-文件并从中创建变量

mrbaseman/parse\u yaml
parse_yaml
提供了一个bash函数,允许解析简单的yaml文件。输出是定义包含解析值的shell变量的shell代码
bash
不支持多维数组。因此,为每个值创建一个单独的变量,该变量的名称由yaml文件中所有级别的名称组成,并用一个分隔符粘在一起,该分隔符默认为
\uu


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

本例将yaml转换为json,然后使用“jq”命令过滤“.keyname”。 您还可以使用“yq”命令,而不是pythonner和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'

我希望它能帮助您。

请详细说明json路径部分这是我需要的,我想我甚至不需要python部分
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'