13.6. ロードバランサーを使用した Kafka へのアクセス
ロードバランサーを使用して、OpenShift クラスターの外部の外部クライアントから AMQ Streams Kafka クラスターにアクセスします。
ブローカーに接続するには、Kafka ブートストラップアドレスのホスト名とポート番号、および TLS 暗号化に使用される証明書を指定します。
この手順では、基本的な loadbalancer リスナーの設定を示します。リスナープロパティーを使用して、TLS 暗号化 (tls) を有効にし、クライアント認証メカニズム (authentication) を指定できます。configuration プロパティーを使用して追加の設定を追加します。たとえば、loadbalancer リスナーで次の設定プロパティーを使用できます。
loadBalancerSourceRanges- トラフィックを CIDR (クラスレスドメイン間ルーティング) 範囲の指定されたリストに制限します。
externalTrafficPolicy- サービスによって外部トラフィックがローカルノードのエンドポイントまたはクラスター全体のエンドポイントにルーティングされるかどうかを指定します。
loadBalancerIP- ロードバランサーの作成時に特定の IP アドレスを要求します。
リスナー設定の詳細は、GenericKafkaListener スキーマ参照 を参照してください。
前提条件
- 稼働中の Cluster Operator
この手順では、Kafka クラスター名は my-cluster です。リスナーの名前は external3 です。
手順
外部リスナーを
loadbalancerタイプに設定して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に作成されます。loadbalancerタイプのサービスとロードバランサーは、外部ブートストラップサービスと同様に、Kafka ブローカーごとに作成されます。ロードバランサーサービス、ブートストラップおよびブローカー用に作成されたロードバランサー
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアント接続に使用されるブートストラップアドレスは、
Kafkaリソースのstatusに伝播されます。ブートストラップアドレスのステータスの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアント接続に使用される DNS アドレスは、各ロードバランサーサービスの
statusに伝達されます。ブートストラップロードバランサーのステータスの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafkaリソースのステータスから、Kafka クラスターにアクセスする際に使用するブートストラップアドレスを取得します。oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external3")].bootstrapServers}{"\n"}' a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9094oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external3")].bootstrapServers}{"\n"}' a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9094Copy 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 クライアントのブートストラップホストとポートを指定します。たとえば、
a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9094です。 抽出した証明書を Kafka クライアントのトラストストアに追加して、TLS 接続を設定します。
クライアント認証メカニズムを有効にした場合は、クライアントでもそれを設定する必要があります。
-
Kafka クラスターに接続するためのブートストラップアドレスとして、Kafka クライアントのブートストラップホストとポートを指定します。たとえば、
独自のリスナー証明書を使用している場合は、CA 証明書をクライアントのトラストストア設定に追加する必要があるかどうかを確認してください。パブリック (外部) CA の場合、通常は追加する必要はありません。