как получить имя метаданных объекта в kubernetes - PullRequest
0 голосов
/ 25 февраля 2020

Я могу получить все элементы списка объектов, такие как Secrets и ConfigMaps.

{
"kind": "SecretList",
"apiVersion": "v1",
"metadata": {
    "selfLink": "/api/v1/namespaces/kube-system/secrets",
    "resourceVersion": "499638"
},
"items": [{
    "metadata": {
        "name": "aaa",
        "namespace": "kube-system",
        "selfLink": "/api/v1/namespaces/kube-system/secrets/aaa",
        "uid": "96b0fbee-f14c-423d-9734-53fed20ae9f9",
        "resourceVersion": "1354",
        "creationTimestamp": "2020-02-24T11:20:23Z"
    },
    "data": "aaa"
}]
}

, но мне нужен только список имен, для этого примера: "aaa". Есть ли способ?

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Да, вы можете добиться этого, используя вывод jsonpath. Обратите внимание, что опубликованная вами спецификация будет выглядеть совсем иначе после применения. Он создаст один Secret объект в вашем kube-system пространстве имен, и когда вы запустите:

$ kubectl get secret -n kube-system aaa -o json

, результат будет выглядеть примерно так:

{
    "apiVersion": "v1",
    "kind": "Secret",
    "metadata": {
        "creationTimestamp": "2020-02-25T11:08:21Z",
        "name": "aaa",
        "namespace": "kube-system",
        "resourceVersion": "34488887",
        "selfLink": "/api/v1/namespaces/kube-system/secrets/aaa",
        "uid": "229edeb3-57bf-11ea-b366-42010a9c0093"
    },
    "type": "Opaque"
}

Чтобы получить только name из ваших Secret вам нужно запустить:

kubectl get secret aaa -n kube-system -o jsonpath='{.metadata.name}'
0 голосов
/ 25 февраля 2020

я думаю, что это должно работать.

kubectl get secretlist -o=jsonpath="{.items[*].metadata.name]}" | grep -v HEAD | head -n1

проверьте ссылку ниже для получения дополнительной информации.
https://kubernetes.io/docs/reference/kubectl/jsonpath/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...