Как узнать префикс службы 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, как я уже указывал в моем предыдущем ответе.

Другие вопросы по тегам