2016-07-30 11 views
1

ich einen Wert aus dieser jsonExtrakt korrelierten Wert in verschachtelte Array

{ 
    "kind": "List", 
    "apiVersion": "v1", 
    "metadata": {}, 
    "items": [ 
    { 
     "kind": "Pod", 
     "apiVersion": "v1", 
     "metadata": { 
     "name": "provisioner-secrets-1750468340-ei8sl", 
     "generateName": "provisioner-secrets-1750468340-", 
     "namespace": "default", 
     "selfLink": "/api/v1/namespaces/default/pods/provisioner-secrets-1750468340-ei8sl", 
     "uid": "8d2ac8e4-5642-11e6-b139-72f9d49a4327", 
     "resourceVersion": "1473", 
     "creationTimestamp": "2016-07-30T10:44:11Z", 
     "labels": { 
      "pod-template-hash": "1750468340", 
      "run": "git-sync" 
     }, 
     "annotations": { 
      "kubernetes.io/created-by": "{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"ReplicaSet\",\"namespace\":\"default\",\"name\":\"provisioner-secrets-1750468340\",\"uid\":\"8d2904ba-5642-11e6-b139-72f9d49a4327\",\"apiVersion\":\"extensions\",\"resourceVersion\":\"1438\"}}\n" 
     } 
     }, 
     "spec": { 
     "volumes": [ 
      { 
      "name": "markdown", 
      "emptyDir": {} 
      }, 
      { 
      "name": "klucze", 
      "secret": { 
       "secretName": "klucze" 
      } 
      }, 
      { 
      "name": "default-token-xjc9q", 
      "secret": { 
       "secretName": "default-token-xjc9q" 
      } 
      } 
     ], 
     "containers": [ 
      { 
      "name": "git-sync", 
      "image": "lukaszbielinski/git-sync:0.5", 
      "env": [ 
       { 
       "name": "GIT_SYNC_REPO", 
       "value": "https://github.com/lukasz-bielinski/test-secrets" 
       }, 
       { 
       "name": "GIT_SYNC_WAIT", 
       "value": "10" 
       }, 
       { 
       "name": "GIT_SYNC_DEST", 
       "value": "/git" 
       } 
      ], 
      "resources": {}, 
      "volumeMounts": [ 
       { 
       "name": "markdown", 
       "mountPath": "/git" 
       }, 
       { 
       "name": "klucze", 
       "mountPath": "/root/.ssh/klucze" 
       }, 
       { 
       "name": "default-token-xjc9q", 
       "readOnly": true, 
       "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount" 
       } 
      ], 
      "terminationMessagePath": "/dev/termination-log", 
      "imagePullPolicy": "IfNotPresent" 
      }, 
      { 
      "name": "secprov", 
      "image": "lukaszbielinski/kubectl-image:0.19-secrets", 
      "resources": {}, 
      "volumeMounts": [ 
       { 
       "name": "markdown", 
       "mountPath": "/srcsecrets" 
       }, 
       { 
       "name": "default-token-xjc9q", 
       "readOnly": true, 
       "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount" 
       } 
      ], 
      "terminationMessagePath": "/dev/termination-log", 
      "imagePullPolicy": "Always" 
      } 
     ], 
     "restartPolicy": "Always", 
     "terminationGracePeriodSeconds": 30, 
     "dnsPolicy": "ClusterFirst", 
     "serviceAccountName": "default", 
     "serviceAccount": "default", 
     "nodeName": "minikubevm", 
     "securityContext": {} 
     }, 
     "status": { 
     "phase": "Running", 
     "conditions": [ 
      { 
      "type": "Initialized", 
      "status": "True", 
      "lastProbeTime": null, 
      "lastTransitionTime": "2016-07-30T10:44:11Z" 
      }, 
      { 
      "type": "Ready", 
      "status": "True", 
      "lastProbeTime": null, 
      "lastTransitionTime": "2016-07-30T10:44:31Z" 
      }, 
      { 
      "type": "PodScheduled", 
      "status": "True", 
      "lastProbeTime": null, 
      "lastTransitionTime": "2016-07-30T10:44:11Z" 
      } 
     ], 
     "hostIP": "192.168.122.230", 
     "podIP": "172.17.0.10", 
     "startTime": "2016-07-30T10:44:11Z", 
     "containerStatuses": [ 
      { 
      "name": "git-sync", 
      "state": { 
       "running": { 
       "startedAt": "2016-07-30T10:44:12Z" 
       } 
      }, 
      "lastState": {}, 
      "ready": true, 
      "restartCount": 0, 
      "image": "lukaszbielinski/git-sync:0.5", 
      "imageID": "docker://sha256:50f4c3009cd7072cb52d0edc5374ad973d7619ead7063482c4102fa230d16ce6", 
      "containerID": "docker://3d8f44f2c1cd8139fdf23660e5c7514d37ba5e39c739087f12defcfcd0a12f6d" 
      }, 
      { 
      "name": "secprov", 
      "state": { 
       "running": { 
       "startedAt": "2016-07-30T10:44:31Z" 
       } 
      }, 
      "lastState": {}, 
      "ready": true, 
      "restartCount": 0, 
      "image": "lukaszbielinski/kubectl-image:0.19-secrets", 
      "imageID": "docker://sha256:6ebf833942e81d24d0bbc2f3e816f7620db979182ccf81a9edaf97488b512726", 
      "containerID": "docker://c1837b472c0a8123c244c7e7c5b4886a85e8607e8172271447024aa647a0a564" 
      } 
     ] 
     } 
    } 
    ] 
} 

Dinge bekommen Ich möchte wissen:

"secretName": "klucze"  

Dinge, die ich entnehmende

"name": "provisioner-secrets-1750468340-ei8sl"  

versuchte ich

.items[] | .spec | .volumes[] | .secret | select(.secretName=="klucze")  

aber ich weiß nicht, wie von

.items[] | .metadata | .name  

korrelierten Wert erhalten Bitte legen nahe, wie kann ich dieses Problem beheben

Antwort

2

Sie wissen, wie die entsprechenden Namen erhalten, die Sie suchen, nur fügen Sie einen select dort mit der Bedingung hinzu, die Sie benötigen. Glücklicherweise bezieht sich Ihre Bedingung auf den Gegenstand, nach dem Sie suchen, und nicht auf ein anderes nicht verwandtes Objekt.

$ jq --arg secret 'klucze' \ 
'.items[] | select(.spec.volumes[].secret.secretName == $secret).metadata.name' input.json 
+0

es funktioniert einwandfrei, danke! – lukasz