Я не нашел способа получить содержимое реестра Istio в удобной форме, используя istioctl
, но это достижимо, используя несколько иной подход.
Петр Мужской c был прав (пожалуйста, подумайте и об отзыве его ответа), интерфейс отладки Pilot может предоставить список, который вы упомянули в вопросе. И запрос к Istio Pilot может быть отправлен с помощью любой коляски Поса Под. Оба порта действительны для запроса: 15014 и 8080 и дают одинаковый результат.
Для этого примера я использую собственную коляску посланника Pilot. Я также использую на своем компьютере jq для получения имен служб из ответа JSON.
Представьте, что у нас есть три ServiceEntry
в кластере:
$ kubectl get serviceentry
NAME HOSTS LOCATION RESOLUTION AGE
httpbin [httpbin.org] DNS 18d
httpbin-com-ext [httpbin.org] MESH_EXTERNAL DNS 22d
wikipedia-org-se [wikipedia.org *.wikipedia.org] MESH_EXTERNAL NONE 22d
Следующая последовательность из команд дает нам список служб, включая службы, определенные ServiceEntry
объектами:
# create a shortcut to Istio Pilot pod
$ PILOT=$(kubectl get -A pods --selector=istio=pilot -o jsonpath='{.items[*].metadata.name}')
# Create shortcut to Istio Pilot namespace
$ PILOT_NS=$(kubectl get -A pods --selector=istio=pilot -o jsonpath='{.items[*].metadata.namespace}')
# Get the list of services in Istio mesh and filter their names using jq
$ kubectl exec $PILOT -n $PILOT_NS -c discovery -- curl -s 'localhost:15014/debug/registryz' | jq '.[].hostname'
# or
$ kubectl exec $PILOT -n $PILOT_NS -c istio-proxy -- curl -s 'localhost:15014/debug/registryz' | jq '.[].hostname'
Вывод:
(обратите внимание на последние несколько записей.)
"ingress-nginx.ingress-nginx.svc.cluster.local"
"istio-citadel.istio-system.svc.cluster.local"
"istio-egressgateway.istio-system.svc.cluster.local"
"istio-galley.istio-system.svc.cluster.local"
"istio-ingressgateway.istio-system.svc.cluster.local"
"istio-pilot.istio-system.svc.cluster.local"
"istio-policy.istio-system.svc.cluster.local"
"istio-sidecar-injector.istio-system.svc.cluster.local"
"istio-telemetry.istio-system.svc.cluster.local"
"kube-dns.kube-system.svc.cluster.local"
"kubernetes.default.svc.cluster.local"
"kubernetes.test.svc.cluster.local"
"metrics-server.metrics.svc.cluster.local"
"productpage.default.svc.cluster.local"
"prometheus.istio-system.svc.cluster.local"
"ratings.default.svc.cluster.local"
"reviews.default.svc.cluster.local"
"httpbin.org"
"httpbin.org"
"wikipedia.org"
"*.wikipedia.org"
Вы можете найти больше информации о обработчиках отладки на странице Istio github: