Как узнать префикс службы Ambassador во время выполнения в моем микросервисе в Kubernetes - PullRequest
0 голосов
/ 09 июля 2019

Есть ли способ узнать префикс службы Ambassador во время выполнения в моем микросервисе в Кубернетесе?

Взяв этот пример конфигурации:

---
apiVersion: ambassador/v1
kind: Mapping
name: myservice_get_mapping
prefix: /myprefix/
service: myservice

Из моего док-контейнера я хотел бы получить '/ myprefix /'. Либо через некоторую переменную env для развертывания, либо программно, если это невозможно сделать с помощью переменной env.

Спасибо.

1 Ответ

0 голосов
/ 10 июля 2019

Предполагая, что ресурс Ambassador 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 с помощью аутентификации токена на предъявителя метод :

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, как я уже указывал в моем предыдущем ответе .

...