14.5. ノードポートを使用した Kafka へのアクセス
ノードポートを使用して、OpenShift クラスター外の外部クライアントから Streams for Apache Kafka クラスターにアクセスします。
ブローカーに接続するには、Kafka ブートストラップアドレスのホスト名とポート番号、および TLS 暗号化に使用される証明書を指定します。
この手順では、基本的な nodeport
リスナーの設定を示します。リスナープロパティーを使用して、TLS 暗号化 (tls
) を有効にし、クライアント認証メカニズム (authentication
) を指定できます。configuration
プロパティーを使用して追加の設定を追加します。たとえば、nodeport
リスナーで次の設定プロパティーを使用できます。
preferredNodePortAddressType
- ノードアドレスとしてチェックされる最初のアドレスタイプを指定します。
externalTrafficPolicy
- サービスによって外部トラフィックがローカルノードのエンドポイントまたはクラスター全体のエンドポイントにルーティングされるかどうかを指定します。
nodePort
- ブートストラップおよびブローカーサービスに割り当てられたノードポート番号をオーバーライドします。
リスナー設定の詳細は、GenericKafkaListener
スキーマリファレンス を参照してください。
前提条件
- 稼働中の Cluster Operator
この手順では、Kafka クラスター名は my-cluster
です。リスナーの名前は external4
です。
手順
外部リスナーを
nodeport
タイプに設定してKafka
リソースを設定します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースを作成または更新します。
oc apply -f <kafka_configuration_file>
oc apply -f <kafka_configuration_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kafka ブローカーの ID を確認するためのクラスター CA 証明書は、シークレットの
my-cluster-cluster-ca-cert
に作成されます。NodePort
タイプのサービスは、外部ブートストラップサービスと同様に、Kafka ブローカーごとに作成されます。ブートストラップおよびブローカー用に作成されたノードポートサービス
NAME TYPE CLUSTER-IP PORT(S) my-cluster-kafka-external4-0 NodePort 172.30.55.13 9094:31789/TCP my-cluster-kafka-external4-1 NodePort 172.30.250.248 9094:30028/TCP my-cluster-kafka-external4-2 NodePort 172.30.115.81 9094:32650/TCP my-cluster-kafka-external4-bootstrap NodePort 172.30.30.23 9094:32650/TCP
NAME TYPE CLUSTER-IP PORT(S) my-cluster-kafka-external4-0 NodePort 172.30.55.13 9094:31789/TCP my-cluster-kafka-external4-1 NodePort 172.30.250.248 9094:30028/TCP my-cluster-kafka-external4-2 NodePort 172.30.115.81 9094:32650/TCP my-cluster-kafka-external4-bootstrap NodePort 172.30.30.23 9094:32650/TCP
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアント接続に使用されるブートストラップアドレスは、
Kafka
リソースのstatus
に伝播されます。ブートストラップアドレスのステータスの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka
リソースのステータスから、Kafka クラスターにアクセスする際に使用するブートストラップアドレスを取得します。oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external4")].bootstrapServers}{"\n"}' ip-10-0-224-199.us-west-2.compute.internal:32650
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external4")].bootstrapServers}{"\n"}' ip-10-0-224-199.us-west-2.compute.internal:32650
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター CA 証明書を抽出します。
oc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
oc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブローカーに接続するようにクライアントを設定します。
-
Kafka クラスターに接続するためのブートストラップアドレスとして、Kafka クライアントのブートストラップホストとポートを指定します。たとえば、
ip-10-0-224-199.us-west-2.compute.internal:32650
です。 抽出した証明書を Kafka クライアントのトラストストアに追加して、TLS 接続を設定します。
クライアント認証メカニズムを有効にした場合は、クライアントでもそれを設定する必要があります。
-
Kafka クラスターに接続するためのブートストラップアドレスとして、Kafka クライアントのブートストラップホストとポートを指定します。たとえば、
独自のリスナー証明書を使用している場合は、CA 証明書をクライアントのトラストストア設定に追加する必要があるかどうかを確認してください。パブリック (外部) CA の場合、通常は追加する必要はありません。