Confluent コンポーネントにアクセスするためのノードポートの構成¶
外部クライアントアクセスに NodePort サービスを使用して Confluent コンポーネントを構成した場合、Confluent コンポーネントの各ノードに異なるポートが Kubernetes により割り当てられます。Kafka のブローカー、ブートストラップサービス、および各コンポーネントにはそれぞれ別個のポートからアクセスできます。
ブローカーが N 個ある Kafka クラスターには、N+1 個の NodePort サービスが作成されます。
- ブートストラップサーバー用に 1 個。初期接続用
- N 個のサービス。各ブローカーにつき 1 個で、その後ブローカーとの直接接続で使用
MDS への 外部アクセス を有効にした場合、ブローカーが N 個ある、RBAC が有効な Kafka クラスターには、N+2 個の NodePort サービスが作成されます。
- ブートストラップサーバー用に 1 個。初期接続用
- ブートストラップサーバー上の MDS 用に 1 個
- N 個のサービス。各ブローカーにつき 1 個で、その後ブローカーとの直接接続で使用
その他、Metadata Service (MDS) への外部アクセスを実現するために必要な構成手順については、「RBAC のためのネットワークの構成」を参照してください。
外部通信に NodePort サービスを使用するには
Kubernetes クラスターに属する単一または複数のノードのアドレスを使用して、DNS レコードを作成します。
ノードポートを使用して Kafka を構成するには、Kafka のカスタムリソース(CR)で次のように設定して構成を適用します。
spec: listeners: external: externalAccess: type: nodePort nodePort: nodePortOffset: --- [1] host: --- [2]
[1](必須)値は、30000 ~ 32767 の範囲(両端の値を含む)でなければなりません。
実行中のクラスターでこの値を変更する場合、クラスターをローリングする必要があります。
[2](必須)すべてのアドバタイズされたリスナーの構成に使用される FQDN を指定します。
実行中のクラスターでこの値を変更する場合、クラスターをローリングする必要があります。
ノードポートを使用して他の Confluent コンポーネントを構成するには、そのコンポーネントの CR で次のように設定して構成を適用します。
spec: externalAccess: type: nodePort nodePort: nodePortOffset: --- [1] host: --- [2] sessionAffinity: --- [3] sessionAffinityConfig: --- [4] clientIP: timeoutSeconds: --- [5] configOverrides: server: - advertised.listeners= --- [6]
各 Confluent Platform コンポーネントのアクセスエンドポイントは
<host>:<nodePortOffset>
です。[1](必須)値は、30000 ~ 32767 の範囲(両端の値を含む)でなければなりません。
実行中のクラスターでこの値を変更する場合、クラスターをローリングする必要があります。
[2](必須)すべてのアドバタイズされたリスナーの構成に使用される FQDN を指定します。
実行中のクラスターでこの値を変更する場合、クラスターをローリングする必要があります。
[3] コンシューマー REST Proxy でクライアント IP ベースのセッションアフィニティを有効にする場合に必須です。
REST Proxy を Kafka コンシューマーで使用する場合は、
ClientIP
に設定します。セッションアフィニティの詳細については、「Kubernetes Service」を参照してください。[4] [3] で
sessionAffinity: ClientIP
を設定した場合に、セッションアフィニティの構成を格納します。[5]
ClientIP
タイプのセッションのスティッキー時間(秒数)を指定します。この値は、0
より大きく、86400
(1 日)以下でなければなりません。デフォルト値は
10800
(3 時間)です。[6] ノードポートに使用する外部 DNS 名に設定します。この構成は、V3 応答で絶対 URL を生成するために使用されます。HTTP プロトコルおよび HTTPS プロトコルがサポートされます。
使用予定の NodePort 範囲で接続できるように、ファイアウォールルールを作成します。ファイアウォールルールの作成手順については、「ファイアウォールルールの使用」を参照してください。
次のコマンドを使用して名前空間内のサービスをリストし、NodePort サービスが正しく作成されていることを確認します。
kubectl get services -n <namespace> | grep NodePort
NodePort を使用した外部アクセスの構成に関するチュートリアルのシナリオについては、ノードポートの使用に関するクイックスタートチュートリアル を参照してください。