如何在openshift origin中远程访问数据库服务

Lev*_*Lev 3 postgresql openshift-origin

我有一个正在运行的 Openshift Origin 3.* 集群。它工作得很好,我在那里运行了一些应用程序,由它们自己的应用程序服务器、数据库服务器和 ldap 服务器 Openshift 服务/部署/pod 组成。

这些 Web 应用程序通过 HA2 路由器公开。所有这些都运行良好,我们可以使用通过 HA2 路由器设置的 Openshift 路由来访问 Web 应用程序。但是,我们希望使用“psql”(命令行 Postgresql 客户端)或 PgAdmin(连接到 Postgresql 的 GUI)等工具来访问在 Openshift 中运行的 Postgresql 数据库服务。

我对如何实现这一目标感到困惑。Openshift 中的服务或 pod 可以毫无问题地连接到 Postgresql pod,因为 Openshift 会在这些 pod 之间执行自己的 DNS 和路由。然而,我熟悉的从外部进行通信的唯一方法是通过 HA2 路由器等路由器。这不起作用,因为 HA2 路由器通过 HTTP 公开 Postgresql 中的服务...我们需要通过 TCP 连接到端口 5432 上的 Postgresql pod。

谢谢。

Lev*_*Lev 5

找到了。Openshift v3.* 具有与上面发布的 v2.* 的“rhc”命令 SathAk 类似的命令(谢谢!)。

使用“oc”命令登录 Openshift 项目后,您可以运行:

oc get pods | grep Running
Run Code Online (Sandbox Code Playgroud)

这将显示您的跑步窗格列表。找到 Postgresql(或您有兴趣通过其公开端口直接连接的任何其他 Pod),然后运行以下命令:

oc port-forward [name of postgresql pod] 5432:5432
Run Code Online (Sandbox Code Playgroud)

这会将所有流量从 pod 的 5432 端口转发到本地 5432 端口,您可以使用 GUI PgAdmin、Valentina 等工具或使用命令行 psql 连接到 pod 中的 Postgresql 实例,如下所示:

 psql -h localhost -U user -d database -p 5432 -W
Run Code Online (Sandbox Code Playgroud)