2017-03-15 6 views
0

このシナリオを仮定しますOpenshift内で実行されている2つのアプリケーションは、どのように相互に要求を送信できますか?

はお互いにHTTPリクエストを送信する(多分同じ名前空間か月に)Openshiftに配備2つのアプリケーションがあります。

全体的な問題:

Openshift内で実行中のアプリケーションがお互いを呼び出すために(Openshiftによって作成された)自分のルートを使用することはできませんようです。私が思いついた唯一の解決策は、アプリケーションを同じ名前空間に展開し、アプリケーションに関連するサービスのclusterIPアドレスを呼び出させることです。私の場合は

問題:

私はのIoTプラットフォームを開発しました。 platfromには、使用可能なホストに関する情報を保持するリソースレジストリ(RR)があります。マシンまたは人間は、RRに照会して、使用可能なホストとの通信方法を見つけることができます。上記の問題により、RRがサービスのClusterIPアドレスを格納する場合、Openshift内の名前空間内で実行されているホストだけが要求を相互に送信できます。一方、RRが(Openshiftによって作成された)ルートを格納している場合、Openshift内で実行されているすべてのホストは、互いに要求を送信できません。

質問:

どうOpenshift内の2つのアプリケーションが相互にリクエストを送信することができますか? Openshift外のアプリケーションが、Openshift内の2つのアプリケーションがお互いに要求を送信するのと同じ方法で、Openshift内の別のアプリケーションに要求を送信する統一的な方法はありますか?

答えて

2

サービスごとに、内部DNSにホスト名が設定されています。したがって、mybackendというサービスがある場合、同じプロジェクト内のすべてのものがホスト名mybackendを使用してアクセスできます。

サービスが別のプロジェクトの場合は、mybackend.myotherprojectなどの別のプロジェクトを.で区切って追加します。

デフォルトでは、あるプロジェクトのものは他のプロジェクトのサービスへの直接接続を作成することができないため、管理者は異なるプロジェクトのアプリケーションを相互に接続できるようにポッドネットワークを設定する必要があります。後者についてはoc adm pod-networkコマンドを参照してください。

つまり、IPアドレスを自分で処理する必要はありません。アプリケーションを破棄して再作成しても、サービスが再作成されたためにIPの変更があったとしても、サービス名から作成されたホスト名を使用する必要があります。 DNSおよびネットワーキングの詳細については

は、以下を参照してください。

+0

は、私はまだ一つのことを理解していません。 Openshiftが分割DNSを使用している場合、同じURL(Openshiftで作成されたルート)を使用できないのはなぜですか?つまり、要求が内部ネットワークから来ている場合、内部のIPアドレスに解決することができます。要求が外部ネットワークから来ている場合、DNSサーバーはそれを外部IPアドレスに解決し、NATを内部IPアドレスに変換できます。 – farshad

+1

他のサービスが通信するための公開されたルートを使用して内部サービスを停止することはできません。それは外部の要求が経由して来るのと同じルータを通過するでしょう。それを防ぐためにネットワークで何もしていない限り、それはうまくいくはずです。これは、あなたが外部と通信するために必要なサービスを外部に公開しても安全だとします。私がこの作業の唯一の例外は、アドレスが127.0.0.1.xip.ioのOpenShiftをローカルで実行していることです。 127.0.0.1のため、外部ルートが同じポッドに解決されるため、これは機能しません。 –

関連する問題