Adoro usar kubectl ... -o jsonpath
mas não consigo descobrir como imprimir uma anotação que contenha um caractere especial como -
ou /
ou .
.
Isso não funciona:
kubectl get pods tmp -o 'jsonpath={.metadata.annotations.kubernetes.io/created-by}{"\n"}'
nem este:
kubectl get pods tmp -o 'jsonpath={.metadata.annotations.kubernetes\.io\/created\-by}{"\n"}'
nem este:
kubectl get pods tmp -o 'jsonpath={.metadata.annotations}{["kubernetes.io/created-by"]}{"\n"}'
nem este:
kubectl get pods tmp-1986694738-dhpx0 -o jsonpath = "{\ $ ['metadata'] ['anotações'] ['kubernetes.io/created-by']}"
(o último deve funcionar de acordo com o que eu posso encontrar sobre jsonPath, mas não funciona, e de qualquer forma é difícil fazer o shell escapar corretamente.
Precisa de uma maneira de citar um
Um caso de uso para isso é extrair as anotações "criado por" ou "init-container". Eu queria fazer as duas coisas no mês passado e lutei contra o jsonpath.
Para sua informação, isso é possível com o go-template. Ainda devemos corrigir o jsonpath.
kubectl get pods tmp -o go-template=$'{{index .metadata.annotations "kubernetes.io/created-by"}}\n'
Problema semelhante: https://github.com/kubernetes/kubernetes/issues/23386
Comentários muito úteis
Para sua informação, isso é possível com o go-template. Ainda devemos corrigir o jsonpath.
Problema semelhante: https://github.com/kubernetes/kubernetes/issues/23386