Openshift:远程公开postgresql

时间:2018-07-03 07:09:39

标签: postgresql openshift openshift-origin

我已经在openshift原始v3中创建了一个postgresql实例。它运行正常,但是我不太清楚为什么无法远程访问它。

我公开了一条路线:

$oc get routes
postgresql   postgresql-ra-sec.192.168.99.100.nip.io             postgresql   postgresql                 None

$ oc get services
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
postgresql   ClusterIP   172.30.59.113   <none>        5432/TCP   57m

这是我的路线:

enter image description here

我正在尝试从ubuntu操作系统访问此实例。我正在尝试使用psql进行访问:

$ psql --host=postgresql-ra-sec.192.168.99.100.nip.io --dbname=tdevhub
psql: could not connect to server: Connection refused
Is the server running on host "postgresql-ra-sec.192.168.99.100.nip.io" (192.168.99.100) and accepting
TCP/IP connections on port 5432?

否则:

$ psql --host=postgresql-ra-sec.192.168.99.100.nip.io --port=80 --dbname=tdevhub
psql: received invalid response to SSL negotiation: H

我已经检查了dns分辨率,并且看来工作正常:

$ nslookup postgresql-ra-sec.192.168.99.100.nip.io                    
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   postgresql-ra-sec.192.168.99.100.nip.io
Address: 192.168.99.100

编辑

那呢?

enter image description here

为什么会有这种重定向?我可以尝试在port-forwarding之前更改它吗?

1 个答案:

答案 0 :(得分:2)

通过路由公开服务意味着您启用了外部HTTP通信。对于像Postgresql这样的服务,按照您的示例,这将无法正常工作。

另一种方法是将端口转发到本地计算机并以这种方式连接。因此,例如,先运行oc port-forward <postgresql-pod-name> 5432,然后运行psql --host=localhost --dbname=tdevhub,这将允许您创建TCP连接:

在主机上运行oc cluster up进行验证。

还有一个选项,在某些情况下至少可以分配外部IP以允许入口流量。 See the OpenShift docs。要实现这一点将更加复杂,但是与端口转发相比,这是一个永久性解​​决方案。您似乎正在运行minishift或{{1}},但是不确定是否可行。