インフラストラクチャーノードでの GitOps ワークロード
インフラストラクチャーノードでの GitOps コントロールプレーンワークロードの実行
概要
第1章 インフラストラクチャーノードでの GitOps コントロールプレーンワークロードの実行 リンクのコピーリンクがクリップボードにコピーされました!
インフラストラクチャーノードを使用して、2 つの主要な目的でインフラストラクチャーワークロードを分離できます。
- サブスクリプションの数に関連する請求コストを防ぐ目的
- メンテナンスと管理を分離させる目的
OpenShift Container Platform を使用して、インフラストラクチャーノードで GitOps コントロールプレーンのワークロードを実行できます。これには、デフォルトで openshift-gitops namespace 内の Red Hat OpenShift GitOps Operator によって作成された Operator Pod とコントロールプレーンワークロードが含まれます (この名前空間内のデフォルトの Argo CD インスタンスも含まれます)。
GitOps コントロールプレーンワークロードを使用すると、クラスター内に複数の分離された Argo CD インスタンスを作成することで、インフラストラクチャーワークロードを安全かつ宣言的に分離でき、Argo CD インスタンスの機能を完全に制御できます。さらに、これらの Argo CD インスタンスを複数の開発者名前空間にわたって宣言的に管理できます。テイントを使用すると、インフラストラクチャーコンポーネントのみがこれらのノードで実行されるようにできます。
ユーザー namespace にインストールされたその他の Argo CD インスタンスは、インフラストラクチャーノードで実行する資格がありません。
1.1. GitOps コントロールプレーンワークロードのインフラストラクチャーノードへの移行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift GitOps によってインストールされた GitOps コントロールプレーンワークロードをインフラストラクチャーノードに移動できます。移動できるコントロールプレーンのワークロードは次のとおりです。
-
kam deployment -
cluster deployment(バックエンドサービス) -
openshift-gitops-applicationset-controller deployment -
openshift-gitops-dex-server deployment -
openshift-gitops-redis deployment -
openshift-gitops-redis-ha-haproxy deployment -
openshift-gitops-repo-sever deployment -
openshift-gitops-server deployment -
openshift-gitops-application-controller statefulset -
openshift-gitops-redis-server statefulset
手順
以下のコマンドを実行して、既存のノードにインフラストラクチャーのラベルを付けます。
oc label node <node-name> node-role.kubernetes.io/infra=
$ oc label node <node-name> node-role.kubernetes.io/infra=Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitOpsServiceカスタムリソース (CR) を編集して、インフラストラクチャーノードセレクターを追加します。oc edit gitopsservice -n openshift-gitops
$ oc edit gitopsservice -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow GitOpsServiceCR ファイルで、runOnInfraフィールドをspecセクションに追加し、trueに設定します。このフィールドは、openshift-gitopsnamespace のコントロールプレーンワークロードをインフラストラクチャーノードに移動します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: テイントを適用し、インフラストラクチャーノードでワークロードを分離し、他のワークロードがそれらのノードでスケジュールされないようにします。
oc adm taint nodes -l node-role.kubernetes.io/infra
$ oc adm taint nodes -l node-role.kubernetes.io/infra infra=reserved:NoSchedule infra=reserved:NoExecuteCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: テイントをノードに適用する場合は、容認を
GitOpsServiceCR に追加できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ワークロードが Red Hat OpenShift GitOps namespace のインフラストラクチャーノードでスケジュールされていることを確認するには、Pod 名のいずれかをクリックし、ノードセレクター および 容認 が追加されていることを確認します。
デフォルトの Argo CD CR の手動で追加された ノードセレクター および 容認 は、GitOpsService CR のトグルおよび容認によって上書きされます。
1.2. GitOps Operator Pod のインフラストラクチャーノードへの移行 リンクのコピーリンクがクリップボードにコピーされました!
GitOps Operator Pod をインフラストラクチャーノードに移動できます。
前提条件
- Red Hat OpenShift GitOps Operator を OpenShift Container Platform クラスターにインストールされてる。
-
cluster-admin権限でクラスターにアクセスできる。
手順
次のコマンドを実行して、既存のノードにインフラストラクチャーノードとしてラベルを付けます。
oc label node <node_name> node-role.kubernetes.io/infra=
$ oc label node <node_name> node-role.kubernetes.io/infra=1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <node_name> は、インフラストラクチャーノードとしてラベル付けするノードの名前に置き換えます。
出力例
node/<node_name> labeled
node/<node_name> labeledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、Red Hat OpenShift GitOps
Subscriptionリソースを編集します。oc -n openshift-gitops-operator edit subscription openshift-gitops-operator
$ oc -n openshift-gitops-operator edit subscription openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow nodeSelectorとtolerationsをSubscriptionリソースのspec.configフィールドに追加します。Subscription の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
subscription.operators.coreos.com/openshift-gitops-operator edited
subscription.operators.coreos.com/openshift-gitops-operator editedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、GitOps Operator Pod がインフラストラクチャーノードで実行されていることを確認します。
oc -n openshift-gitops-operator get po -owide
$ oc -n openshift-gitops-operator get po -owideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES openshift-gitops-operator-controller-manager-abcd 2/2 Running 0 11m 94.142.44.126 <node_name> <none> <none>
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES openshift-gitops-operator-controller-manager-abcd 2/2 Running 0 11m 94.142.44.126 <node_name> <none> <none>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- リストされた
<node_name>がnode-role.kubernetes.io/infraラベルを持つノードであることを確認します。