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 をデプロイするときに、監視する namespace を指定します。次の namespace を指定できます。
- 単一の namespace (Cluster Operator が含まれる同じ namespace)
- 複数の namespace
- すべての namespace
Cluster Operator は、OpenShift クラスターの 1 つ、複数、またはすべての namespace を監視できます。Topic Operator および User Operator は、単一の namespace で KafkaTopic および KafkaUser リソースを監視します。詳細は、AMQ Streams Operator を使用した namespace の監視 を参照してください。
Cluster Operator では、以下のリソースの変更が監視されます。
-
Kafka クラスターの
Kafka。 -
Kafka Connect クラスターの
KafkaConnect。 -
Kafka Connect クラスターでコネクターを作成および管理するための
KafkaConnector。 -
Kafka MirrorMaker インスタンスの
KafkaMirrorMaker。 -
Kafka MirrorMaker 2.0 インスタンスの
KafkaMirrorMaker2。 -
Kafka Bridge インスタンスの
KafkaBridge。 -
Cruise Control の最適化リクエストの
KafkaRebalance。
OpenShift クラスターでこれらのリソースの 1 つが作成されると、Operator がクラスターの詳細をリソースから取得します。さらに、StatefulSet、Service、および ConfigMap などの必要な OpenShift リソースが作成され、リソースの新しいクラスターの作成が開始されます。
Kafka リソースが更新されるたびに、リソースのクラスターを設定する OpenShift リソースで該当する更新が Operator によって実行されます。
リソースは、パッチを適用するか削除してから、再作成して、目的とするクラスターの状態を、リソースのクラスターに反映させます。この操作は、サービスの中断を引き起こすローリング更新の原因となる可能性があります。
リソースが削除されると、Operator によってクラスターがアンデプロイされ、関連する OpenShift リソースがすべて削除されます。
6.2.2. 単一の namespace を監視対象とする Cluster Operator のデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
この手順では、OpenShift クラスターの単一の namespace で AMQ Streams リソースを監視する Cluster Operator をデプロイする方法を説明します。
前提条件
-
CustomResourceDefinitionおよび RBAC (ClusterRoleおよびRoleBinding) リソースを作成および管理する権限を持つアカウント。
手順
Cluster Operator のインストール先の namespace を使用するように、AMQ Streams インストールファイルを編集します。
たとえば、この手順では Cluster Operator は
my-cluster-operator-namespaceという namespace にインストールされます。Linux の場合は、以下を使用します。
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlMacOS の場合は、以下を使用します。
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlCluster 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 1READYは、Ready/expected 状態のレプリカ数を表示します。AVAILABLE出力に1が表示されれば、デプロイメントは成功しています。
6.2.3. 複数の namespace を監視対象とする Cluster Operator のデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
この手順では、OpenShift クラスターの複数の namespace で AMQ Streams リソースを監視する Cluster Operator をデプロイする方法を説明します。
前提条件
-
CustomResourceDefinitionおよび RBAC (ClusterRoleおよびRoleBinding) リソースを作成および管理する権限を持つアカウント。
手順
Cluster Operator のインストール先の namespace を使用するように、AMQ Streams インストールファイルを編集します。
たとえば、この手順では Cluster Operator は
my-cluster-operator-namespaceという namespace にインストールされます。Linux の場合は、以下を使用します。
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlMacOS の場合は、以下を使用します。
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlinstall/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/amq7/amq-streams-rhel8-operator:2.3.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 1READYは、Ready/expected 状態のレプリカ数を表示します。AVAILABLE出力に1が表示されれば、デプロイメントは成功しています。
6.2.4. すべての namespace を対象とする Cluster Operator のデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
この手順では、OpenShift クラスターのすべての namespace で AMQ Streams リソースを監視する Cluster Operator をデプロイする方法を説明します。
このモードで実行している場合、Cluster Operator は、新規作成された namespace でクラスターを自動的に管理します。
前提条件
-
CustomResourceDefinitionおよび RBAC (ClusterRoleおよびRoleBinding) リソースを作成および管理する権限を持つアカウント。
手順
Cluster Operator のインストール先の namespace を使用するように、AMQ Streams インストールファイルを編集します。
たとえば、この手順では Cluster Operator は
my-cluster-operator-namespaceという namespace にインストールされます。Linux の場合は、以下を使用します。
sed -i 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlMacOS の場合は、以下を使用します。
sed -i '' 's/namespace: .*/namespace: my-cluster-operator-namespace/' install/cluster-operator/*RoleBinding*.yamlinstall/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/amq7/amq-streams-rhel8-operator:2.3.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-operatorCluster 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 1READYは、Ready/expected 状態のレプリカ数を表示します。AVAILABLE出力に1が表示されれば、デプロイメントは成功しています。