Как использовать шлюз Ambassador API в качестве прокси-сервера с поддержкой PostgreSQL?
Я использую 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
Моя цель - чтобы посол принял запросы HTTP/HTTPS и postgres. Спасибо за ваше время.
1 ответ
Postgres - это служба TCP (уровень 4), а не служба HTTP(s) (уровень 7). Не похоже, что Ambassador поддерживает только TCP-сервисы, хотя прокси-сервер Envoy поддерживает его. Так что вам придется делать с обычным сервисом TCP Kubernetes, что-то вроде этого:
kind: Service
apiVersion: v1
metadata:
name: postgres-svc
spec:
selector:
app: postgres
ports:
- protocol: TCP
port: 5432