从 kubernetes configmap 中的 json 文件中提取特定密钥

发布于 2025-01-10 23:54:21 字数 679 浏览 0 评论 0原文

我有一个带有 json 格式数据的 k8s 配置映射。 例如:

apiVersion: v1
kind: ConfigMap
metadata:
  name: xyz
  namespace: x
data:
  resources.json: |
    {
    "configsets":
    [
        {
            "key1":   "value1",
            "key2":
            [
                {
                    "machine":    value,
                    "id":     value
                },
                {
                    "machine":    value,
                    "id":     value
                },
                {
                    "machine":    value,
                    "id":     value,
                }
            ]
        }

我需要 key2 内的机器总数作为 bash 脚本中的变量。我怎样才能提取这些信息?

I have a k8s config map with json format data.
Ex:

apiVersion: v1
kind: ConfigMap
metadata:
  name: xyz
  namespace: x
data:
  resources.json: |
    {
    "configsets":
    [
        {
            "key1":   "value1",
            "key2":
            [
                {
                    "machine":    value,
                    "id":     value
                },
                {
                    "machine":    value,
                    "id":     value
                },
                {
                    "machine":    value,
                    "id":     value,
                }
            ]
        }

I need the total number of the machines inside key2 as a variable in a bash script. How can I extract this information?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

演出会有结束 2025-01-17 23:54:21

首先,resources.json 是错误的,应该类似于:

apiVersion: v1
kind: ConfigMap
metadata:
  name: xyz
data:
  resources.json: |
    {
    "configsets":
    [
        {
            "key1":   "value1",
            "key2": 
                [
                    {
                        "machine":    "value",
                        "id":     "value"
                    },
                    {
                        "machine":    "value",
                        "id":     "value"
                    },
                    {
                        "machine":    "value",
                        "id":     "value"
                    }
                ]
            
            
        }
    ]
    }

如果是这样,那么您可以这样做:

kubectl get cm xyz -o jsonpath='{.data.resources\.json}' | jq '.configsets[0].key2|keys|length'

这将为您提供数组内的对象数量,从而获得机器数量。

您需要安装jq。例如在 Ubuntu 中:sudo apt-get install jq

First of all, the resources.json is wrong and should be something like:

apiVersion: v1
kind: ConfigMap
metadata:
  name: xyz
data:
  resources.json: |
    {
    "configsets":
    [
        {
            "key1":   "value1",
            "key2": 
                [
                    {
                        "machine":    "value",
                        "id":     "value"
                    },
                    {
                        "machine":    "value",
                        "id":     "value"
                    },
                    {
                        "machine":    "value",
                        "id":     "value"
                    }
                ]
            
            
        }
    ]
    }

If so, then you can do:

kubectl get cm xyz -o jsonpath='{.data.resources\.json}' | jq '.configsets[0].key2|keys|length'

that will give you the number of objects inside the array thus the number of machines.

You need to have jq installed. e.g in Ubuntu: sudo apt-get install jq

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文