6.2. Cluster Operator のデプロイ
Cluster Operator は、OpenShift クラスター内で Kafka クラスターのデプロイおよび管理を行います。
Cluster Operator の稼働中に、Kafka リソースの更新に対する監視が開始されます。
デフォルトでは、Cluster Operator の単一のレプリカがデプロイされます。リーダーの選択でレプリカを追加し、中断が発生した場合に追加の Cluster Operator がスタンバイ状態になるようにすることができます。詳細は、「リーダーの選択による複数の Cluster Operator レプリカの実行」 を参照してください。
6.2.1. Cluster Operator が監視する namespace の指定
Cluster Operator は、Kafka リソースがデプロイされている namespace の更新を監視します。Cluster Operator をデプロイするときは、OpenShift クラスター内で監視する namespace を指定します。次の namespace を指定できます。
- 選択された単一の namespace (Cluster Operator を含む同じ namespace)
- 複数の選択された namespace
- クラスター内のすべての namespace
選択した複数の namespace を監視すると、処理オーバーヘッドが増加するため、パフォーマンスに最も大きな影響を与えます。namespace の監視のパフォーマンスを最適化するには、通常、単一の namespace を監視するか、クラスター全体を監視することが推奨されます。単一の namespace を監視すると、namespace 固有のリソースを集中的に監視することができますが、すべての namespace を監視すると、すべての namespace にわたるクラスターのリソースの包括的なビューが提供されます。
Cluster Operator では、以下のリソースの変更が監視されます。
-
Kafka クラスターの
Kafka
。 -
Kafka Connect クラスターの
KafkaConnect
。 -
Kafka Connect クラスターでコネクターを作成および管理するための
KafkaConnector
。 -
Kafka MirrorMaker インスタンスの
KafkaMirrorMaker
。 -
KafkaMirrorMaker2
(Kafka MirrorMaker 2 インスタンスの場合)。 -
Kafka Bridge インスタンスの
KafkaBridge
。 -
Cruise Control の最適化リクエストの
KafkaRebalance
。
OpenShift クラスターでこれらのリソースの 1 つが作成されると、Operator がクラスターの詳細をリソースから取得します。さらに、Deployment、Pod、Service、および ConfigMap などの必要な OpenShift リソースが作成され、リソースの新しいクラスターの作成が開始されます。
Kafka リソースが更新されるたびに、リソースのクラスターを設定する OpenShift リソースで該当する更新が Operator によって実行されます。
リソースは、パッチを適用するか削除してから、再作成して、目的とするクラスターの状態を、リソースのクラスターに反映させます。この操作は、サービスの中断を引き起こすローリング更新の原因となる可能性があります。
リソースが削除されると、Operator によってクラスターがアンデプロイされ、関連する OpenShift リソースがすべて削除されます。
Cluster Operator は OpenShift クラスター内の 1 つ、複数、またはすべての namespace を監視できますが、Topic Operator と User Operator は単一の namespace 内の KafkaTopic
リソースと KafkaUser
リソースを監視します。詳細は、「OpenShift namespace 内の Streams for Apache Kafka リソースの監視」 を参照してください。
6.2.2. 単一の namespace を監視対象とする Cluster Operator のデプロイメント
この手順では、OpenShift クラスターの単一の namespace で Streams for Apache Kafka リソースを監視するように Cluster Operator をデプロイする方法を説明します。
前提条件
-
CustomResourceDefinition
および RBAC (ClusterRole
およびRoleBinding
) リソースを作成および管理する権限を持つアカウント。
手順
Cluster Operator がインストールされる namespace を使用するように、Streams for Apache Kafka インストールファイルを編集します。
たとえば、この手順では Cluster Operator は
my-cluster-operator-namespace
という namespace にインストールされます。Linux の場合は、以下を使用します。
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
MacOS の場合は、以下を使用します。
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
Cluster Operator をデプロイします。
oc create -f install/cluster-operator -n my-cluster-operator-namespace
デプロイメントのステータスを確認します。
oc get deployments -n my-cluster-operator-namespace
デプロイメント名と準備状態が表示されている出力
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1
READY
は、Ready/expected 状態のレプリカ数を表示します。AVAILABLE
出力に1
が表示されれば、デプロイメントは成功しています。
6.2.3. 複数の namespace を監視対象とする Cluster Operator のデプロイメント
この手順では、OpenShift クラスターの複数の namespace にまたがって Streams for Apache Kafka リソースを監視するように Cluster Operator をデプロイする方法を説明します。
前提条件
-
CustomResourceDefinition
および RBAC (ClusterRole
およびRoleBinding
) リソースを作成および管理する権限を持つアカウント。
手順
Cluster Operator がインストールされる namespace を使用するように、Streams for Apache Kafka インストールファイルを編集します。
たとえば、この手順では Cluster Operator は
my-cluster-operator-namespace
という namespace にインストールされます。Linux の場合は、以下を使用します。
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
MacOS の場合は、以下を使用します。
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml
ファイルを編集し、Cluster Operator が監視するすべての namespace のリストをSTRIMZI_NAMESPACE
環境変数に追加します。たとえば、この手順では Cluster Operator は
watched-namespace-1
、watched-namespace-2
、およびwatched-namespace-3
という namespace を監視します。apiVersion: apps/v1 kind: Deployment spec: # ... template: spec: serviceAccountName: strimzi-cluster-operator containers: - name: strimzi-cluster-operator image: registry.redhat.io/amq-streams/strimzi-rhel9-operator:2.7.0 imagePullPolicy: IfNotPresent env: - name: STRIMZI_NAMESPACE value: watched-namespace-1,watched-namespace-2,watched-namespace-3
リストした各 namespace に
RoleBindings
をインストールします。この例では、コマンドの
watched-namespace
を前述のステップでリストした namespace に置き換えます。watched-namespace-1
、watched-namespace-2
、およびwatched-namespace-3
にも、繰り返し同様の操作を実行します。oc create -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace> oc create -f install/cluster-operator/023-RoleBinding-strimzi-cluster-operator.yaml -n <watched_namespace> oc create -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n <watched_namespace>
Cluster Operator をデプロイします。
oc create -f install/cluster-operator -n my-cluster-operator-namespace
デプロイメントのステータスを確認します。
oc get deployments -n my-cluster-operator-namespace
デプロイメント名と準備状態が表示されている出力
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1
READY
は、Ready/expected 状態のレプリカ数を表示します。AVAILABLE
出力に1
が表示されれば、デプロイメントは成功しています。
6.2.4. すべての namespace を対象とする Cluster Operator のデプロイメント
この手順では、OpenShift クラスターのすべての namespace にまたがって Streams for Apache Kafka リソースを監視するように Cluster Operator をデプロイする方法を説明します。
このモードで実行している場合、Cluster Operator は、新規作成された namespace でクラスターを自動的に管理します。
前提条件
-
CustomResourceDefinition
および RBAC (ClusterRole
およびRoleBinding
) リソースを作成および管理する権限を持つアカウント。
手順
Cluster Operator がインストールされる namespace を使用するように、Streams for Apache Kafka インストールファイルを編集します。
たとえば、この手順では Cluster Operator は
my-cluster-operator-namespace
という namespace にインストールされます。Linux の場合は、以下を使用します。
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
MacOS の場合は、以下を使用します。
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yaml
install/cluster-operator/060-Deployment-strimzi-cluster-operator.yaml
ファイルを編集し、STRIMZI_NAMESPACE
環境変数の値を*
に設定します。apiVersion: apps/v1 kind: Deployment spec: # ... template: spec: # ... serviceAccountName: strimzi-cluster-operator containers: - name: strimzi-cluster-operator image: registry.redhat.io/amq-streams/strimzi-rhel9-operator:2.7.0 imagePullPolicy: IfNotPresent env: - name: STRIMZI_NAMESPACE value: "*" # ...
クラスター全体ですべての namespace にアクセスできる権限を Cluster Operator に付与する
ClusterRoleBindings
を作成します。oc create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator oc create clusterrolebinding strimzi-cluster-operator-watched --clusterrole=strimzi-cluster-operator-watched --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator oc create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-cluster-operator-namespace:strimzi-cluster-operator
Cluster Operator を OpenShift クラスターにデプロイします。
oc create -f install/cluster-operator -n my-cluster-operator-namespace
デプロイメントのステータスを確認します。
oc get deployments -n my-cluster-operator-namespace
デプロイメント名と準備状態が表示されている出力
NAME READY UP-TO-DATE AVAILABLE strimzi-cluster-operator 1/1 1 1
READY
は、Ready/expected 状態のレプリカ数を表示します。AVAILABLE
出力に1
が表示されれば、デプロイメントは成功しています。