Как настроить Ambassador для отображения нескольких портов в контейнере
Я использую Ambassador в качестве входного контроллера для моей настройки kubernetes. Мне нужно подключиться к нескольким портам в моих контейнерах, например, у меня есть контейнер RethinkDB, и мне нужно подключиться к порту 8085 для его веб-интерфейса, порту 28015 для RDB-API и порту 29015 для добавления узлов в Rethinkdb и кластеризации.
Я пробовал разные конфигурации, но они не работали. Конфигурации, которые я попробовал: 1- Эта конфигурация работает для последнего сопоставления, что означает, что если я заменю сопоставление 8085 на 29015 и поставлю его в конце, я получу доступ к веб-интерфейсу, но не к другим частям и так далее.
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: rethinkdb_mapping
prefix: /rethinkdb:28015/
service: rethinkdb:28015
labels:
ambassador:
- request_label:
- rethinkdb:28015
---
apiVersion: ambassador/v1
kind: Mapping
name: rethinkdb_mapping
- prefix: /rethinkdb:8085/
service: rethinkdb:8085
labels:
ambassador:
- request_label:
- rethinkdb:8085
---
apiVersion: ambassador/v1
kind: Mapping
name: rethinkdb_mapping
prefix: /rethinkdb:29015/
service: rethinkdb:29015
labels:
ambassador:
- request_label:
- rethinkdb:29015
2- Этот не работал вообще
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: rethinkdb_mapping
- prefix: /rethinkdb:8085/
service: rethinkdb:8085
- prefix: /rethinkdb:29015/
service: rethinkdb:29015
- prefix: /rethinkdb:28015/
service: rethinkdb:28015
Как мне настроить Ambassador, чтобы иметь доступ ко всем портам моего контейнера?
1 ответ
Попробуйте поставить разные имена сопоставлений, как в примере ниже:
apiVersion: v1
kind: Service
metadata:
name: rethinkdb
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: rethinkdb_mapping
prefix: /rethinkdb:28015/
service: rethinkdb:28015
labels:
ambassador:
- request_label:
- rethinkdb:28015
---
apiVersion: ambassador/v1
kind: Mapping
name: rethinkdb_mapping1
prefix: /rethinkdb:8085/
service: rethinkdb:8085
labels:
ambassador:
- request_label:
- rethinkdb:8085
---
apiVersion: ambassador/v1
kind: Mapping
name: rethinkdb_mapping2
prefix: /rethinkdb:29015/
service: rethinkdb:29015
labels:
ambassador:
- request_label:
- rethinkdb:29015
spec:
type: ClusterIP
clusterIP: None
Не забудьте указать правильное название сервиса в метке сервиса в определении отображений.
Обратите внимание на отступы и правильный синтаксис.
Я надеюсь, что это помогает.