13.5. ノードポートを使用した Kafka へのアクセス
ノードポートを使用して、OpenShift クラスターの外部の外部クライアントから AMQ Streams 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/TCPCopy 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:32650oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external4")].bootstrapServers}{"\n"}' ip-10-0-224-199.us-west-2.compute.internal:32650Copy 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.crtoc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crtCopy 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 の場合、通常は追加する必要はありません。