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

far*_*had 3 routing openshift

假设这种情况:

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

整体问题:

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

在我的情况下的问题:

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

题:

Openshift中的两个应用程序如何相互发送请求?Openshift外部的应用程序是否有任何统一的方式将请求发送到Openshift内的另一个应用程序,就像Openshift中的两个应用程序向对方发送请求一样?

Gra*_*ton 8

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

如果服务是另一个项目,则追加另一个项目,用.例如mybackend.myotherproject.

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

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

有关DNS和网络的更多信息,请参阅: