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:     --- [1]
    
              host:               --- [2]
    
    Copy
    • [1](必須)値は、30000 ~ 32767 の範囲(両端の値を含む)でなければなりません。

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

    • [2](必須)すべてのアドバタイズされたリスナーの構成に使用される FQDN を指定します。

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

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

    spec:
      externalAccess:
        type: nodePort
        nodePort:
          nodePortOffset:         --- [1]
    
          host:                   --- [2]
    
          sessionAffinity:        --- [3]
          sessionAffinityConfig:  --- [4]
            clientIP:
              timeoutSeconds:     --- [5]
    
      configOverrides:
        server:
          - advertised.listeners= --- [6]
    
    Copy

    各 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 プロトコルがサポートされます。

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

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

    kubectl get services -n <namespace> | grep NodePort
    
    Copy

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