Я пытаюсь получить последнюю примененную конфигурацию kubernetes из службы yaml (под аннотациями метаданных), используя kubectl -o jsonpath, но имя поля "kubectl.kubernetes.io/last-applied-configuration" , Я полагаю, что синтаксический анализатор запутывается из-за точек в поле фактического имени, поскольку он использует точки для обозначения дочерних объектов.
например. (Работает под Windows)
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{
.metadata.annotations}{\"\n\"}{end}"
показывает карту результирующих значений, как и ожидалось
map[kubectl.kubernetes.io/last-applied-configuration:{"kind":"Service","apiVersion":"v1","metadata":{"name":"myapp","namespace":"mynamespace",
"creationTimestamp":null,"labels":{"app":"myapp","version":"1.0"}},"spec":{"ports":[{"name":"http","protocol":"TCP","port":80,"ta
rgetPort":8080}],"selector":{"app":"myapp","version":"1.0"},"type":"NodePort"},"status":{"loadBalancer":{}}}]
В этом случае kubectl.kubernetes.io/last-applied-configuration является единственной вещью в аннотациях, но это не всегда так.
Проблема возникает, когда я пытаюсь перейти к последней примененной конфигурации.
, например
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{
.metadata.annotations.kubectl.kubernetes.io/last-applied-configuration}{\"\n\"}{end}"
не возвращает информации.
я тоже пробовал
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{
.metadata.annotations['kubectl.kubernetes.io/last-applied-configuration']}{\"\n\"}{end}"
и
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{['metadata']['annotations']['kubectl.kubernetes.io/last-applied-configuration']}{\"\n\"}{end}"
безрезультатно.
Я ожидаю, что результаты будут просто значением kubectl.kubernetes.io/last-applied-configuration