Как узнать префикс службы Ambassador во время выполнения в моем микросервисе в Kubernetes
Есть ли способ узнать префикс службы Ambassador во время выполнения в моем микросервисе в Кубернетесе?
Взяв этот пример конфигурации:
---
apiVersion: ambassador/v1
kind: Mapping
name: myservice_get_mapping
prefix: /myprefix/
service: myservice
Из моего док-контейнера я хотел бы получить '/myprefix/'. Либо через некоторую переменную env для развертывания, либо программно, если это невозможно сделать с помощью переменной env.
Благодарю.
1 ответ
Предполагая, что посол Mapping
ресурс связывает ресурсы REST со службами Kubernetes, вы можете получить метаданные аннотации через JSONPath, а затем проанализировать prefix:
поле, если я правильно понимаю ваш вопрос.
Пример для сервиса k8s из документации Ambassador:
kind: Service
metadata:
name: httpbin
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: tour-ui_mapping
prefix: /test/
service: http://tour
spec:
ports:
- name: httpbin
port: 80
Командная строка для извлечения prefix:
значение поля:
$ kubectl get svc httpbin -o jsonpath='{.metadata.annotations}'| grep -w "prefix:"| awk '{print $2}'
/контрольная работа/
Обновить:
В качестве альтернативы, вы также можете рассмотреть возможность получения того же результата через прямой вызов REST API с помощью метода аутентификации токена Bearer:
curl -k -XGET -H "Authorization : Bearer $MY_TOKEN" 'https://<API-server_IP>/api/v1/namespaces/default/services/httpbin' -H "Accept: application/yaml"| grep -w "prefix:"| awk '{print $2}
$MY_TOKEN
переменная должна быть снабжена соответствующим токеном, который имеет право выполнять вышеуказанный запрос к REST API, как я уже указывал в моем предыдущем ответе.