6.4.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 対応のポートでリッスンします。
表6.2 AMQ Broker トランスポートプロトコルのデフォルトポート
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 Broker 管理コンソールの独自のインスタンスに接続するためのルートを作成する例は、AMQ Broker 管理コンソールのルートの作成 を参照してください。