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 サービスを使用するには

  1. Kubernetes クラスターに属する単一または複数のノードのアドレスを使用して、DNS レコードを作成します。

  2. ノードポートを使用して Kafka を構成するには、Kafka のカスタムリソース(CR)で次のように設定して構成を適用します。

    spec:
      listeners:
        external:
          externalAccess:
            type: nodePort
            nodePort:
              nodePortOffset:  # Required. The value should be be in the range
                               # between 30000 and 32767, inclusive.
    
              host:            # Required. Specify the FQDN that will be
                               # used to configure all advertised listeners.
    

    実行中のクラスターで nodePortOffset または host の値を変更する場合、クラスターをローリングする必要があります。

  3. ノードポートを使用して他の Confluent コンポーネントを構成するには、そのコンポーネントの CR で次のように設定して構成を適用します。

    spec:
      externalAccess:
        type: nodePort
        nodePort:
          nodePortOffset:  # Required. The value should be in the range
                           # between 30000 and 32767,  inclusive.
    
          host:            # Required. Specify the FQDN that will be used
                           # to configure all advertised listeners.
    

    各 Confluent Platform コンポーネントのアクセスエンドポイントは <host>:<nodePortOffset> です。

    実行中のクラスターで nodePortOffset または host の値を変更する場合、クラスターをローリングする必要があります。

  4. 使用予定の NodePort 範囲で接続できるように、ファイアウォールルールを作成します。ファイアウォールルールの作成手順については、「ファイアウォールルールの使用」を参照してください。

  5. 次のコマンドを使用して名前空間内のサービスをリストし、NodePort サービスが正しく作成されていることを確認します。

    kubectl get services -n <namespace> | grep NodePort
    

NodePort を使用した外部アクセスの構成に関するチュートリアルのシナリオについては、ノードポートの使用に関するクイックスタートチュートリアル を参照してください。