【问题标题】:how to extract specific value from a configmap using oc client如何使用 oc 客户端从配置映射中提取特定值
【发布时间】:2020-08-19 21:38:23
【问题描述】:

我的配置图如下所示:

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]>

【问题讨论】:

    标签: kubernetes yaml openshift


    【解决方案1】:

    我想演示一个示例命令,前面提到过“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'
    

    希望对你有帮助。

    【讨论】:

    • 这正是我需要的,我想我什至不需要python部分
    【解决方案2】:

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

    【讨论】:

    • 请详细说明json路径部分
    【解决方案3】:

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

    yq

    您可以使用yq,这是一个基于jq 构建的命令行 YAML 处理器。

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

    niet

    另一个工具是openuado/niet

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

    您可以通过使用简单的表达式或使用 xpath 高级功能访问重要数据来轻松检索数据。

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

    bash-yamlbash

    bash可以试试:

    jasperes/bash-yaml

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

    简单的 41 行 bash script 仅使用 sedawk 来解析 yaml 文件并从中创建变量。

    mrbaseman/parse_yaml

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 2021-10-20
      • 2022-01-05
      • 2012-01-17
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多