假设这种情况:
在Openshift中部署了两个应用程序(可能在相同的命名空间中,也可能没有),它们希望相互发送HTTP请求。
整体问题:
似乎在Openshift内部运行的应用程序无法使用它们的路由(由Openshift创建)来相互调用。我提出的唯一解决方案是将应用程序部署在同一名称空间中,并使它们调用与应用程序关联的服务的clusterIP地址。
我的问题:
我开发了一个物联网平台。在平台上,有一个资源注册表(RR),用于保存有关可用主机的信息。机器或人类都可以查询RR并找到如何与可用主机通信。通过上述问题,如果RR存储服务的ClusterIP地址,则只有在Openshift中的命名空间内运行的主机才能相互发送请求。另一方面,如果RR存储路由(由Openshift创建),则在Openshift内运行的所有主机都不能相互发送请求。
问题:
Openshift中的两个应用程序如何相互发送请求?有没有统一的方法,Openshift外的应用程序向Openshift内的另一个应用程序发送请求,就像Openshift中的两个应用程序向对方发送请求一样?
答案 0 :(得分:6)
对于每项服务,在内部DNS中设置主机名。因此,如果您有一个名为mybackend
的服务,那么同一项目中的任何内容都可以使用主机名mybackend
访问它。
如果该服务是另一个项目,则附加另一个项目,以.
分隔,例如mybackend.myotherproject
。
默认情况下,一个项目中的某些内容无法与其他项目中的服务建立直接连接,因此,管理员需要设置一个pod网络,以允许不同项目中的应用程序相互连接。有关后者的信息,请参阅oc adm pod-network
命令。
换句话说,您永远不必自己处理IP地址。您应该使用从服务名称创建的主机名,因为即使您销毁并重新创建应用程序以及因重新创建服务而导致的IP更改,这些主机名也会起作用。
有关DNS和网络的详细信息,请参阅: