7.5.3. SSL ルートの作成
OpenShift クラスター外のクライアントアプリケーションがブローカーに送信できるようにするには、ブローカー Pod の SSL ルートを作成する必要があります。OpenShift ルーターには、トラフィックを正しいサービスに送信するために Server Name Indication(SNI)が必要なため、SSL 対応のルートのみを外部クライアントに公開できます。
アプリケーションテンプレートを使用して OpenShift Container Platform にブローカーをデプロイする場合に、AMQ_PROTOCOL テンプレートパラメーターを使用して、ブローカーが使用するメッセージングプロトコルをコンマ区切りの一覧で指定します。使用可能なオプションは、 amqp、mqtt、openwire、stomp、およびhornetqです。プロトコルを指定しない場合には、全プロトコルが利用できます。
ブローカーが使用するメッセージングプロトコルごとに、OpenShift はブローカー Pod の専用ポートを公開します。さらに、OpenShift は すべてのプロトコル の多重化ポートを自動的に作成します。OpenShift 外のクライアントアプリケーションは、使用するプロトコルでどのプロトコルがサポート対象であるかに拘らず、全プロトコル対応の多重化ポートを常に使用して、ブローカーに接続します。
すべてのプロトコルポートへの接続は、OpenShift が自動作成するサービスおよび作成する SSL ルートを介して行われます。ブローカー Pod 内のヘッドレスサービスは、クライアントが直接アクセスできる、独自のサービスやルートがない、他のプロトコル固有のポートにアクセスできるようにします。
各種 AMQ Broker トランスポートプロトコルに対して OpenShift が公開するポートを以下の表に示します。ブローカーは、OpenShift クラスター内のトラフィックに対する SSL 以外のポートをリッスンします。SSL ベース (*.-ssl.yaml) テンプレートを使用してデプロイメントを作成した場合に、ブローカーは、OpenShift 外部のクライアントからトラフィックを SSL 対応のポートでリッスンします。
| AMQ Broker トランスポートプロトコル | デフォルトのポート |
|---|---|
| すべてのプロトコル(OpenWire、AMQP、STOMP、MQTT、および HornetQ) | 61616 |
| すべてのプロトコル - SSL(OpenWire AMQP、STOMP、MQTT、および HornetQ) | 61617 |
| AMQP | 5672 |
| AMQP (SSL) | 5671 |
| MQTT | 1883 |
| MQTT (SSL) | 8883 |
| STOMP | 61613 |
| STOMP (SSL) | 61612 |
以下は、ブローカー Pod での SSL ルート作成時に注意する必要がある点です。
ルートの作成時に、TLS Termination を Passthrough に設定すると、OpenShift ルーターは復号および再送信を行わずに AMQ Broker に対する全通信をリレーします。
注記OpenShift ルーターは HTTP プロキシーである
HAProxyを使用するため、通常の HTTP トラフィックには TLS パススルールートは必要ありません。外部ブローカークライアントは、SSL 接続のブローカー URL 設定時に OpenShift ルーターポート(443)を指定する必要があります。クライアント接続が OpenShift ルーターポートを指定する場合、ルーターはクライアントトラフィックを転送する必要のあるブローカー Pod の適切なポートを決定します。
注記デフォルトで、OpenShift ルーターは 443 ポートを使用します。ただし、ルーターは
ROUTER_SERVICE_HTTPS_PORT環境変数に指定された値に基づいて異なるポート番号を使用するように設定できます。詳細は OpenShift Container Platform Routes を参照してください。ブローカー URL にフェイルオーバープロトコルを含めると、Pod が再起動またはアップグレードされた場合に備えてクライアント接続が維持されます。
先ほどの両設定が以下の例のようになります。
... factory.setBrokerURL("failover://ssl://<broker-pod-route-name>:443"); ...
関連情報
- SSL をサポートするブローカーのデプロイと SSL ルートの作成をサポートして外部クライアントアクセスを有効にするブローカーの例の完全な詳細は、「SSL を 使用した基本的なブローカーのデプロイ 」を参照してください。
- クラスター化されたブローカーが AMQ ブローカー管理コンソールの独自のインスタンスに接続するためのルートを作成する例は、AMQ ブローカー管理コンソールのルートの作成を参照してください。