Confluent コンポーネントに対するポートベースの静的アクセスの構成¶
ポートベースの静的アクセスを使用するように Kafka を構成した場合、Kafka のアドバタイズドリスナーが、同じホストと異なるポートを使用してセットアップされます。
この方法では、Kubernetes リソースは作成されません。NGINX Ingress コントローラーを使用するなどして、Kafka への外部アクセスを明示的に構成する必要があります。
その他、Metadata Service (MDS) への外部アクセスを実現するために必要な構成手順については、「RBAC のためのネットワークの構成」を参照してください。
ポートベースルーティングを使用して Kafka への静的外部アクセスを構成するには
外部アクセスの種類として staticForPortBasedRouting を使用して Kafka をデプロイします。
listeners: external: externalAccess: type: staticForPortBasedRouting staticForPortBasedRouting: portOffset: --- [1] host: --- [2]
[1](必須)開始ポート番号です。
実行中のクラスターでこの値を変更する場合、クラスターをローリングする必要があります。
[2](必須)すべてのアドバタイズされたリスナーの構成に使用される FQDN です。
実行中のクラスターでこの値を変更する場合、クラスターをローリングする必要があります。
次に示したのは、3 つの Kafka ブローカーに使用される Kafka のアドバタイズドリスナーの例です。
portOffset
が9093
に、host
がtest.example.com
に設定されています。test.example.com:9093
test.example.com:9094
test.example.com:9095
ingress-nginx などの Ingress コントローラーをデプロイします。利用可能なコントローラーのリストについては、「Ingress コントローラー」を参照してください。
以下のコマンド例を参考に、TCP ポートと Kafka サービスとのマッピングを指定します。各ブローカーは、ステップ 1 で設定した
portOffset
に基づいて TCP ポートにマッピングされている必要があります。Kafka clusterIP サービスとポートを表示するには、以下のコマンドを使用します。kubectl get services -n <namespace>
以下の Helm コマンドの例では、NGINX Ingress コントローラーをインストールし、ポート 9093、9094、9095 を Kafka のサービスとサービスポート(ブローカー 3 個)にマッピングしています。
helm install <release name> stable/nginx-ingress -n <namespace> \ --set controller.ingressClass=kafka \ --set tcp.9093="operator/kafka-0-internal:9092" \ --set tcp.9094="operator/kafka-1-internal:9092" \ --set tcp.9095="operator/kafka-2-internal:9092"
Ingress コントローラーが適切に構成されていることを確認します。詳細については、使用している Ingress コントローラーのドキュメントを参照してください。
NGINX の場合は、以下のコマンドを実行して、configmap 名を取得し、Ingress コントローラーによって作成された configmap を検証します。
kubectl get configmap -n <namespace> kubectl describe configmap <configmap name> -n <namespace>
出力には、上記の Helm コマンドの場合と同様、名前空間名、Kafka ブローカーサービス名、ポートが示されます。
インバウンドトラフィックの Kafka へのルーティングで Ingress コントローラーによって使用されるルールのコレクションが含まれた Ingress リソース を作成します。
Ingress では、Ingress コントローラーに応じて一部のオプションの構成にアノテーションを使用します。その一例が rewrite-target アノテーション です。サポートされているアノテーションについては、使用している Ingress コントローラーのドキュメントを参照してください。NGINX コントローラーのデプロイと Ingress リソースの構成の詳細については、このチュートリアル を参照してください。
以下に示したのは、NGINX Ingress コントローラーの Ingress リソースを作成して 3 つの Kafka ブローカーを公開する例です。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-without-sni annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: demo.example.com http: paths: - path: backend: serviceName: kafka-0-internal servicePort: 9092 - path: backend: serviceName: kafka-1-internal servicePort: 9092 - path: backend: serviceName: kafka-2-internal servicePort: 9092
Kafka 用にステップ #1 で指定したホスト名と、Ingress コントローラーの外部ロードバランサー IP アドレスを使用して、DNS レコードを作成します。ホスト名は、Ingress コントローラーのロードバランサーの外部 IP に解決される必要があります。
外部 IP を取得するには、以下のコマンドを使用します。
kubectl get services -n <namespace>
ポートベースの静的アクセスを使用した外部アクセスの構成に関するチュートリアルのシナリオについては、ポートベースの静的アクセスに関するクイックスタートチュートリアル を参照してください。