第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 文字を超えないように注意してください。
前提条件
- OpenShift で Kafka クラスターを作成 している。
-
証明書を管理するには、OpenJDK
keytool
が必要である。 -
(オプション) OpenShift
oc
CLI ツールを使用していくつかのステップを実行できる。
手順
- Web コンソールで Operator > Installed Operator ページに移動し、Streams for Apache Kafka を選択して Operator の詳細を表示します。
- Kafka ページを選択して、インストールされている Kafka クラスターを表示します。
設定している Kafka クラスターの名前をクリックして、その詳細を表示します。
この例では、
my-cluster
という名前の Kafka クラスターを使用します。-
Kafka クラスター
my-cluster
の YAML ページを選択します。 ルートリスナー設定を追加して、
listener1
という名前の OpenShift ルートを作成します。リスナー設定は、
route
タイプに設定する必要があります。Kafka 設定のlisteners
の下にリスナー設定を追加します。外部ルートリスナーの設定
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 # ...
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) にルーティングされます。
- 更新された設定を保存します。
Kafka クラスター
my-cluster
の Resources ページを選択して、クライアントに必要な接続情報を見つけます。Resources ページから、Kafka クラスターに接続するために必要なルートリスナーと公開クラスター証明書の詳細を確認できます。
-
Kafka クラスター用に作成された
my-cluster-kafka-listener1-bootstrap
ルートの名前をクリックして、ルートの詳細を表示します。 ホスト名をメモします。
ホスト名は、Kafka クラスターに接続するためのブートストラップアドレスとして、Kafka クライアントのポート 443 で指定されます。
Networking > Routes に移動し、
amq-streams-kafka
プロジェクトを選択して、namespace に作成されたルートを表示することにより、ブートストラップアドレスを見つけることもできます。または、
oc
ツールを使用してブートストラップの詳細を抽出できます。ブートストラップ情報の抽出
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get routes my-cluster-kafka-listener1-bootstrap -o=jsonpath='{.status.ingress[0].host}{"\n"}'
oc get routes my-cluster-kafka-listener1-bootstrap -o=jsonpath='{.status.ingress[0].host}{"\n"}'
Resources ページに戻り、
my-cluster-cluster-ca-cert
の名前をクリックして、Kafka クラスターにアクセスするためのシークレットの詳細を表示します。ca.crt
証明書ファイルには、Kafka クラスターの公開証明書が含まれています。Kafka ブローカーにアクセスするには証明書が必要です。
ca.crt
公開証明書ファイルのローカルコピーを作成します。証明書の詳細をコピーするか、OpenShift
oc
ツールを使用してそれらを抽出できます。公開証明書の抽出
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc extract secret/my-cluster-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
oc extract secret/my-cluster-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
keytool
を使用して、公開クラスター証明書のローカルトラストストアを作成します。ローカルトラストストアの作成
Copy to Clipboard Copied! Toggle word wrap Toggle overflow keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt
keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt
プロンプトが表示されたら、トラストストアにアクセスするためのパスワードを作成します。
トラストストアは、Kafka クラスターへのアクセスを認証するために Kafka クライアントで指定されます。
メッセージの送受信を開始する準備が整いました。