Как использовать шлюз Ambassador API в качестве прокси-сервера с поддержкой PostgreSQL? - PullRequest
0 голосов
/ 06 ноября 2018

Я использую Ambassador для управления моими услугами в Kubernetes. Мои сервисы Kubernetes состоят из нескольких веб-серверов и нескольких postgres. Я следовал инструкциям здесь , чтобы установить маршруты к моим веб-серверам. Вот пример:

  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind:  Mapping
      name:  somewebservice
      prefix: /somewebservice
      service: somewebservice:80

Это прекрасно работает для моего веб-сервера. Я могу сделать curl localhost/somewebservice и получить ожидаемый ответ.

Я установил такую ​​же аннотацию в моем контейнере postgres, но я не могу сделать psql.

  annotations:
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind:  Mapping
      name:  atlas
      prefix: /somepostgres
      service: somepostgres:5432

Я вижу следующее:

$ psql -h 'localhost/somepostgres' -p 5432
psql: could not translate host name "localhost/somepostgres" to address: nodename nor servname provided, or not known

Моя цель - чтобы Ambassador принимал запросы HTTP / HTTPS и postgres. Спасибо за ваше время.

1 Ответ

0 голосов
/ 06 ноября 2018

Postgres - это служба TCP (уровень 4), а не служба HTTP (s) (уровень 7). Не похоже, что Ambassador поддерживает только службы TCP , хотя прокси-сервер Envoy поддерживает его . Так что вам придется делать с обычным сервисом Kubernetes TCP, что-то вроде этого:

kind: Service
apiVersion: v1
metadata:
  name: postgres-svc
spec:
  selector:
    app: postgres
  ports:
  - protocol: TCP
    port: 5432
...