如何在Openshift内运行的两个应用程序相互发送请求?

时间:2017-03-15 20:46:50

标签: routing openshift

假设这种情况:

在Openshift中部署了两个应用程序(可能在相同的命名空间中,也可能没有),它们希望相互发送HTTP请求。

整体问题:

似乎在Openshift内部运行的应用程序无法使用它们的路由(由Openshift创建)来相互调用。我提出的唯一解决方案是将应用程序部署在同一名称空间中,并使它们调用与应用程序关联的服务的clusterIP地址。

我的问题:

我开发了一个物联网平台。在平台上,有一个资源注册表(RR),用于保存有关可用主机的信息。机器或人类都可以查询RR并找到如何与可用主机通信。通过上述问题,如果RR存储服务的ClusterIP地址,则只有在Openshift中的命名空间内运行的主机才能相互发送请求。另一方面,如果RR存储路由(由Openshift创建),则在Openshift内运行的所有主机都不能相互发送请求。

问题:

Openshift中的两个应用程序如何相互发送请求?有没有统一的方法,Openshift外的应用程序向Openshift内的另一个应用程序发送请求,就像Openshift中的两个应用程序向对方发送请求一样?

1 个答案:

答案 0 :(得分:6)

对于每项服务,在内部DNS中设置主机名。因此,如果您有一个名为mybackend的服务,那么同一项目中的任何内容都可以使用主机名mybackend访问它。

如果该服务是另一个项目,则附加另一个项目,以.分隔,例如mybackend.myotherproject

默认情况下,一个项目中的某些内容无法与其他项目中的服务建立直接连接,因此,管理员需要设置一个pod网络,以允许不同项目中的应用程序相互连接。有关后者的信息,请参阅oc adm pod-network命令。

换句话说,您永远不必自己处理IP地址。您应该使用从服务名称创建的主机名,因为即使您销毁并重新创建应用程序以及因重新创建服务而导致的IP更改,这些主机名也会起作用。

有关DNS和网络的详细信息,请参阅: