14.2. Kafka ブローカーに接続するためのリスナー設定
Kafka ブローカーへのクライアント接続にはリスナーを使用します。Streams for Apache Kafka には、Kafka
リソースを通じてリスナーを設定するためのプロパティーを備えた汎用的な GenericKafkaListener
スキーマが用意されています。GenericKafkaListener
は、リスナー設定に柔軟なアプローチを提供します。プロパティーを指定して、OpenShift クラスター内で接続する 内部 リスナーを設定したり、OpenShift クラスター外部で接続する 外部 リスナーを設定したりできます。
リスナー設定で Kafka を公開するための接続 type
を指定します。要件ならびにお使いの環境およびインフラストラクチャーに応じて、選択するタイプは異なります。次のリスナータイプがサポートされています。
- 内部リスナー
-
同じ OpenShift クラスター内で接続する
internal
-
ブローカーごとの
ClusterIP
サービスを使用して Kafka を公開するcluster-ip
-
同じ OpenShift クラスター内で接続する
- 外部リスナー
-
OpenShift ノードのポートを使用する
nodeport
-
ロードバランサーサービスを使用する
loadbalancer
-
Kubernetes
Ingress
および Kubernetes 用 Ingress NGINX コントローラー を使用するingress
(Kubernetes のみ) -
OpenShift
Route
とデフォルトの HAProxy ルーターを使用するroute
(OpenShift のみ)
-
OpenShift ノードのポートを使用する
OpenShift では ingress
を使用せず、代わりに route
タイプを使用してください。Ingress NGINX コントローラーは、Kubernetes でのみ使用することを目的としています。route
タイプは OpenShift でのみサポートされます。
internal
タイプのリスナー設定は、ヘッドレスサービスと、ブローカー Pod に指定された DNS 名を使用します。OpenShift ネットワークを外部ネットワークに参加させたい場合があります。その場合、OpenShift サービスの DNS ドメイン (通常は .cluster.local
) が使用されないように、内部
タイプのリスナーを (useServiceDnsDomain
プロパティーを使用して) 設定できます。ブローカーごとの ClusterIP
サービスに基づいて Kafka クラスターを公開する cluster-ip
タイプのリスナーを設定することもできます。これは、ヘッドレスサービスを介してルーティングできない場合や、カスタムアクセスメカニズムを組み込みたい場合に便利なオプションです。たとえば、特定の Ingress コントローラーまたは OpenShift Gateway API 用に独自のタイプの外部リスナーを構築するときに、このリスナーを使用できます。
外部リスナーは、さまざまな認証メカニズムを必要とするネットワークから Kafka クラスターへのアクセスを処理します。ロードバランサーやルートなどの指定された接続メカニズムを使用して、OpenShift 環境外部のクライアントアクセスに対して外部リスナーを設定できます。たとえば、ロードバランサーは、ベアメタルなどの特定のインフラストラクチャーには適さない場合があります。ベアメタルでは、ノードポートがより適したオプションを提供します。
各リスナーは、Kafka
リソース内の配列として定義されます。
リスナーの設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... listeners: - name: plain port: 9092 type: internal tls: false configuration: useServiceDnsDomain: true - name: tls port: 9093 type: internal tls: true authentication: type: tls - name: external1 port: 9094 type: route tls: true configuration: brokerCertChainAndKey: secretName: my-secret certificate: my-certificate.crt key: my-key.key # ...
名前とポートが一意であれば、必要なリスナーをいくつでも設定できます。認証を使用してセキュアな接続を行うようにリスナーを設定することもできます。
各接続タイプの長所と短所については、Strimzi での Apache Kafka へのアクセスを参照してください。
外部リスナーの使用時に Kafka クラスターをスケーリングする場合、すべての Kafka ブローカーのローリング更新がトリガーされる可能性があります。これは設定によって異なります。