我正在使用大使来管理我的Kubernetes服务。我的Kubernetes服务包括一些Web服务器和一些postgres。我按照说明here建立到我的Web服务器的路由。这是一个示例:
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请求。 感谢您的宝贵时间。
答案 0 :(得分:1)
Postgres是一个TCP服务(第4层),而不是HTTP服务(第7层)。 It doesn't look like Ambassador supports TCP only services,即使Envoy proxy supports it。因此,您必须使用常规的Kubernetes TCP服务,如下所示:
kind: Service
apiVersion: v1
metadata:
name: postgres-svc
spec:
selector:
app: postgres
ports:
- protocol: TCP
port: 5432