Обычно большинство объектов Kubernetes довольно велики, так как у них есть пространство имен, имя, этикетки, шаблон, спецификация и куча других полей. Когда вам нужно получить только одну или несколько полей, он может получить утомительную прокрутку вверх и вниз в свой термин, ищущий его:) К счастью, kubectl
Поддерживает форматирование вашего вывода с помощью Path JSON, который позволяет вам указать формат и значения самостоятельно.
В следующем примере я покажу, как отформатировать вывод пользовательских ресурсов из Оператор, который я недавно написал Поэтому легко получить данные из поля статуса.
Во-первых, давайте посмотрим, какие данные доступны:
$ kubectl get webhookrelayforwards.forward.webhookrelay.com -o json { "apiVersion": "v1", "items": [ { "apiVersion": "forward.webhookrelay.com/v1", "kind": "WebhookRelayForward", "metadata": { "annotations": { "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"forward.webhookrelay.com/v1\",\"kind\":\"WebhookRelayForward\",\"metadata\":{\"annotations\":{},\"name\":\"forward-to-jenkins\",\"namespace\":\"jenkins\"},\"spec\":{\"buckets\":[{\"inputs\":[{\"description\":\"Endpoint for GitHub\",\"name\":\"public-endpoint\",\"responseBody\":\"OK\",\"responseStatusCode\":200}],\"name\":\"jenkins-whr-operator\",\"outputs\":[{\"destination\":\"http://jenkins-operator-http-jenkins:8080/github-webhook/\",\"name\":\"jenkins\"}]}],\"image\":\"webhookrelay/webhookrelayd-ubi8:latest\"}}\n" }, "creationTimestamp": "2020-07-05T12:52:11Z", "generation": 2, "name": "forward-to-jenkins", "namespace": "jenkins", "resourceVersion": "270615", "selfLink": "/apis/forward.webhookrelay.com/v1/namespaces/jenkins/webhookrelayforwards/forward-to-jenkins", "uid": "9d75809c-1795-45e2-a437-bb89b22bdac4" }, "spec": { "buckets": [ { "inputs": [ { "description": "Endpoint for GitHub", "name": "public-endpoint", "responseBody": "OK", "responseStatusCode": 200 } ], "name": "jenkins-whr-operator", "outputs": [ { "destination": "http://jenkins-operator-http-jenkins:8080/github-webhook/", "name": "jenkins" } ] } ], "image": "webhookrelay/webhookrelayd-ubi8:latest" }, "status": { "agentStatus": "Running", "publicEndpoints": [ "https://k0yv9ip5sxxp55ncsu936k.hooks.webhookrelay.com" ], "ready": true, "routingStatus": "Configured" } } ], "kind": "List", "metadata": { "resourceVersion": "", "selfLink": "" } }
Здесь, если мы хотим схватить только ценность от Публиковые точки
мы снова указываем ресурс и дополнительные jsonpath
запрос:
$ kubectl get webhookrelayforwards.forward.webhookrelay.com forward-to-jenkins -o 'jsonpath={.status.publicEndpoints[0]}' https://k0yv9ip5sxxp55ncsu936k.hooks.webhookrelay.com
Продолжайте и попробуйте на своих собственных кластере кубернанов!:)
Вы можете найти больше примеров в официальных документах здесь: https://kubernetes.io/docs/reference/kubectl/jsonpath/ Отказ
Оригинал: «https://dev.to/krusenas/simple-trick-to-get-specific-elements-from-kubernetes-kubectl-output-3502»