Skip to content

Instantly share code, notes, and snippets.

@TuvianNavy
Created September 11, 2020 22:04
Show Gist options
  • Select an option

  • Save TuvianNavy/5315f3a0b668992cc125d1188231e59a to your computer and use it in GitHub Desktop.

Select an option

Save TuvianNavy/5315f3a0b668992cc125d1188231e59a to your computer and use it in GitHub Desktop.
reverse-inside-out transformation for YAML/JSON
ubuntu@livazplus:~$ curl https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/alternative.yaml | yq -c 'paths(scalars) as $p | [$p, getpath($p)] | flatten | reverse'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7113 100 7113 0 0 157k 0 --:--:-- --:--:-- --:--:-- 157k
["v1","apiVersion"]
["Namespace","kind"]
["kubernetes-dashboard","name","metadata"]
["v1","apiVersion"]
["ServiceAccount","kind"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
["Service","kind"]
["v1","apiVersion"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
[80,"port",0,"ports","spec"]
[9090,"targetPort",0,"ports","spec"]
["kubernetes-dashboard","k8s-app","selector","spec"]
["v1","apiVersion"]
["Secret","kind"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard-csrf","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
["Opaque","type"]
["","csrf","data"]
["v1","apiVersion"]
["Secret","kind"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard-key-holder","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
["Opaque","type"]
["ConfigMap","kind"]
["v1","apiVersion"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard-settings","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
["Role","kind"]
["rbac.authorization.k8s.io/v1","apiVersion"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
["",0,"apiGroups",0,"rules"]
["secrets",0,"resources",0,"rules"]
["kubernetes-dashboard-key-holder",0,"resourceNames",0,"rules"]
["kubernetes-dashboard-certs",1,"resourceNames",0,"rules"]
["kubernetes-dashboard-csrf",2,"resourceNames",0,"rules"]
["get",0,"verbs",0,"rules"]
["update",1,"verbs",0,"rules"]
["delete",2,"verbs",0,"rules"]
["",0,"apiGroups",1,"rules"]
["configmaps",0,"resources",1,"rules"]
["kubernetes-dashboard-settings",0,"resourceNames",1,"rules"]
["get",0,"verbs",1,"rules"]
["update",1,"verbs",1,"rules"]
["",0,"apiGroups",2,"rules"]
["services",0,"resources",2,"rules"]
["heapster",0,"resourceNames",2,"rules"]
["dashboard-metrics-scraper",1,"resourceNames",2,"rules"]
["proxy",0,"verbs",2,"rules"]
["",0,"apiGroups",3,"rules"]
["services/proxy",0,"resources",3,"rules"]
["heapster",0,"resourceNames",3,"rules"]
["http:heapster:",1,"resourceNames",3,"rules"]
["https:heapster:",2,"resourceNames",3,"rules"]
["dashboard-metrics-scraper",3,"resourceNames",3,"rules"]
["http:dashboard-metrics-scraper",4,"resourceNames",3,"rules"]
["get",0,"verbs",3,"rules"]
["ClusterRole","kind"]
["rbac.authorization.k8s.io/v1","apiVersion"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard","name","metadata"]
["metrics.k8s.io",0,"apiGroups",0,"rules"]
["pods",0,"resources",0,"rules"]
["nodes",1,"resources",0,"rules"]
["get",0,"verbs",0,"rules"]
["list",1,"verbs",0,"rules"]
["watch",2,"verbs",0,"rules"]
["rbac.authorization.k8s.io/v1","apiVersion"]
["RoleBinding","kind"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
["rbac.authorization.k8s.io","apiGroup","roleRef"]
["Role","kind","roleRef"]
["kubernetes-dashboard","name","roleRef"]
["ServiceAccount","kind",0,"subjects"]
["kubernetes-dashboard","name",0,"subjects"]
["kubernetes-dashboard","namespace",0,"subjects"]
["rbac.authorization.k8s.io/v1","apiVersion"]
["ClusterRoleBinding","kind"]
["kubernetes-dashboard","name","metadata"]
["rbac.authorization.k8s.io","apiGroup","roleRef"]
["ClusterRole","kind","roleRef"]
["kubernetes-dashboard","name","roleRef"]
["ServiceAccount","kind",0,"subjects"]
["kubernetes-dashboard","name",0,"subjects"]
["kubernetes-dashboard","namespace",0,"subjects"]
["Deployment","kind"]
["apps/v1","apiVersion"]
["kubernetes-dashboard","k8s-app","labels","metadata"]
["kubernetes-dashboard","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
[1,"replicas","spec"]
[10,"revisionHistoryLimit","spec"]
["kubernetes-dashboard","k8s-app","matchLabels","selector","spec"]
["kubernetes-dashboard","k8s-app","labels","metadata","template","spec"]
["kubernetes-dashboard","name",0,"containers","spec","template","spec"]
["kubernetesui/dashboard:v2.0.4","image",0,"containers","spec","template","spec"]
[9090,"containerPort",0,"ports",0,"containers","spec","template","spec"]
["TCP","protocol",0,"ports",0,"containers","spec","template","spec"]
["--namespace=kubernetes-dashboard",0,"args",0,"containers","spec","template","spec"]
["--enable-insecure-login",1,"args",0,"containers","spec","template","spec"]
["/tmp","mountPath",0,"volumeMounts",0,"containers","spec","template","spec"]
["tmp-volume","name",0,"volumeMounts",0,"containers","spec","template","spec"]
["/","path","httpGet","livenessProbe",0,"containers","spec","template","spec"]
[9090,"port","httpGet","livenessProbe",0,"containers","spec","template","spec"]
[30,"initialDelaySeconds","livenessProbe",0,"containers","spec","template","spec"]
[30,"timeoutSeconds","livenessProbe",0,"containers","spec","template","spec"]
[true,"readOnlyRootFilesystem","securityContext",0,"containers","spec","template","spec"]
[1001,"runAsUser","securityContext",0,"containers","spec","template","spec"]
[2001,"runAsGroup","securityContext",0,"containers","spec","template","spec"]
["tmp-volume","name",0,"volumes","spec","template","spec"]
["kubernetes-dashboard","serviceAccountName","spec","template","spec"]
["linux","kubernetes.io/os","nodeSelector","spec","template","spec"]
["node-role.kubernetes.io/master","key",0,"tolerations","spec","template","spec"]
["NoSchedule","effect",0,"tolerations","spec","template","spec"]
["Service","kind"]
["v1","apiVersion"]
["dashboard-metrics-scraper","k8s-app","labels","metadata"]
["dashboard-metrics-scraper","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
[8000,"port",0,"ports","spec"]
[8000,"targetPort",0,"ports","spec"]
["dashboard-metrics-scraper","k8s-app","selector","spec"]
["Deployment","kind"]
["apps/v1","apiVersion"]
["dashboard-metrics-scraper","k8s-app","labels","metadata"]
["dashboard-metrics-scraper","name","metadata"]
["kubernetes-dashboard","namespace","metadata"]
[1,"replicas","spec"]
[10,"revisionHistoryLimit","spec"]
["dashboard-metrics-scraper","k8s-app","matchLabels","selector","spec"]
["dashboard-metrics-scraper","k8s-app","labels","metadata","template","spec"]
["runtime/default","seccomp.security.alpha.kubernetes.io/pod","annotations","metadata","template","spec"]
["dashboard-metrics-scraper","name",0,"containers","spec","template","spec"]
["kubernetesui/metrics-scraper:v1.0.4","image",0,"containers","spec","template","spec"]
[8000,"containerPort",0,"ports",0,"containers","spec","template","spec"]
["TCP","protocol",0,"ports",0,"containers","spec","template","spec"]
["HTTP","scheme","httpGet","livenessProbe",0,"containers","spec","template","spec"]
["/","path","httpGet","livenessProbe",0,"containers","spec","template","spec"]
[8000,"port","httpGet","livenessProbe",0,"containers","spec","template","spec"]
[30,"initialDelaySeconds","livenessProbe",0,"containers","spec","template","spec"]
[30,"timeoutSeconds","livenessProbe",0,"containers","spec","template","spec"]
["/tmp","mountPath",0,"volumeMounts",0,"containers","spec","template","spec"]
["tmp-volume","name",0,"volumeMounts",0,"containers","spec","template","spec"]
[true,"readOnlyRootFilesystem","securityContext",0,"containers","spec","template","spec"]
[1001,"runAsUser","securityContext",0,"containers","spec","template","spec"]
[2001,"runAsGroup","securityContext",0,"containers","spec","template","spec"]
["kubernetes-dashboard","serviceAccountName","spec","template","spec"]
["linux","kubernetes.io/os","nodeSelector","spec","template","spec"]
["node-role.kubernetes.io/master","key",0,"tolerations","spec","template","spec"]
["NoSchedule","effect",0,"tolerations","spec","template","spec"]
["tmp-volume","name",0,"volumes","spec","template","spec"]
@TuvianNavy
Copy link
Author

@TuvianNavy
Copy link
Author

TuvianNavy commented Sep 11, 2020

'paths(scalars) as $p | [$p, getpath($p)] | flatten' could be more useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment