14.6. ロードバランサーを使用した Kafka へのアクセス


ロードバランサーを使用して、OpenShift クラスター外の外部クライアントから Streams for Apache Kafka クラスターにアクセスします。

ブローカーに接続するには、Kafka ブートストラップアドレスのホスト名とポート番号、および TLS 暗号化に使用される証明書を指定します。

この手順では、基本的な loadbalancer リスナーの設定を示します。リスナープロパティーを使用して、TLS 暗号化 (tls) を有効にし、クライアント認証メカニズム (authentication) を指定できます。configuration プロパティーを使用して追加の設定を追加します。たとえば、loadbalancer リスナーで次の設定プロパティーを使用できます。

loadBalancerSourceRanges
トラフィックを CIDR (クラスレスドメイン間ルーティング) 範囲の指定されたリストに制限します。
externalTrafficPolicy
サービスによって外部トラフィックがローカルノードのエンドポイントまたはクラスター全体のエンドポイントにルーティングされるかどうかを指定します。
loadBalancerIP
ロードバランサーの作成時に特定の IP アドレスを要求します。

リスナー設定の詳細は、GenericKafkaListener スキーマリファレンス を参照してください。

前提条件

  • 稼働中の Cluster Operator

この手順では、Kafka クラスター名は my-cluster です。リスナーの名前は external3 です。

手順

  1. 外部リスナーを loadbalancer タイプに設定して Kafka リソースを設定します。

    以下に例を示します。

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      labels:
        app: my-cluster
      name: my-cluster
      namespace: myproject
    spec:
      kafka:
        # ...
        listeners:
          - name: external3
            port: 9094
            type: loadbalancer
            tls: true
            authentication:
              type: tls
            # ...
        # ...
      zookeeper:
        # ...
  2. リソースを作成または更新します。

    oc apply -f <kafka_configuration_file>

    Kafka ブローカーの ID を検証するためのクラスター CA 証明書も、シークレット my-cluster-cluster-ca-cert に作成されます。

    loadbalancer タイプのサービスとロードバランサーは、外部ブートストラップサービスと同様に、Kafka ブローカーごとに作成されます。

    ロードバランサーサービス、ブートストラップおよびブローカー用に作成されたロードバランサー

    NAME                                  TYPE            CLUSTER-IP      PORT(S)
    my-cluster-kafka-external3-0          LoadBalancer    172.30.204.234  9094:30011/TCP
    my-cluster-kafka-external3-1          LoadBalancer    172.30.164.89   9094:32544/TCP
    my-cluster-kafka-external3-2          LoadBalancer    172.30.73.151   9094:32504/TCP
    my-cluster-kafka-external3-bootstrap  LoadBalancer    172.30.30.228   9094:30371/TCP
    
    NAME                                  EXTERNAL-IP (loadbalancer)
    my-cluster-kafka-external3-0          a8a519e464b924000b6c0f0a05e19f0d-1132975133.us-west-2.elb.amazonaws.com
    my-cluster-kafka-external3-1          ab6adc22b556343afb0db5ea05d07347-611832211.us-west-2.elb.amazonaws.com
    my-cluster-kafka-external3-2          a9173e8ccb1914778aeb17eca98713c0-777597560.us-west-2.elb.amazonaws.com
    my-cluster-kafka-external3-bootstrap  a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com

    クライアント接続に使用されるブートストラップアドレスは、Kafka リソースの status に伝播されます。

    ブートストラップアドレスのステータスの例

    status:
      clusterId: Y_RJQDGKRXmNF7fEcWldJQ
      conditions:
        - lastTransitionTime: '2023-01-31T14:59:37.113630Z'
          status: 'True'
          type: Ready
      kafkaVersion: 3.7.0
      listeners:
        # ...
        - addresses:
            - host: >-
                a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com
              port: 9094
          bootstrapServers: >-
            a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9094
          certificates:
            - |
              -----BEGIN CERTIFICATE-----
    
              -----END CERTIFICATE-----
          name: external3
      observedGeneration: 2
      operatorLastSuccessfulVersion: 2.7
     # ...

    クライアント接続に使用される DNS アドレスは、各ロードバランサーサービスの status に伝達されます。

    ブートストラップロードバランサーのステータスの例

    status:
      loadBalancer:
        ingress:
          - hostname: >-
              a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com
     # ...

  3. Kafka リソースのステータスから、Kafka クラスターにアクセスする際に使用するブートストラップアドレスを取得します。

    oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external3")].bootstrapServers}{"\n"}'
    
    a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9094
  4. クラスター CA 証明書を抽出します。

    oc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
  5. ブローカーに接続するようにクライアントを設定します。

    1. Kafka クラスターに接続するためのブートストラップアドレスとして、Kafka クライアントのブートストラップホストとポートを指定します。たとえば、a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9094 です。
    2. 抽出した証明書を Kafka クライアントのトラストストアに追加して、TLS 接続を設定します。

      クライアント認証メカニズムを有効にした場合は、クライアントでもそれを設定する必要があります。

注記

独自のリスナー証明書を使用している場合は、CA 証明書をクライアントのトラストストア設定に追加する必要があるかどうかを確認してください。パブリック (外部) CA の場合、通常は追加する必要はありません。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.