Kubectl get JSONPath Support: Difference between revisions
Jump to navigation
Jump to search
Line 14: | Line 14: | ||
* [[JSONPath#..field_.28Field_Recursive_Descent.29|JSONPath ..''field'' (field recursive descent)]] | * [[JSONPath#..field_.28Field_Recursive_Descent.29|JSONPath ..''field'' (field recursive descent)]] | ||
===Array Element Selection=== | ===Array Element Selection=== | ||
* [[JSONPath#.5B0-based-index.5D|[''0-based-index'']]] | * [[JSONPath#.5B0-based-index.5D|JSONPath [''0-based-index'']]] | ||
* [[JSONPath#.5Bindex1.2C_index2.2C_....5D|[''index1'', ''index2'', ...]]] | * [[JSONPath#.5Bindex1.2C_index2.2C_....5D|JSONPath [''index1'', ''index2'', ...]]] | ||
* [[JSONPath#.5Bstart:end.5D.2C_.5Bstart:.5D|[''start'':''end''], [''start'':]]] | * [[JSONPath#.5Bstart:end.5D.2C_.5Bstart:.5D|JSONPath [''start'':''end''], [''start'':]]] | ||
* [[JSONPath#.5B:n.5D|[:''n'']]] | * [[JSONPath#.5B:n.5D|JSONPath [:''n'']]] | ||
* [[JSONPath#.5B-n:.5D|[-''n'':]]] | * [[JSONPath#.5B-n:.5D|JSONPath [-''n'':]]] | ||
===Wildcard=== | ===Wildcard=== | ||
* [[JSONPath#.2A_.28Wildcard.29|* (wildcard)]] | * [[JSONPath#.2A_.28Wildcard.29|JSONPath * (wildcard)]] | ||
=Concepts= | =Concepts= |
Revision as of 02:17, 16 March 2021
External
Internal
Overview
Syntax
$
Element Selection
Object Fields Selection
Array Element Selection
- JSONPath [0-based-index]
- JSONPath [index1, index2, ...]
- JSONPath [start:end], [start:]
- JSONPath [:n]
- JSONPath [-n:]
Wildcard
Concepts
Syntax Elements
Removing Leading and Trailing Single Quotes
... | sed -e 's/^'\''//' > ...
Get an Individual Attribute Only
TODO: https://gist.github.com/so0k/42313dbb3b547a0f51a547bb968696ba
kubectl ... -o jsonpath="{.status.phase}"
kubectl ... -o jsonpath="{.items[?(@.spec.unschedulable)].metadata.name}"
Alternative, to explore and document:
kubectl get pods --no-headers -o custom-columns=\":metadata.name\" ...
Filter Elements of an Array based on a Key Value
We assume that the elements of the array are maps, which contain the specified key:
kubectl ... -o jsonpath="{.users[?(@.name=="blue")].user.password}" kubectl get pod ... -o jsonpath='{.items[0].spec.volumes[?(@.name=="vault")].hostPath.path}' 2>/dev/null
Select and Combine Two or More Elements
kubectl get pod \
-o jsonpath='{.items[0].spec.volumes[?(@.name=="A")].hostPath.path}'+'{.items[0].spec.volumes[?(@.name=="B")].hostPath.path}'
returns "/some/path/a+/some/path/b"
Same Element from Multiple Resources
kubectl get pod -o jsonpath='{.items[*].metadata.name}'
Array Length
TODO
kubectl get pods -o=jsonpath='{.items[?(@.metadata.labels.name=="web")].metadata.name}'
Iterate over the Elements of an Array
kubectl get nodes -o jsonpath='{.items[*]}'
Iterate over the Elements of an Array and Select a Specific Key
kubectl get nodes -o jsonpath='{.items[*].status}'
Filter by an element:
kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")]}'
Print the element "address"
kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}'