1.2. Streams for Apache Kafka Operator


Streams for Apache Kafka Operator は、OpenShift 上の Kafka を効果的に管理するための専門的な運用知識をベースに特別に構築されています。各 Operator は個別の関数を実行します。

Cluster Operator
Cluster Operator は、OpenShift での Apache Kafka クラスターのデプロイメントおよび管理を処理します。Kafka ブローカーおよびその他の Kafka コンポーネントおよびリソースの設定を自動化します。
Topic Operator
Topic Operator は、Kafka クラスター内でのトピックの作成、設定、および削除を管理します。
User Operator
User Operator は、Kafka ブローカーへのアクセスを必要とする Kafka ユーザーを管理します。

Streams for Apache Kafka をデプロイするときは、まず Cluster Operator をデプロイします。その後、Cluster Operator が Kafka のデプロイメントを処理する準備が整います。Cluster Operator を使用して、またはスタンドアロン Operator として Topic Operator および User Operator をデプロイすることもできます。Cluster Operator によって管理されない Kafka クラスターでは、スタンドアロンの Operator を使用します。

Topic Operator および User Operator は Entity Operator の一部です。Cluster Operator は、Entity Operator 設定に基づいて Operator を 1 つまたは両方デプロイできます。

重要

スタンドアロン Operator をデプロイするには、環境変数を設定して Kafka クラスターに接続する必要があります。これらの環境変数は、Cluster Operator によって設定されるため、Cluster Operator を使用して Operator をデプロイする場合に設定する必要はありません。

1.2.1. OpenShift namespace 内の Streams for Apache Kafka リソースの監視

Operator は、OpenShift namespace 内の Streams for Apache Kafka リソースを監視および管理します。Cluster Operator は、OpenShift クラスター内の 1 つの namespace、複数の namespace、またはすべての namespace を監視できます。Topic Operator と User Operator は、1 つの namespace を監視できます。

  • Cluster Operator は Kafka リソースを監視します
  • Topic Operator は KafkaTopic リソースを監視します
  • User Operator は KafkaUser リソースを監視します

Topic Operator と User Operator は、namespace 内の 1 つの Kafka クラスターのみを監視できます。また、1 つの Kafka クラスターにのみ接続できます。

複数の Topic Operator が同じ namespace を監視すると、名前の競合やトピックの削除が発生する可能性があります。これは、各 Kafka クラスターが同じ名前 (__consumer_offsets など) を持つ Kafka トピックを使用するためです。特定の namespace を監視する Topic Operator が 1 つだけであることを確認してください。

1 つの namespace で複数の User Operator を使用する場合、特定のユーザー名を持つユーザーが複数の Kafka クラスターに存在できます。

Cluster Operator を使用して Topic Operator と User Operator をデプロイすると、デフォルトで Cluster Operator によってデプロイされた Kafka クラスターが監視されます。Operator 設定で watchedNamespace を使用して namespace を指定することもできます。

各 Operator のスタンドアロンデプロイメントの場合、設定で監視する namespace と Kafka クラスターへの接続を指定します。

1.2.2. RBAC リソースの管理

Cluster Operator は、OpenShift リソースへのアクセスを必要とする Streams for Apache Kafka コンポーネントのロールベースアクセス制御 (RBAC) リソースを作成および管理します。

Cluster Operator が機能するには、Kafka および KafkaConnect などの Kafka リソースや ConfigMapPodDeploymentService などの管理リソースと対話するために OpenShift クラスター内でパーミッションが必要です。

権限は、以下の OpenShift RBAC リソースを使用して指定します。

  • ServiceAccount
  • Role および ClusterRole
  • RoleBinding および ClusterRoleBinding

1.2.2.1. Streams for Apache Kafka コンポーネントへの権限委譲

Cluster Operator は strimzi-cluster-operator という名前のサービスアカウントで実行されます。このアカウントには、Streams for Apache Kafka コンポーネントの RBAC リソースを作成する権限を付与するクラスターロールが割り当てられます。クラスターロールは、ロールバインディングによってサービスアカウントに関連付けられます。

OpenShift は、ある ServiceAccount の下で動作するコンポーネントが、付与元の ServiceAccount に含まれていない、別の ServiceAccount 権限を付与するのを防ぎます。Cluster Operator は管理するリソースが必要とする RoleBinding および ClusterRoleBinding RBAC リソースを作成するため、これに同じ権限を付与するロールが必要です。

以下のセクションでは、Cluster Operator で必要な RBAC リソースについて説明します。

1.2.2.2. ClusterRole リソース

Cluster Operator は ClusterRole リソースを使用して、リソースに必要なアクセスを提供します。OpenShift クラスターの設定によっては、クラスター管理者がクラスターロールを作成する必要になる場合があります。

注記

クラスター管理者の権限は ClusterRole リソースの作成にのみ必要です。Cluster Operator はクラスター管理者アカウントでは実行されません。

RBAC リソースは 最小権限の原則 に従い、Cluster Operator が Kafka コンポーネントのクラスターを操作するために必要な権限のみを含みます。

Cluster Operator が権限を委任するには、すべてのクラスターロールが必要です。

表1.3 ClusterRole リソース
名前説明

strimzi-cluster-operator-namespaced

Cluster Operator がオペランドのデプロイと管理に使用する namespace スコープのリソースへのアクセス権。

strimzi-cluster-operator-global

Cluster Operator がオペランドのデプロイと管理に使用するクラスタースコープのリソースへのアクセス権。

strimzi-cluster-operator-leader-election

Cluster Operator がリーダーの選出に使用するアクセス権。

strimzi-cluster-operator-watched

Cluster Operator が Streams for Apache Kafka カスタムリソースの監視と管理に使用するアクセス権。

strimzi-kafka-broker

ラックアウェアネスが使用されている場合に、Kafka ブローカーが OpenShift ワーカーノードからトポロジーラベルを取得できるようにするアクセス権。

strimzi-entity-operator

Kafka ユーザーとトピックを管理するためにトピックおよびユーザー Operator によって使用されるアクセス権。

strimzi-kafka-client

ラックアウェアネスが使用されている場合に、Kafka Connect、MirrorMaker (1 および 2)、および Kafka Bridge が OpenShift ワーカーノードからトポロジーラベルを取得できるようにするアクセス権限。

1.2.2.3. ClusterRoleBinding リソース

Cluster Operator は、ClusterRoleBinding および RoleBinding リソースを使用して、ClusterRoleServiceAccount に関連付けます。クラスターロールバインディングは、クラスタースコープのリソースを含むクラスターロールで必要です。

表1.4 ClusterRoleBinding リソース
名前説明

strimzi-cluster-operator

Cluster Operator に strimzi-cluster-operator-global クラスターロールの権限を付与します。

strimzi-cluster-operator-kafka-broker-delegation

Cluster Operator に strimzi-entity-operator クラスターロールからの権限を付与します。

strimzi-cluster-operator-kafka-client-delegation

Cluster Operator に strimzi-kafka-client クラスターロールからの権限を付与します。

表1.5 RoleBinding リソース
名前説明

strimzi-cluster-operator

Cluster Operator に strimzi-cluster-operator-namespaced クラスターロールからの権限を付与します。

strimzi-cluster-operator-leader-election

Cluster Operator に strimzi-cluster-operator-leader-election クラスターロールからの権限を付与します。

strimzi-cluster-operator-watched

Cluster Operator に strimzi-cluster-operator-watched クラスターロールからの権限を付与します。

strimzi-cluster-operator-entity-operator-delegation

Cluster Operator に strimzi-cluster-operator-entity-operator-delegation クラスターロールからの権限を付与します。

1.2.2.4. ServiceAccount リソース

Cluster Operator は strimzi-cluster-operator ServiceAccount を使用して実行されます。このサービスアカウントは、オペランドを管理するために必要な特権を付与します。Cluster Operator は、追加の ClusterRoleBinding リソースと RoleBinding リソースを作成して、これらの RBAC 権限の一部をオペランドに委任します。

各オペランドは、Cluster Operator によって作成される独自のサービスアカウントを使用します。これにより、Cluster Operator は最小特権の原則に従い、本当に必要なアクセス権のみをオペランドに与えることができます。

表1.6 ServiceAccount リソース
名前ユーザー

<cluster_name>-zookeeper

ZooKeeper Pod

<cluster_name>-kafka

Kafka ブローカー Pod

<cluster_name>-entity-operator

Entitiy Operator

<cluster_name>-cruise-control

Cruise Control Pod

<cluster_name>-kafka-exporter

Kafka Exporter Pod

<cluster_name>-connect

Kafka Connect Pod

<cluster_name>-mirror-maker

MirrorMaker Pod

<cluster_name>-mirrormaker2

MirrorMaker 2 Pod

<cluster_name>-bridge

Kafka Bridge Pod

1.2.3. Pod リソースの管理

StrimziPodSet カスタムリソースは、Streams for Apache Kafka が Kafka Pod、Kafka Connect Pod、および MirrorMaker 2 Pod を作成および管理するために使用します。ZooKeeper を使用している場合、ZooKeeper Pod も StrimziPodSet リソースを使用して作成および管理されます。

StrimziPodSet リソースを作成、更新、削除することはできません。StrimziPodSet カスタムリソースは内部で使用され、リソースの管理は Cluster Operator のみが行います。したがって、Pod が起動しなかったり、Kafka クラスターが使用できなくなったりする可能性を避けるために、Cluster Operator が適切に実行されている必要があります。

注記

OpenShift Deployment リソースは、他のコンポーネント (Kafka Bridge、Kafka Exporter、Cruise Control、(非推奨) MirrorMaker 1、User Operator、および Topic Operator) の Pod の作成と管理に使用されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.