1.2. AMQ Streams の Operator
AMQ Streams Operator は、専用OpenShift で Kafka を効果的に管理するための専門的な運用知識をベースに特別に構築されています。各 Operator は個別の関数を実行します。
- Cluster Operator
- Cluster Operator は、OpenShift での Apache Kafka クラスターのデプロイメントおよび管理を処理します。Kafka ブローカーおよびその他の Kafka コンポーネントおよびリソースの設定を自動化します。
- Topic Operator
- Topic Operator は、Kafka クラスター内でのトピックの作成、設定、および削除を管理します。
- User Operator
- User Operator は、Kafka ブローカーへのアクセスを必要とする Kafka ユーザーを管理します。
AMQ Streams をデプロイする場合に、最初に 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 での AMQ Streams リソースの監視 リンクのコピーリンクがクリップボードにコピーされました!
Operator は、OpenShift namespace で AMQ Streams リソースを監視および管理します。Cluster Operator は、OpenShift クラスター内の単一の名前空間、複数の名前空間、またはすべての名前空間を監視できます。Topic Operator と User Operator は、単一の名前空間を監視できます。
-
Cluster Operator は
Kafkaリソースを監視します -
Topic Operator は
KafkaTopicリソースを監視します -
User Operator は
KafkaUserリソースを監視します
Topic Operator と User Operator は、名前空間内の単一の Kafka クラスターのみを監視できます。また、単一の Kafka クラスターにのみ接続できます。
複数のトピックオペレーターが同じ名前空間を監視すると、名前の衝突やトピックの削除が発生する可能性があります。これは、各 Kafka クラスターが同じ名前 (__consumer_offsets など) を持つ Kafka トピックを使用するためです。特定の名前空間を監視するトピック Operator が 1 つだけであることを確認してください。
単一の名前空間で複数の User Operator を使用する場合、特定のユーザー名を持つユーザーは複数の Kafka クラスターに存在できます。
Cluster Operator を使用して Topic Operator と User Operator をデプロイすると、デフォルトで Cluster Operator によってデプロイされた Kafka クラスターが監視されます。Operator 設定で watchedNamespace を使用して名前空間を指定することもできます。
各 Operator のスタンドアロンデプロイの場合、設定で監視する名前空間と Kafka クラスターへの接続を指定します。
1.2.2. RBAC リソースの管理 リンクのコピーリンクがクリップボードにコピーされました!
Cluster Operator は、OpenShift リソースへのアクセスが必要な AMQ Streams コンポーネントのロールベースのアクセス制御 (RBAC) リソースを作成および管理します。
Cluster Operator が機能するには、Kafka および KafkaConnect などの Kafka リソースや ConfigMap、Pod、Deployment、Service などの管理リソースと対話するために OpenShift クラスター内でパーミッションが必要です。
権限は、以下の OpenShift RBAC リソースを使用して指定します。
-
ServiceAccount -
RoleおよびClusterRole -
RoleBindingおよびClusterRoleBinding
1.2.2.1. AMQ Streams コンポーネントへの権限の委譲 リンクのコピーリンクがクリップボードにコピーされました!
Cluster Operator は strimzi-cluster-operator という名前のサービスアカウントで実行されます。このアカウントには、クラスターロールが割り当てられ、AMQ Streams コンポーネントの 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 が権限を委任するには、すべてのクラスターロールが必要です。
| 名前 | 説明 |
|---|---|
|
| Cluster Operator がオペランドのデプロイと管理に使用する名前空間スコープのリソースへのアクセス権。 |
|
| Cluster Operator がオペランドのデプロイと管理に使用するクラスタースコープのリソースへのアクセス権。 |
|
| Cluster Operator がリーダーの選出に使用するアクセス権。 |
|
| AMQ Streams カスタムリソースを監視および管理するために Cluster Operator によって使用されるアクセス権。 |
|
| ラックアウェアネスが使用されている場合に、Kafka ブローカーが OpenShift ワーカーノードからトポロジーラベルを取得できるようにするアクセス権。 |
|
| Kafka ユーザーとトピックを管理するためにトピックおよびユーザー Operator によって使用されるアクセス権。 |
|
| ラックアウェアネスが使用されている場合に、Kafka Connect、MirrorMaker (1 および 2)、および Kafka Bridge が OpenShift ワーカーノードからトポロジーラベルを取得できるようにするアクセス権限。 |
1.2.2.3. ClusterRoleBinding リソース リンクのコピーリンクがクリップボードにコピーされました!
Cluster Operator は、ClusterRoleBinding および RoleBinding リソースを使用して、ClusterRole を ServiceAccount に関連付けます。クラスターロールバインディングは、クラスタースコープのリソースを含むクラスターロールで必要です。
| 名前 | 説明 |
|---|---|
|
|
Cluster Operator に |
|
|
Cluster Operator に |
|
|
Cluster Operator に |
| 名前 | 説明 |
|---|---|
|
|
Cluster Operator に |
|
|
Cluster Operator に |
|
|
Cluster Operator に |
|
|
Cluster Operator に |
1.2.2.4. ServiceAccount リソース リンクのコピーリンクがクリップボードにコピーされました!
Cluster Operator は strimzi-cluster-operator ServiceAccount を使用して実行されます。このサービスアカウントは、オペランドを管理するために必要な特権を付与します。Cluster Operator は、追加の ClusterRoleBinding リソースと RoleBinding リソースを作成して、これらの RBAC 権限の一部をオペランドに委任します。
各オペランドは、Cluster Operator によって作成される独自のサービスアカウントを使用します。これにより、Cluster Operator は最小特権の原則に従い、本当に必要なアクセス権のみをオペランドに与えることができます。
| 名前 | ユーザー |
|---|---|
|
| ZooKeeper Pod |
|
| Kafka ブローカー Pod |
|
| Entitiy Operator |
|
| Cruise Control Pod |
|
| Kafka Exporter Pod |
|
| Kafka Connect Pod |
|
| MirrorMaker Pod |
|
| MirrorMaker 2 Pod |
|
| Kafka Bridge Pod |