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'