Как извлечь объект службы kubernetes из JSON, возвращенного из kubectl - PullRequest
0 голосов
/ 14 декабря 2018

Учитывая приведенную ниже команду kubectl и ее ответ, я хочу выдернуть объект Service.Команда получит текущее состояние всех объектов k8s, созданных моим дескриптором развертывания, который называется quotem.yaml.

% kubectl get -f quotem_v2.yaml -o json

    {
        "apiVersion": "v1",
        "items": [
            {
                "apiVersion": "v1",
                "kind": "Service",
                "metadata": {
                    "annotations": {
                        "getambassador.io/config": "---\napiVersion: ambassador/v0\nkind:  Mapping\nname:  qotm_mapping_v2\nprefix: /qotm/\nservice: qotm-v2\nweight: 300\n",
                        "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{\"getambassador.io/config\":\"---\\napiVersion: ambassador/v0\\nkind:  Mapping\\nname:  qotm_mapping_v2\\nprefix: /qotm/\\nservice: qotm-v2\\nweight: 300\\n\"},\"name\":\"qotm-v2\",\"namespace\":\"default\"},\"spec\":{\"ports\":[{\"name\":\"http-qotm\",\"port\":80,\"targetPort\":\"http-api\"}],\"selector\":{\"app\":\"qotm-v2\"}}}\n"
                    },
                    "creationTimestamp": "2018-12-13T17:53:51Z",
                    "name": "qotm-v2",
                    "namespace": "default",
                    "resourceVersion": "202117",
                    "selfLink": "/api/v1/namespaces/default/services/qotm-v2",
                    "uid": "0cf4a4a5-ff00-11e8-9839-080027ced2f4"
                },
       ......
    }

1 Ответ

0 голосов
/ 14 декабря 2018

kubectl get -f quotem_v2.yaml -o json | jq '.items[] | select(.kind=="Service")'

  • Приведенная выше команда usese kubectl get с флагом -o для вывода json
  • Затем она использует анализатор json командной строки jq для получения массива элементов, ииз массива items выберите элементы, чей атрибут 'kind' соответствует 'Service'
...