custom-columns
の簡単な使い方について。
お題
例えばcluster-admin権限でログインしてる状態でoc get scc
すると、、、
OCP v4の場合
$ oc get scc NAME AGE anyuid 54d hostaccess 54d hostmount-anyuid 54d hostnetwork 54d node-exporter 54d nonroot 54d privileged 54d restricted 54d
OCP v3の場合
$ oc get scc NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP PRIORITY READONLYROOTFS VOLUMES anyuid false [] MustRunAs RunAsAny RunAsAny RunAsAny 10 false [configMap downwardAPI emptyDir persistentVolumeClaim projected secret] hostaccess false [] MustRunAs MustRunAsRange MustRunAs RunAsAny <none> false [configMap downwardAPI emptyDir hostPath persistentVolumeClaim projected secret]hostmount-anyuid false [] MustRunAs RunAsAny RunAsAny RunAsAny <none> false [configMap downwardAPI emptyDir hostPath nfs persistentVolumeClaim projected secret] hostnetwork false [] MustRunAs MustRunAsRange MustRunAs MustRunAs <none> false [configMap downwardAPI emptyDir persistentVolumeClaim projected secret] kube-state-metrics false [] RunAsAny RunAsAny RunAsAny RunAsAny <none> false [*] node-exporter false [] RunAsAny RunAsAny RunAsAny RunAsAny <none> false [*] nonroot false [] MustRunAs MustRunAsNonRoot RunAsAny RunAsAny <none> false [configMap downwardAPI emptyDir persistentVolumeClaim projected secret] privileged true [*] RunAsAny RunAsAny RunAsAny RunAsAny <none> false [*] restricted false [] MustRunAs MustRunAsRange MustRunAs RunAsAny <none> false [configMap downwardAPI emptyDir persistentVolumeClaim projected secret]
この情報量の差は一体…
ということで、OCP v4のoc get scc
でも、一覧の表示でもう少し欲しい情報を出すにはどうすればいいかについて。
jsonpath(参考)
jsonpath
を使った方法はこちら
ただ、jsonpathを使ったやり方は「対象のピックアップ」だけでなく、「出力時の書式」も指定する必要があるのに加え、ネームスペース上の全リソースを出力みたいなことをやろうとすると、range
とか出てきて正直言って結構複雑。
ということで、もうちょっと簡単に、項目を選択するだけのcustom-columns
について。
custom-columns
jsonpath同様にパスを指定するところは同じだけど、対象のパスを指定するだけ。出力の書式はoc
に任せられる。
ヘルプの実行例
# List resource information in custom columns. oc get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image
というわけで、まずオブジェクト名のみ出力。
$ oc get scc -o custom-columns=NAME:.metadata.name NAME anyuid hostaccess hostmount-anyuid hostnetwork node-exporter nonroot privileged restricted
これにrunAsUser
を追加してみると、、、
$ oc get scc -o custom-columns=NAME:.metadata.name,RUNASUSER:.runAsUser.type NAME RUNASUSER anyuid RunAsAny hostaccess MustRunAsRange hostmount-anyuid RunAsAny hostnetwork MustRunAsRange node-exporter RunAsAny nonroot MustRunAsNonRoot privileged RunAsAny restricted MustRunAsRange
さらに、priority
を追加。
$ oc get scc -o custom-columns=NAME:.metadata.name,RUNASUSER:.runAsUser.type,PRIORITY:.priority NAME RUNASUSER PRIORITY anyuid RunAsAny 10 hostaccess MustRunAsRange <nil> hostmount-anyuid RunAsAny <nil> hostnetwork MustRunAsRange <nil> node-exporter RunAsAny <nil> nonroot MustRunAsNonRoot <nil> privileged RunAsAny <nil> restricted MustRunAsRange <nil>
こんな感じで、必要なカラムのみ表示できるようになる。
凡例
動かしてみればすぐわかるけど、以下の通り
-o custom-columns=<HEADER-NAME>:<JSON-PATH>
複数の場合は,
区切りで。
-o custom-columns=<HEADER-NAME>:<JSON-PATH>,<HEADER-NAME2>:<JSON-PATH2>