Openshift:远程公开 postgresql
Openshift: Expose postgresql remotely
我已经在我的 openshift origin v3 中创建了一个 postgresql 实例。 运行 正确,但我不太明白为什么我无法远程访问它。
我探索了os一条路线:
$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
这是我的路线:
我正在尝试从 ubuntu os 访问此实例。我正在尝试使用 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
编辑
这个呢?
为什么会有这个重定向?我可以尝试在 port-forwarding
之前更改它吗?
通过路由公开服务意味着您启用外部 HTTP 流量。对于像 Postgresql 这样的服务,这不会按照您的示例工作。
另一种方法是将端口转发到您的本地计算机并以这种方式连接。例如,运行 oc get pods
然后是 oc port-forward <postgresql-pod-name> 5432
,这将允许您创建 TCP 连接:
运行 psql --host=localhost --dbname=tdevhub
在主机上验证这一点。
还有一个选项,在某些情况下至少分配外部 IP 以允许入口流量。 See the OpenShift docs。与端口转发相比,这将更加复杂,但却是一个永久性的解决方案。看起来您是 运行ning oc cluster up
或 minishift
但是不确定这是否可行。
理论上,虽然端口转发的答案是正确的,也是我让它工作的唯一方法,但我会说在 Openshift 3.x 中你可以为此使用 tcp 路由 https://documentation.its.umich.edu/node/2126
但是它在 Openshift 中似乎不起作用(至少对我而言)4.x
我个人也不喜欢端口转发,因为这假设您必须与可以连接到集群的用户建立连接,并且具有命名空间的权限来执行它需要执行的操作。
我更愿意建议入口解决方案
我已经在我的 openshift origin v3 中创建了一个 postgresql 实例。 运行 正确,但我不太明白为什么我无法远程访问它。
我探索了os一条路线:
$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
这是我的路线:
我正在尝试从 ubuntu os 访问此实例。我正在尝试使用 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
编辑
这个呢?
为什么会有这个重定向?我可以尝试在 port-forwarding
之前更改它吗?
通过路由公开服务意味着您启用外部 HTTP 流量。对于像 Postgresql 这样的服务,这不会按照您的示例工作。
另一种方法是将端口转发到您的本地计算机并以这种方式连接。例如,运行 oc get pods
然后是 oc port-forward <postgresql-pod-name> 5432
,这将允许您创建 TCP 连接:
运行 psql --host=localhost --dbname=tdevhub
在主机上验证这一点。
还有一个选项,在某些情况下至少分配外部 IP 以允许入口流量。 See the OpenShift docs。与端口转发相比,这将更加复杂,但却是一个永久性的解决方案。看起来您是 运行ning oc cluster up
或 minishift
但是不确定这是否可行。
理论上,虽然端口转发的答案是正确的,也是我让它工作的唯一方法,但我会说在 Openshift 3.x 中你可以为此使用 tcp 路由 https://documentation.its.umich.edu/node/2126
但是它在 Openshift 中似乎不起作用(至少对我而言)4.x
我个人也不喜欢端口转发,因为这假设您必须与可以连接到集群的用户建立连接,并且具有命名空间的权限来执行它需要执行的操作。 我更愿意建议入口解决方案