Confluent コンポーネントにアクセスするためのノードポートの構成¶
外部クライアントアクセスに NodePort サービスを使用して Confluent コンポーネントを構成した場合、Confluent コンポーネントの各ノードに異なるポートが Kubernetes により割り当てられます。Kafka のブローカー、ブートストラップサービス、および各コンポーネントにはそれぞれ別個のポートからアクセスできます。
ノードポートを使用した Kafka への外部アクセスの構成¶
ブローカーが N 個ある Kafka クラスターには、N+1 個の NodePort サービスが作成されます。
- ブートストラップサーバー用に 1 個。初期接続用
- N 個のサービス。各ブローカーにつき 1 個で、その後ブローカーとの直接接続で使用
Kubernetes クラスターに属する単一または複数のノードのアドレスを使用して、DNS レコードを作成します。
ノードポートを使用して Kafka を構成するには、Kafka のカスタムリソース(CR)で次のように設定し、
kubectl apply -f
コマンドで構成を適用します。spec: listeners: external: externalAccess: type: nodePort nodePort: nodePortOffset: --- [1] host: --- [2]
[1](必須)値は、30000 ~ 32767 の範囲(両端の値を含む)でなければなりません。
実行中のクラスターでこの値を変更する場合、クラスターをローリングする必要があります。
[2](必須)すべてのアドバタイズされたリスナーの構成に使用される FQDN を指定します。
実行中のクラスターでこの値を変更する場合、クラスターをローリングする必要があります。
使用する予定の NodePort 範囲での接続を許可するファイアウォールルールを作成します。ファイアウォールルールの作成手順については、「ファイアウォールルールの使用」を参照してください。
次のコマンドを使用して名前空間内のサービスをリスト表示し、NodePort サービスが正しく作成されていることを確認します。
kubectl get services -n <namespace> | grep NodePort
NodePort を使用した外部アクセスの構成に関するチュートリアルのシナリオについては、ノードポートの使用に関するクイックスタートチュートリアル を参照してください。
ノードポートを使用した MDS への外部アクセスの構成¶
ロールベースアクセス制御(RBAC)を有効にして MDS への外部アクセスをセットアップする場合、追加でネットワーク構成の手順が必要になります。
MDS への外部アクセスを有効にした場合、ブローカーが N 個ある、RBAC が有効な Kafka クラスターには、N+2 個の NodePort サービスが作成されます。
- ブートストラップサーバー用に 1 個。初期接続用
- ブートストラップサーバー上の MDS 用に 1 個
- N 個のサービス。各ブローカーにつき 1 個で、その後ブローカーとの直接接続で使用
ノードポートを使用した Kafka Metadata Service (MDS) への外部アクセスをサポートするには、Kafka のカスタムリソース(CR)で次のように設定し、kubectl apply -f
コマンドを使用して構成を適用します。
spec
services
mds:
externalAccess:
type: nodePort
nodePort:
externalTrafficPolicy: --- [1]
host: --- [2]
nodePortOffset: --- [3]
advertisedURL: --- [4]
[1] MDS サービスの外部トラフィックポリシーを指定します。
Cluster
またはLocal
に設定します。[2] MDS のホスト名。
[3] MDS のポート番号。値は、
30000
~32767
(両端の値を含む)でなければなりません。[4] 設定されている場合、内部のエンドポイントを使用するのではなく、各ブローカーの MDS にアドバタイズされるリスナーが
<httpSchema>://<host>:<nodePortOffset + podId + 1>
に設定されます。<podId>
の範囲は0
からreplicaCount -1
です。このプロパティは、内部 SAN を MDS の TLS 証明書に追加できない場合にのみ使用します。また、外部 DNS は Kubernetes クラスター内で解決する必要があります。
ノードポートを使用して外部から MDS にアクセスするためのエンドポイントは http(s)://<host>:<nodePortOffset>
です。
例を次に示します。
spec
services
mds:
externalAccess:
type: nodePort
nodePort:
externalTrafficPolicy: Cluster
host: example.com
nodePortOffset: 30001
ノードポートを使用した他の Confluent Platform コンポーネントへの外部アクセスの構成¶
ノードポートを使用した他の Confluent コンポーネントを構成するには、次の手順に従います。
コンポーネントの CR で次のように設定し、
kubectl apply -f
コマンドを使用して構成を適用します。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 を使用した外部アクセスの構成に関するチュートリアルのシナリオについては、ノードポートの使用に関するクイックスタートチュートリアル を参照してください。