Как получить JsonPath для nodeSelector - PullRequest
0 голосов
/ 12 сентября 2018

Есть ли способ получить JsonPath для ключевого слова nodeSelector из kubectl командной строки?

Если я введу команду kubectl explain deployment --recursive, она выведет список всех ключевых слов:

apiVersion  <string>
kind    <string>
metadata    <Object>
   annotations  <map[string]string>
   clusterName  <string>
   creationTimestamp    <string>
   deletionGracePeriodSeconds   <integer>
   deletionTimestamp    <string>
   finalizers   <[]string>
   generateName <string>
   generation   <integer>
   initializers <Object>
      pending   <[]Object>
         name   <string>
      result    <Object>
         apiVersion <string>
         code   <integer>
         details    <Object>
            causes  <[]Object>
               field    <string>
               message  <string>
               reason   <string>
            group   <string>
            kind    <string>
...

Этот список довольно длинный, и с таким ключевым словом, как nodeSelector, трудно понять, что JsonPath равен spec.template.spec.nodeSelector.

1 Ответ

0 голосов
/ 12 сентября 2018

Один из способов сделать это - преобразовать вывод в правильный формат YAML следующим образом: (Я сделал несколько замен и удалений, чтобы получить этот вывод. К сожалению, для kubectl нет собственных опций для достижения этого.)

   apiVersion: 'string'
   kind: 'string'
   metadata:
      annotations: 'map[string]string'
      clusterName: 'string'
      creationTimestamp: 'string'
      deletionGracePeriodSeconds: 'integer'
      deletionTimestamp: 'string'
      finalizers: '[]string'
      generateName: 'string'
      generation: 'integer'
      initializers:
         pending:
            name: 'string'
         result:
            apiVersion: 'string'
            code: 'integer'
            details:
               causes:
                  field: 'string'
                  message: 'string'
                  reason: 'string'
...

Теперь вы можете применить решение из этого вопроса stackoverflow, чтобы получить сглаженный вывод, подобный этому:

{
  "apiVersion": "string",
  "kind": "string",
  "metadata.annotations": "map[string]string",
  "metadata.clusterName": "string",
  "metadata.creationTimestamp": "string",
  "metadata.deletionGracePeriodSeconds": "integer",
  "metadata.deletionTimestamp": "string",
  "metadata.finalizers": "[]string",
  "metadata.generateName": "string",
  "metadata.generation": "integer",
  "metadata.initializers.pending.name": "string",
  "metadata.initializers.result.apiVersion": "string",
  "metadata.initializers.result.code": "integer",
  "metadata.initializers.result.details.causes.field": "string",
  "metadata.initializers.result.details.causes.message": "string",
  "metadata.initializers.result.details.causes.reason": "string",
...
}

Затем вы можете отфильтровать или найти результат, чтобы получить нужные значения.

...