このトピックでは、ベースパス ルーティングについて説明します。ベースパス ルーティングを使用すると、どのようにして API プロキシ呼び出しを正しい環境にルーティングするかを構成し、管理できます。
ベースパス ルーティングを使用してプロキシ デプロイメントを管理する
Hybrid では 1 つの仮想ホストを複数の環境にマッピングできるため、どのプロキシ ベースパスがどの環境にマッピングされるかを指定する手段が必要です。
たとえば、2 つの環境を apitest.mydomain.net という同じホスト エイリアスにマッピングする場合を考えます。その場合は、オーバーライド ファイルに次の構成を追加し、環境 dev1 と dev2 の両方をこのホストにマッピングします。次に例を示します。
envs:
- name: dev1
hostAlias: "apitest.mydomain.net"
...
- name: dev2
hostAlias: "apitest.mydomain.net"
...
これらの環境にプロキシをデプロイします。デプロイするプロキシは次のとおりです。
- プロキシ foo1(ベースパスは /foo1)を dev1 にデプロイする
- プロキシ foo2(ベースパスは /foo2)を dev2 にデプロイする
クライアントは https://apitest.mydomain.net/foo1 という形式でこの API を呼び出すとします。このパス(または、このリクエストのために生成された Host ヘッダー内)には、呼び出しのルーティング先の環境を Hybrid に知らせる情報は何もありません。foo1 プロキシは dev1 と dev2 のどちらにデプロイされているのでしょうか?リクエスト URL のみからこれを判断することはできません。これらの各ベースパスを 1 つ以上の環境に明示的にマッピングする必要があります。
プロキシ呼び出しのルーティング先の環境を指定するには、次の例のように、オーバーライド ファイル内の envs プロパティに paths.uri.prefixes プロパティを追加します。
envs:
- name: dev1
hostAlias: "apitest.mydomain.net"
paths:
uri:
prefixes:
- /foo1
...
- name: dev2
hostAlias: "apitest.mydomain.net"
paths:
uri:
prefixes:
- /foo2
...
これで、https://apitest.mydomain.net/foo1 のような形式の API 呼び出しが到着したときに、Ingress ルーターはそれをどこに送信すればよいかがわかります。/foo1 プロキシは dev1 環境にデプロイされているので、この呼び出しは dev1 の Message Processor にルーティングされます。
https://apitest.mydomain.net/foo2 の呼び出しが到着した場合も同様に、今度は dev2 環境の MP に呼び出しがルーティングされます。
要約すると、paths.uri.prefixes 構成を使用することで、同じホスト エイリアスを共有する複数の環境の間でプロキシ デプロイメントを管理できます。
ベスト プラクティス: 複数の環境で同じホスト エイリアスを共有する場合はベースパス ルーティングを使用します。ベースパス ルーティングを使用すると、1 つの環境にデプロイするプロキシの数を抑えることができます。
次のセクションでは、1 つの環境にデプロイするプロキシの数を抑えることがなぜ良い考えであるかについて詳しく説明します。これはプロキシ デプロイメントの管理方法を決定する際の参考になります。
複数環境の構成に新しいプロキシをデプロイする
新しいプロキシを作成した後、それを 1 つ以上の環境にデプロイできます。複数の環境で同じホスト エイリアスを共有する場合は、ベースパス ルーティングを使用してプロキシのルーティング先の環境を Hybrid に明示的に知らせる必要があります。
たとえば、/foo4 というベースパスを持つ新しいプロキシを作成し、それを dev1 という環境にデプロイする場合は、次の構成をオーバーライドに追加します。
envs:
- name: dev1
hostAlias: "apitest.mydomain.net"
...
paths:
uri:
prefixes:
- /foo1
- /foo4
- name: dev2
hostAlias: "apitest.mydomain.net"
...
paths:
uri:
prefixes:
- /foo2
これで、https://apitest.mydomain.net/foo4 という形式の API 呼び出しが到着した場合、Hybrid はこれを環境 dev1 にルーティングすればよいとわかります。