第4章 Kafka クラスターにアクセスするための OpenShift ルートの作成

OpenShift の外部で Kafka クラスターにアクセスするための OpenShift ルートを作成します。

この手順では、Kafka クラスターを OpenShift 環境外のクライアントに公開する方法について説明します。Kafka クラスターが公開された後、外部クライアントは Kafka クラスターからのメッセージを生成および消費できます。

OpenShift ルートを作成するために、OpenShift にインストールされている Kafka クラスターの設定に route リスナーが追加されます。

警告

OpenShift Route アドレスは、Kafka クラスターの名前、リスナーの名前、および作成される namespace の名前で設定されます。たとえば、my-cluster-kafka-listener1-bootstrap-amq-streams-kafka (<cluster_name>-kafka-<listener_name>-bootstrap-<namespace>) です。アドレスの全体の長さが上限の 63 文字を超えないように注意してください。

前提条件

手順

  1. Web コンソールで Operators > Installed Operators ページに移動し、Red Hat Integration - AMQ Streams を選択して、Operator の詳細を表示します。
  2. Kafka ページを選択して、インストールされている Kafka クラスターを表示します。
  3. 設定している Kafka クラスターの名前をクリックして、その詳細を表示します。

    この例では、my-cluster という名前の Kafka クラスターを使用します。

  4. Kafka クラスター my-clusterYAML ページを選択します。
  5. ルートリスナー設定を追加して、listener1 という名前の OpenShift ルートを作成します。

    リスナー設定は、route タイプに設定する必要があります。Kafka 設定の listeners の下にリスナー設定を追加します。

    外部ルートリスナーの設定

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: amq-streams-kafka
    spec:
      kafka:
        # ...
        listeners:
          # ...
          - name: listener1
            port: 9094
            type: route
            tls: true
    # ...

    クライアントはデフォルトのルーターポートであるポート 443 に接続しますが、トラフィックは設定するポート (この例では 9094) にルーティングされます。

  6. 更新された設定を保存します。
  7. Kafka クラスター my-clusterResources ページを選択して、クライアントに必要な接続情報を見つけます。

    Resources ページから、Kafka クラスターに接続するために必要なルートリスナーと公開クラスター証明書の詳細を確認できます。

  8. Kafka クラスター用に作成された my-cluster-kafka-listener1-bootstrap ルートの名前をクリックして、ルートの詳細を表示します。
  9. ホスト名をメモします。

    ホスト名は、Kafka クラスターに接続するためのブートストラップアドレスとして、Kafka クライアントのポート 443 で指定されます。

    Networking > Routes に移動し、amq-streams-kafka プロジェクトを選択して、namespace に作成されたルートを表示することにより、ブートストラップアドレスを見つけることもできます。

    または、oc ツールを使用してブートストラップの詳細を抽出できます。

    ブートストラップ情報の抽出

    oc get routes my-cluster-kafka-listener1-bootstrap -o=jsonpath='{.status.ingress[0].host}{"\n"}'

  10. Resources ページに戻り、my-cluster-cluster-ca-cert の名前をクリックして、Kafka クラスターにアクセスするためのシークレットの詳細を表示します。

    ca.crt 証明書ファイルには、Kafka クラスターの公開証明書が含まれています。

    Kafka ブローカーにアクセスするには証明書が必要です。

  11. ca.crt 公開証明書ファイルのローカルコピーを作成します。

    証明書の詳細をコピーするか、OpenShift oc ツールを使用してそれらを抽出できます。

    公開証明書の抽出

    oc extract secret/my-cluster-cluster-ca-cert --keys=ca.crt --to=- > ca.crt

  12. keytool を使用して、公開クラスター証明書のローカルトラストストアを作成します。

    ローカルトラストストアの作成

    keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt

    プロンプトが表示されたら、トラストストアにアクセスするためのパスワードを作成します。

    トラストストアは、Kafka クラスターへのアクセスを認証するために Kafka クライアントで指定されます。

    メッセージの送受信を開始する準備が整いました。