第3章 外部ソースからの設定値の読み込み


設定プロバイダープラグインを使用して、外部ソースから設定データを読み込みます。プロバイダーは AMQ Streams とは独立して動作します。これを使用して、プロデューサーやコンシューマーを含む、すべての Kafka コンポーネントの設定データを読み込むことができます。たとえば、これを使用して、KafkaConnect コネクター設定のクレデンシャルを提供します。

OpenShift 設定プロバイダー

OpenShift Configuration Provider プラグインは、OpenShift シークレットまたは ConfigMap から設定データを読み込みます。

Kafka namespace 外で管理される Secret オブジェクト、または Kafka クラスター外にあるシークレットがあるとします。OpenShift 設定プロバイダーを使用すると、ファイルを抽出せずに設定のシークレットの値を参照できます。使用するシークレットをプロバイダーに伝え、アクセス権限を提供する必要があります。プロバイダーは、新しい Secret または ConfigMap を使用している場合でも、Kafka コンポーネントを再起動することなくデータをロードします。この機能により、Kafka Connect インスタンスが複数のコネクターをホストする場合に中断の発生を防ぎます。

環境変数設定プロバイダー

環境変数の設定プロバイダープラグインを使用して、環境変数から設定データを読み込みます。

環境変数の値は、シークレットまたは ConfigMap からマッピングできます。環境変数設定プロバイダーを使用して、たとえば、OpenShift シークレットからマップされた環境変数から証明書または JAAS 設定を読み込むことができます。

注記

OpenShift Configuration Provider はマウントされたファイルを使用できません。たとえば、トラストストアまたはキーストアの場所を必要とする値をロードできません。代わりに、ConfigMap またはシークレットを環境変数またはボリュームとして Kafka Connect Pod にマウントできます。環境変数設定プロバイダーを使用して、環境変数の値を読み込むことができます。KafkaConnect.specexternalConfiguration プロパティー を使用して設定を追加します。このアプローチでアクセス権限を設定する必要はありません。ただし、コネクターに新しい Secret または ConfigMap を使用する場合は、Kafka Connect の再起動が必要になります。これにより、すべての Kafka Connect インスタンスのコネクターが中断されます。

3.1. ConfigMap からの設定値の読み込み

この手順では、OpenShift 設定プロバイダープラグインを使用する方法を説明します。

この手順では、外部 ConfigMap はコネクターの設定プロパティーを提供します。

前提条件

  • 利用可能な OpenShift クラスター
  • 稼働中の Kafka クラスター
  • Cluster Operator が稼働中です。

手順

  1. 設定プロパティーが含まれる ConfigMap またはシークレットを作成します。

    この例では、my-connector-configuration という名前の ConfigMap にはコネクタープロパティーが含まれます。

    コネクタープロパティーのある ConfigMap の例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-connector-configuration
    data:
      option1: value1
      option2: value2

  2. Kafka Connect 設定で OpenShift Configuration Provider を指定します。

    ここで示される仕様は、シークレットおよび ConfigMap からの値の読み込みをサポートできます。

    OpenShift 設定プロバイダーを有効にする Kafka Connect の設定例

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnect
    metadata:
      name: my-connect
      annotations:
        strimzi.io/use-connector-resources: "true"
    spec:
      # ...
      config:
        # ...
        config.providers: secrets,configmaps 1
        config.providers.secrets.class: io.strimzi.kafka.KubernetesSecretConfigProvider 2
        config.providers.configmaps.class: io.strimzi.kafka.KubernetesConfigMapConfigProvider 3
      # ...

    1
    設定プロバイダーのエイリアスは、他の設定パラメーターを定義するために使用されます。プロバイダーパラメーターは config.providers からのエイリアスを使用し、config.providers.${alias}.class の形式を取ります。
    2
    KubernetesSecretConfigProvider は Secret から値を指定します。
    3
    KubernetesConfigMapConfigProvider は設定マップから値を指定します。
  3. リソースを作成または更新してプロバイダーを有効にします。

    oc apply -f <kafka_connect_configuration_file>
  4. 外部の設定マップの値へのアクセスを許可するロールを作成します。

    設定マップから値にアクセスするロールの例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: connector-configuration-role
    rules:
    - apiGroups: [""]
      resources: ["configmaps"]
      resourceNames: ["my-connector-configuration"]
      verbs: ["get"]
    # ...

    このルールは、my-connector-configuration 設定マップにアクセスするためのロールパーミッションを付与します。

  5. ロールバインディングを作成し、設定マップが含まれる namespace へのアクセスを許可します。

    設定マップが含まれる namespace にアクセスするためのロールバインディングの例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: connector-configuration-role-binding
    subjects:
    - kind: ServiceAccount
      name: my-connect-connect
      namespace: my-project
    roleRef:
      kind: Role
      name: connector-configuration-role
      apiGroup: rbac.authorization.k8s.io
    # ...

    ロールバインディングは、ロールに my-project 名前空間へのアクセス許可を与えます。

    サービスアカウントは、Kafka Connect デプロイメントによって使用されるものと同じである必要があります。サービスアカウント名の形式は <cluster_name>-connect で、<cluster_name>KafkaConnect のカスタムリソースの名前です。

  6. コネクター設定で設定マップを参照します。

    設定マップを参照するコネクター設定の例

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnector
    metadata:
      name: my-connector
      labels:
        strimzi.io/cluster: my-connect
    spec:
      # ...
      config:
        option: ${configmaps:my-project/my-connector-configuration:option1}
        # ...
    # ...

    設定マップのプロパティー値のプレースホルダーは、コネクター設定で参照されます。プレースホルダー構造は、configmaps:<path_and_file_name>:<property> です。KubernetesConfigMapConfigProvider は、外部の ConfigMap から option1 プロパティーの値を読み込んで抽出します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.