宣言型クラスター設定
OpenShift GitOps を使用してクラスター設定で OpenShift クラスターを設定し、GitOps CLI を使用してデフォルトモードとコードモードでアプリケーションを作成および同期する
概要
第1章 クラスター設定を使用したアプリケーションのデプロイによる OpenShift クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift GitOps では、Argo CD を、クラスターのカスタム設定が含まれるアプリケーションと Git ディレクトリーの内容を再帰的に同期するように設定することができます。
1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform クラスターに管理者としてログインしている。
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
1.2. Argo CD インスタンスを使用してクラスタースコープのリソースの管理 リンクのコピーリンクがクリップボードにコピーされました!
クラスタースコープのリソースを管理するには、Red Hat OpenShift GitOps Operator の既存の Subscription
オブジェクトを更新し、Argo CD インスタンスの名前空間を spec
セクションの ARGOCD_CLUSTER_CONFIG_NAMESPACES
環境変数に追加します。
手順
- Web コンソールの Administrator パースペクティブで、Operators → Installed Operators → Red Hat OpenShift GitOps → Subscription に移動します。
- Actions リストをクリックし、Edit Subscription をクリックします。
openshift-gitops-operator サブスクリプションの詳細ページの YAML タブで、Argo CD インスタンスの namespace を仕様セクションの
ARGOCD_CLUSTER_CONFIG_NAMESPACES
環境変数に追加して、spec
セクションのSubscription
YAML ファイルを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save、Reload を順にクリックします。
Argo CD インスタンスがクラスタースコープのリソースを管理するクラスターロールで設定されていることを確認するには、次の手順を実行します。
- User Management → Roles に移動し、Filter リストから Cluster-wide Roles を選択します。
Search by name フィールドを使用して、
argocd-application-controller
を検索します。Roles ページには、作成されたクラスターロールが表示されます。
ヒントあるいは、OpenShift CLI で次のコマンドを実行します。
oc auth can-i create oauth -n openshift-gitops --as system:serviceaccount:openshift-gitops:openshift-gitops-argocd-application-controller
oc auth can-i create oauth -n openshift-gitops --as system:serviceaccount:openshift-gitops:openshift-gitops-argocd-application-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力
yes
は、Argo インスタンスがクラスタースコープのリソースを管理するクラスターロールで設定されていることを確認します。それ以外の場合は、設定を確認し、必要に応じて必要な手順を実行します。
1.3. Argo CD インスタンスのデフォルトの権限 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Argo CD インスタンスには次の権限があります。
-
Argo CD インスタンスには、それがデプロイされている namespace 内のリソースのみを管理する
admin
権限があります。たとえば、foo namespace にデプロイされた Argo CD インスタンスには、その namespace に対してのみリソースを管理するadmin
権限があります。 Argo CD が適切に機能するには、リソースに対するクラスター全体の
read
権限が必要であるため、Argo CD には次のクラスタースコープのアクセス許可があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Argo CD が実行している
argocd-server
とargocd-application-controller
コンポーネントで使用されるクラスターのロールを編集して、write
権限が Argo CD で管理したい namespace とリソースのみに制限できます。oc edit clusterrole argocd-server oc edit clusterrole argocd-application-controller
$ oc edit clusterrole argocd-server $ oc edit clusterrole argocd-application-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. クラスターレベルでの Argo CD インスタンスの実行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift GitOps Operator によってインストールされるデフォルトの Argo CD インスタンスおよび付随するコントローラーは、単純な設定の切り替えを設定して、クラスターのインフラストラクチャーノードで実行できるようになりました。
手順
既存のノードにラベルを付けます。
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 オプション: 必要な場合は、テイントを適用し、インフラストラクチャーノードでワークロードを分離し、他のワークロードがそれらのノードでスケジュールされないようにすることもできます。
oc adm taint nodes -l node-role.kubernetes.io/infra \ infra=reserved:NoSchedule infra=reserved:NoExecute
$ oc adm taint nodes -l node-role.kubernetes.io/infra \ infra=reserved:NoSchedule infra=reserved:NoExecute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitOpsService
カスタムリソースにrunOnInfra
トグルを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: テイントがノードに追加された場合は、
tolerations
をGitOpsService
カスタムリソースに追加します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
コンソール UI の Pod を Pods → Pod details で表示して、
openshift-gitops
namespace のワークロードがインフラストラクチャーノードでスケジュールされていることを確認します。
デフォルトの Argo CD カスタムリソースに手動で追加された nodeSelectors
および tolerations
は、GitOpsService
カスタムリソースのトグルおよび tolerations
によって上書きされます。
1.5. Argo CD ダッシュボードを使用したアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
Argo CD は、アプリケーションを作成できるダッシュボードを提供します。
このサンプルワークフローでは、cluster
ディレクトリーの内容を cluster-configs
アプリケーションに対して再帰的に同期するように Argo CD を設定するプロセスを説明します。このディレクトリーは、Web コンソールの
メニューに Red Hat Developer Blog - Kubernetes へのリンクを追加する OpenShift Container Platform Web コンソールクラスター設定を定義します。また、クラスターの namespace
spring-petclinic
を定義します。
前提条件
- OpenShift Container Platform クラスターに管理者としてログインしている。
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
- Argo CD インスタンスにログインしている。
手順
- Argo CD ダッシュボードで、NEW APP をクリックして新規の Argo CD アプリケーションを追加します。
このワークフローでは、以下の設定で cluster-configs アプリケーションを作成します。
- アプリケーション名
-
cluster-configs
- プロジェクト
-
default
- 同期ポリシー
-
Manual
- リポジトリー URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started
- リビジョン
-
HEAD
- パス
-
cluster
- 宛先
-
https://kubernetes.default.svc
- namespace
-
spring-petclinic
- ディレクトリーの再帰処理
-
checked
- CREATE をクリックしてアプリケーションを作成します。
- Web コンソールの Administrator パースペクティブを開き、Administration → Namespaces を展開します。
-
namespace を検索、選択してから Label フィールドに
argocd.argoproj.io/managed-by=openshift-gitops
を入力し、openshift-gitops
namespace にある Argo CD インスタンスが namespace を管理できるようにします。
1.6. oc ツールを使用したアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
oc
ツールを使用して、ターミナルで Argo CD アプリケーションを作成できます。
前提条件
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
- Argo CD インスタンスにログインしている。
手順
サンプルアプリケーション をダウンロードします。
git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
$ git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションを作成します。
oc create -f openshift-gitops-getting-started/argo/app.yaml
$ oc create -f openshift-gitops-getting-started/argo/app.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get
コマンドを実行して、作成されたアプリケーションを確認します。oc get application -n openshift-gitops
$ oc get application -n openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションがデプロイされている namespace にラベルを追加し、
openshift-gitops
namespace の Argo CD インスタンスが管理できるようにします。oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. GitOps CLI を使用したデフォルトモードでのアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
GitOps argocd
CLI を使用して、default モードでアプリケーションを作成できます。
このサンプルワークフローでは、cluster
ディレクトリーの内容を cluster-configs
アプリケーションに対して再帰的に同期するように Argo CD を設定するプロセスを説明します。このディレクトリーは、OpenShift Container Platform クラスター設定とクラスター上の spring-petclinic
namespace を定義します。
前提条件
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 -
Red Hat OpenShift GitOps
argocd
CLI がインストールされている。 - Argo CD インスタンスにログインしている。
手順
Argo CD サーバーの
admin
アカウントのパスワードを取得します。ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
$ ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Argo CD サーバーの URL を取得します。
SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
$ SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin
アカウントのパスワードを使用して Argo CD サーバーにログインし、一重引用符で囲みます。重要パスワードを一重引用符で囲むと、
$
などの特殊文字がシェルによって誤って解釈されなくなります。パスワードのリテラル値を囲むには常に一重引用符を使用してください。argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
$ argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
$ argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのアプリケーションを表示して、
argocd
コマンドをデフォルトモードで実行できることを確認します。argocd app list
$ argocd app list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定が正しい場合は、既存のアプリケーションが次のヘッダーとともにリストされます。
出力例
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトモードでアプリケーションを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshif-gitops
Argo CD インスタンスが管理するspring-petclinic
宛先 namespace にラベルを付けます。oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
$ oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用可能なアプリケーションをリスト表示して、アプリケーションが正常に作成されたことを確認します。
argocd app list
$ argocd app list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-configs
の Argo CD アプリケーションはHealthy
ステータスであっても、sync ポリシーがnone
であるため、自動的に同期されず、OutOfSync
ステータスのままになります。
1.8. GitOps CLI を使用したコアモードでのアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
GitOps argocd
CLI を使用して、core
モードでアプリケーションを作成できます。
このサンプルワークフローでは、cluster
ディレクトリーの内容を cluster-configs
アプリケーションに対して再帰的に同期するように Argo CD を設定するプロセスを説明します。このディレクトリーは、OpenShift Container Platform クラスター設定とクラスター上の spring-petclinic
namespace を定義します。
前提条件
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 -
Red Hat OpenShift GitOps
argocd
CLI がインストールされている。
手順
oc
CLI ツールを使用して OpenShift Container Platform クラスターにログインします。oc login -u <username> -p <password> <server_url>
$ oc login -u <username> -p <password> <server_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
$ oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテキストが
kubeconfig
ファイルで正しく設定されているかどうかを確認します。oc config current-context
$ oc config current-context
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在のコンテキストのデフォルトの namespace を
openshift-gitops
に設定します。oc config set-context --current --namespace openshift-gitops
$ oc config set-context --current --namespace openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の環境変数を設定して、Argo CD コンポーネント名をオーバーライドします。
export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
$ export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのアプリケーションを一覧表示して、
core
モードでargocd
コマンドを実行できることを確認します。argocd app list --core
$ argocd app list --core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定が正しい場合は、既存のアプリケーションが次のヘッダーとともにリストされます。
出力例
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow core
モードでアプリケーションを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshif-gitops
Argo CD インスタンスが管理するspring-petclinic
宛先 namespace にラベルを付けます。oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
$ oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用可能なアプリケーションをリスト表示して、アプリケーションが正常に作成されたことを確認します。
argocd app list --core
$ argocd app list --core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-configs
の Argo CD アプリケーションはHealthy
ステータスであっても、sync ポリシーがnone
であるため、自動的に同期されず、OutOfSync
ステータスのままになります。
1.9. アプリケーションの Git リポジトリーとの同期 リンクのコピーリンクがクリップボードにコピーされました!
Argo CD の同期ポリシーを変更することで、アプリケーションを Git リポジトリーと同期できます。ポリシーを変更すると、クラスター設定の変更が Git リポジトリーからクラスターに自動的に適用されます。
手順
- Argo CD ダッシュボードでは、cluster-configs Argo CD アプリケーションに Missing および OutOfSync のステータスがあることに注意してください。アプリケーションは手動の同期ポリシーで設定されているため、Argo CD はこれを自動的に同期しません。
- cluster-configs タイルの 同期 をクリックし、変更を確認してから、SYNCHRONIZE をクリックします。Argo CD は Git リポジトリーの変更を自動的に検出します。設定が変更されると、Argo CD は cluster-configs のステータスを OutOfSync に変更します。Argo CD の同期ポリシーを変更し、Git リポジトリーからクラスターに変更を自動的に適用できるようにします。
- cluster-configs Argo CD アプリケーションに Healthy および Synced のステータスがあることに注意してください。cluster-configs タイルをクリックし、クラスター上で同期されたリソースおよびそれらのステータスの詳細を確認します。
-
OpenShift Container Platform Web コンソールに移動し、
をクリックして Red Hat Developer Blog - Kubernetes へのリンクが表示されることを確認します。
Project ページに移動し、
spring-petclinic
namespace を検索し、これがクラスターに追加されていることを確認します。クラスター設定がクラスターに正常に同期されます。
1.10. GitOps CLI を使用したデフォルトモードでのアプリケーションの同期 リンクのコピーリンクがクリップボードにコピーされました!
GitOps argocd
CLI を使用して、デフォルトモードでアプリケーションを同期できます。
このサンプルワークフローでは、cluster
ディレクトリーの内容を cluster-configs
アプリケーションに対して再帰的に同期するように Argo CD を設定するプロセスを説明します。このディレクトリーは、OpenShift Container Platform クラスター設定とクラスター上の spring-petclinic
namespace を定義します。
前提条件
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
- Argo CD インスタンスにログインしている。
-
OpenShift CLI (
oc
) がインストールされている。 -
Red Hat OpenShift GitOps
argocd
CLI がインストールされている。
手順
Argo CD サーバーの
admin
アカウントのパスワードを取得します。ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
$ ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Argo CD サーバーの URL を取得します。
SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
$ SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin
アカウントのパスワードを使用して Argo CD サーバーにログインし、一重引用符で囲みます。重要パスワードを一重引用符で囲むと、
$
などの特殊文字がシェルによって誤って解釈されなくなります。パスワードのリテラル値を囲むには常に一重引用符を使用してください。argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
$ argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
$ argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションは
none
sync ポリシーを使用して設定されているため、同期操作を手動でトリガーする必要があります。argocd app sync openshift-gitops/app-cluster-configs
$ argocd app sync openshift-gitops/app-cluster-configs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをリスト表示して、アプリケーションのステータスが
Healthy
およびSynced
であることを確認します。argocd app list
$ argocd app list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.11. GitOps CLI を使用したコアモードでのアプリケーションの同期 リンクのコピーリンクがクリップボードにコピーされました!
GitOps argocd
CLI を使用して、core
モードでアプリケーションを同期できます。
このサンプルワークフローでは、cluster
ディレクトリーの内容を cluster-configs
アプリケーションに対して再帰的に同期するように Argo CD を設定するプロセスを説明します。このディレクトリーは、OpenShift Container Platform クラスター設定とクラスター上の spring-petclinic
namespace を定義します。
前提条件
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 -
Red Hat OpenShift GitOps
argocd
CLI がインストールされている。
手順
oc
CLI ツールを使用して OpenShift Container Platform クラスターにログインします。oc login -u <username> -p <password> <server_url>
$ oc login -u <username> -p <password> <server_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
$ oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテキストが
kubeconfig
ファイルで正しく設定されているかどうかを確認します。oc config current-context
$ oc config current-context
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在のコンテキストのデフォルトの namespace を
openshift-gitops
に設定します。oc config set-context --current --namespace openshift-gitops
$ oc config set-context --current --namespace openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の環境変数を設定して、Argo CD コンポーネント名をオーバーライドします。
export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
$ export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションは
none
sync ポリシーを使用して設定されているため、同期操作を手動でトリガーする必要があります。argocd app sync --core openshift-gitops/app-cluster-configs
$ argocd app sync --core openshift-gitops/app-cluster-configs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをリスト表示して、アプリケーションのステータスが
Healthy
およびSynced
であることを確認します。argocd app list --core
$ argocd app list --core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.12. クラスター設定用の組み込みのアクセス許可 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Argo CD インスタンスには、クラスター Operator、オプションの OLM オペレーター、およびユーザー管理など、特定のクラスタースコープのリソースを管理する権限があります。
Argo CD にはクラスター管理者権限がありません。
Argo CD インスタンスのパーミッション:
リソース | 説明 |
---|---|
リソースグループ | ユーザーまたは管理者の設定 |
| OLM によって管理されるオプションの Operator |
| グループ、ユーザー、およびそれらの権限 |
| クラスター全体のビルド設定、レジストリー設定、およびスケジューラーポリシーを設定するために使用される CVO によって管理されるコントロールプレーン Operator |
| ストレージ |
| コンソールのカスタマイズ |
1.13. クラスター設定のアクセス許可を追加する リンクのコピーリンクがクリップボードにコピーされました!
Argo CD インスタンスにアクセス許可を付与して、クラスター設定を管理できます。追加のアクセス許可を持つクラスターロールを作成し、新しいクラスターロールバインディングを作成して、クラスターロールをサービスアカウントに関連付けます。
前提条件
-
cluster-admin
権限で OpenShift Container Platform クラスターにアクセスでき、Web コンソールにログインしている。 - Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
手順
Web コンソールで、User Management → Roles → Create Role を選択します。以下の
ClusterRole
YAML テンプレートを使用してルールを追加し、追加のパーミッションを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックしてクラスターロールを追加します。
- クラスターのロールバインディングを作成するには、User Management → Role Bindings → Create Binding を選択します。
- Project リストから All Projects を選択します。
- Create binding をクリックします。
- Binding type を Cluster-wide role binding (ClusterRoleBinding) として選択します。
- RoleBinding name の一意の値を入力します。
- ドロップダウンリストから、新しく作成したクラスターロールまたは既存のクラスターロールを選択します。
Subject を ServiceAccount として選択し、サブジェクトの namespace と 名前 を指定します。
-
サブジェクトの namespace:
openshift-gitops
サブジェクトの名前:
openshift-gitops-argocd-application-controller
注記Subject name の値は、クラスターロールおよびクラスターロールバインディングを作成する GitOps コントロールプレーンのコンポーネントによって異なります。
-
サブジェクトの namespace:
Create をクリックします。
ClusterRoleBinding
オブジェクトの YAML ファイルは以下のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.14. Red Hat OpenShift GitOps を使用した OLM Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
クラスター設定の Red Hat OpenShift GitOps は、特定のクラスタースコープのリソースを管理し、クラスター Operator または namespace スコープの OLM Operator のインストールを処理します。
クラスター管理者として、Tekton などの OLM Operator をインストールする必要がある場合を考えてみましょう。OpenShift Container Platform Web コンソールを使用して Tekton Operator を手動でインストールするか、OpenShift CLI を使用して Tekton サブスクリプションと Tekton Operator グループをクラスターに手動でインストールします。
Red Hat OpenShift GitOps は、Kubernetes リソースを Git リポジトリーに配置します。クラスター管理者は、Red Hat OpenShift GitOps を使用して、手動手順を行わずに他の OLM Operator のインストールを管理および自動化できます。たとえば、Red Hat OpenShift GitOps を使用して Tekton サブスクリプションを Git リポジトリーに配置すると、Red Hat OpenShift GitOps はこの Tekton サブスクリプションを Git リポジトリーから自動的に取得し、クラスターに Tekton Operator をインストールします。
1.14.1. クラスタースコープの Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
Operator Lifecycle Manager (OLM) は、クラスタースコープの Operator の openshift-operators
namespace 内のデフォルトの global-operators
Operator グループを使用します。したがって、Gitops リポジトリーで OperatorGroup
リソースを管理する必要はありません。ただし、namespace スコープの Operator の場合は、その namespace で OperatorGroup
リソースを管理する必要があります。
クラスタースコープの Operator をインストールするには、必要な Operator の Subscription
リソースを作成し、Git リポジトリーに配置します。
例: Grafana Operator サブスクリプション
1.14.2. namespace スコープの Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
namespace スコープの Operator をインストールするには、必要な Operator の Subscription
リソースと OperatorGroup
リソースを作成して Git リポジトリーに配置します。
例: Ansible Automation Platform リソースオペレーター
Red Hat OpenShift GitOps を使用して複数の Operator をデプロイする場合は、対応する namespace に Operator グループを 1 つだけ作成する必要があります。1 つの namespace に複数の Operator グループが存在する場合、その namespace で作成された CSV はすべて、TooManyOperatorGroups
の理由で failure
状態に移行します。対応する namespace 内の Operator グループの数が 1 に達すると、以前の failure
状態の CSV はすべて pending
状態に移行します。Operator のインストールを完了するには、保留中のインストールプランを手動で承認する必要があります。
第2章 クラスタースコープのインスタンスのユーザー定義のクラスターロールを作成してパーミッションをカスタマイズする リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのクラスタースコープのインスタンスの場合、Red Hat OpenShift GitOps Operator は特定のクラスタースコープのリソース管理向けのパーミッションを追加で付与します。したがって、クラスター管理者として、Argo CD をクラスタースコープのインスタンスとしてデプロイすると、Operator は GitOps コントロールプレーンコンポーネントに対して追加のクラスターロールとクラスターロールバインディングを作成します。これらのクラスターロールとクラスターロールバインディングは、Argo CD がクラスターレベルで動作させるのに必要な追加の権限を提供します。
クラスタースコープのインスタンスに Operator によって付与されたすべての権限を付与せず、クラスター全体のリソースへの権限を追加または削除する場合は、まずクラスタースコープのインスタンスのデフォルトのクラスターロールの作成を無効にする必要があります。次に、次のクラスタースコープのインスタンスの権限をカスタマイズできます。
- デフォルトの ArgoCD インスタンス (デフォルトのクラスタースコープインスタンス)
- ユーザー定義のクラスタースコープ Argo CD インスタンス
このガイドでは、ユーザー定義のクラスタースコープ Argo CD インスタンスを作成し、クラスターのカスタム設定を含む定義済みの namespace に Argo CD アプリケーションをデプロイし、クラスタースコープインスタンスのデフォルトのクラスターロールの作成を無効にし、GitOps コントロールプレーンコンポーネントの新しいクラスターロールとクラスターロールバインディングを作成してユーザー定義のクラスタースコープインスタンスの権限をカスタマイズする手順について例を交えて説明します。
開発者として、Argo CD アプリケーションを作成し、クラスター全体のリソースをデプロイする場合は、クラスター管理者がそれらに必要な権限を付与していることを確認してください。
それ以外の場合は、Argo CD の調整後に、アプリケーションの Status
フィールドに次の例のような認証エラーメッセージが表示されます。
認証エラーメッセージの例
persistentvolumes is forbidden: User "system:serviceaccount:gitops-demo:argocd-argocd-application-controller" cannot create resource "persistentvolumes" in API group "" at the cluster scope.
persistentvolumes is forbidden: User "system:serviceaccount:gitops-demo:argocd-argocd-application-controller" cannot create resource "persistentvolumes" in API group "" at the cluster scope.
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform クラスターに Red Hat OpenShift GitOps 1.13.0 以降のバージョンがインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 -
Red Hat OpenShift GitOps
argocd
CLI がインストールされている。 -
クラスタースコープの Argo CD インスタンス を定義済みの namespace にインストールしている。(例:
spring-petclinic
namespace)。 ユーザー定義のクラスタースコープインスタンスが、次のコンポーネントのクラスターロールとクラスターロールバインディングを使用して設定されていることを検証している。
- Argo CD Application Controller
- Argo CD サーバー
- Argo CD ApplicationSet Controller (ApplicationSet Controller 作成される)
spring-petclinic
namespace のcustomclusterrole
パス を使用してcluster-configs
Argo CD アプリケーション をデプロイし、test-gitops-ns
namespace とtest-gitops-pv
永続ボリュームリソースを作成している。注記cluster-configs
Argo CD アプリケーションは、次のパラメーターが設定されたユーザー定義のクラスタースコープインスタンスによって管理される必要があります。-
selfHeal
フィールドの値がtrue
に設定されている -
syncPolicy
フィールドの値がautomated
に設定されている -
Label フィールドが
app.kubernetes.io/part-of=argocd
の値に設定されている -
定義した namespace 内の Argo CD インスタンスが namespace を管理できるように、Label フィールドが
argocd.argoproj.io/managed-by=<user_defined_namespace>
値に設定されている -
ラベル フィールドが
app.kubernetes.io/name=<user_defined_argocd_instance>
値に設定されている
-
2.2. クラスタースコープのインスタンスのデフォルトクラスターロール作成の無効化 リンクのコピーリンクがクリップボードにコピーされました!
必要に応じてクラスター全体のリソースへの権限を追加または削除するには、Argo CD カスタムリソース (CR) の YAML ファイルを編集して、クラスタースコープインスタンスのデフォルトのクラスターロールの作成を無効にする必要があります。
手順
Argo CD CR で、
.spec.defaultClusterScopedRoleDisabled
フィールドの値をtrue
に設定します。Argo CD CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
argocd.argoproj.io/example configured
argocd.argoproj.io/example configured
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Red Hat OpenShift GitOps Operator が GitOps コントロールプレーンコンポーネントのデフォルトのクラスターロールとクラスターロールバインディングを削除したことを確認します。
oc get ClusterRoles/<argocd_name>-<argocd_namespace>-<control_plane_component>
$ oc get ClusterRoles/<argocd_name>-<argocd_namespace>-<control_plane_component>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ClusterRoleBindings/<argocd_name>-<argocd_namespace>-<control_plane_component>
$ oc get ClusterRoleBindings/<argocd_name>-<argocd_namespace>-<control_plane_component>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
No resources found
No resources found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスタースコープのインスタンスのデフォルトのクラスターロールおよびクラスターロールバインディングは作成されません。クラスター管理者は、GitOps コントロールプレーンコンポーネントの新しいクラスターロールとクラスターロールバインディングを作成することで、クラスタースコープのインスタンスのアクセス許可を作成およびカスタマイズできるようになりました。
2.3. クラスタースコープのインスタンスのパーミッションのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、GitOps コントロールプレーンコンポーネントの新しいクラスターロールとクラスターロールバインディングを作成して、クラスタースコープのインスタンスの権限をカスタマイズする必要があります。
たとえば、以下の手順ではユーザー定義のクラスタースコープのインスタンスのみにフォーカスします。
手順
- Web コンソールの Administrator パースペクティブを開き、User Management → Roles → Create Role に移動します。
以下の
ClusterRole
YAML テンプレートを使用してルールを追加し、追加のパーミッションを指定します。クラスターロール YAML テンプレートの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックしてクラスターロールを追加します。
次の手順を実行して、権限をカスタマイズするコントロールプレーンコンポーネントで使用されるサービスアカウントを見つけます。
- Workloads → Pods に移動します。
- Project リストから、ユーザー定義のクラスタースコープのインスタンスがインストールされているプロジェクトを選択します。
- コントロールプレーンコンポーネントの Pod をクリックし、YAML タブに移動します。
-
spec.ServiceAccount
フィールドを見つけ、サービスアカウントをメモします。
- User Management → RoleBindings → Create binding に移動します。
- Create binding をクリックします。
- Binding type を Cluster-wide role binding (ClusterRoleBinding) として選択します。
- <argocd_name>-<argocd_namespace>-<control_plane_component> 命名規則に従って、RoleBinding name の一意の値を入力します。
- Role name のドロップダウンリストから新たに作成されたクラスターロールを選択します。
Subject を ServiceAccount として選択し、サブジェクトの namespace と 名前 を指定します。
-
Subject namespace:
spring-petclinic
Subject name:
example-argocd-application-controller
注記Subject name については、設定する値が、権限をカスタマイズするコントロールプレーンコンポーネントの
spec.ServiceAccount
フィールドの値と同じであることを確認します。
-
Subject namespace:
Create をクリックします。
コントロールプレーンコンポーネントのサービスアカウントと namespace に必要な権限が作成されました。
ClusterRoleBinding
オブジェクトの YAML ファイルは以下の例のようになります。クラスターロールバインディングの YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 Argo CD アプリケーションコントローラーレプリカ間でのクラスターのシャーディング リンクのコピーリンクがクリップボードにコピーされました!
コントローラーが管理するクラスターや使用するメモリーが過剰な場合は、複数の Argo CD アプリケーションコントローラーレプリカにわたってクラスターをシャーディングできます。
3.1. ラウンドロビンシャーディングアルゴリズムの有効化 リンクのコピーリンクがクリップボードにコピーされました!
round-robin
シャーディングアルゴリズムはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、Argo CD アプリケーションコントローラーは、不均一な legacy
のハッシュベースのシャーディングアルゴリズムを使用してクラスターをシャードに割り当てます。これにより、クラスターの分散が不均等になる可能性があります。round-robin
シャーディングアルゴリズムを有効にして、すべてのシャードにわたってより均等なクラスター分散を実現できます。
Red Hat OpenShift GitOps で round-robin
シャーディングアルゴリズムを使用すると、次の利点があります。
- よりバランスの取れたワークロード分散を確保する
- シャードが過負荷になったり、十分に活用されなかったりすることを回避する
- コンピューティングリソースの効率を最適化する
- ボトルネックのリスクを軽減する
- Argo CD システムの全体的なパフォーマンスと信頼性を向上する
代替シャーディングアルゴリズムの導入により、特定の使用例に基づいてさらにカスタマイズできるようになります。デプロイメントのニーズに最も適したアルゴリズムを選択できるため、さまざまな運用シナリオでの柔軟性と適応性が向上します。
GitOps で代替シャーディングアルゴリズムの利点を活用するには、デプロイ中にシャーディングを有効にすることが重要です。
3.1.1. Web コンソールでの round-robin シャーディングアルゴリズムの有効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して round-robin
シャーディングアルゴリズムを有効にできます。
前提条件
- Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
- OpenShift Container Platform Web コンソールにアクセスできる。
-
cluster-admin
権限でクラスターにアクセスできる。
手順
- Web コンソールの Administrator パースペクティブで、Operators → Installed Operators に移動します。
- インストールされている Operator から Red Hat OpenShift GitOps をクリックし、Argo CD タブに移動します。
-
round-robin
シャーディングアルゴリズムを有効にする Argo CD インスタンス (例:openshift-gitops)
をクリックします。 YAML タブをクリックし、以下の例のように YAML ファイルを編集します。
ラウンドロビンシャーディングアルゴリズムが有効になっている Argo CD インスタンスの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Save をクリックします。
成功通知アラート
openshift-gitops has been updated to version <version>
が表示されます。注記デフォルトの
openshift-gitops
インスタンスを編集すると、Managed resource ダイアログボックスが表示されます。Save をもう一度クリックして、変更を確定します。次の手順を実行して、シャーディングアルゴリズムとして
round-robin
を使用する設定で、シャーディングが有効になっていることを確認します。- Workloads → StatefulSets に移動します。
- Argo CD インスタンスをインストールしたネームスペースを Project ドロップダウンリストから選択します。
- <instance_name>-application-controller (例: openshift-gitops-application-controller) をクリックし、Pod タブに移動します。
- 作成されたアプリケーションコントローラー Pod の数を確認します。これは、セットレプリカの数に対応している必要があります。
調べるコントローラー Pod をクリックし、Logs タブに移動して Pod ログを表示します。
コントローラー Pod ログスニペットの例
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=openshift-gitops version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=openshift-gitops version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin"
1 time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
"Using filter function: round-robin"
メッセージを探します。
次の例に示すように、ログの Search フィールドで
processed by shard
を検索して、シャード間でのクラスターの分布が均一であることを確認します。重要これらのログを確認するには、ログレベルを
debug
に設定していることを確認してください。コントローラー Pod ログスニペットの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クラスターの数 "C" がシャードレプリカの数 "R" の倍数である場合は、各シャードに同じ数のクラスター "N" が割り当てられている必要があります。これは、"C" を "R" で割ったものに相当します。前の例では、3 つのクラスターと 3 つのレプリカを示しています。したがって、各シャードには 1 つのクラスターが割り当てられます。
3.1.2. CLI を使用したラウンドロビンシャーディングアルゴリズムの有効化 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイスを使用して、round-robin
シャーディングアルゴリズムを有効にできます。
前提条件
- Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
-
cluster-admin
権限でクラスターにアクセスできる。
手順
以下のコマンドを実行して、シャード化を有効にし、レプリカの数を必要な値に設定します。
oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"sharding":{"enabled":true,"replicas":<value>}}}}' --type=merge
$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"sharding":{"enabled":true,"replicas":<value>}}}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、シャード化アルゴリズムを
round-robin
に設定します。oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"env":[{"name":"ARGOCD_CONTROLLER_SHARDING_ALGORITHM","value":"round-robin"}]}}}' --type=merge
$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"env":[{"name":"ARGOCD_CONTROLLER_SHARDING_ALGORITHM","value":"round-robin"}]}}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Argo CD アプリケーションコントローラー Pod の数がセットされたレプリカの数と一致していることを確認します。
oc get pods -l app.kubernetes.io/name=<argocd_instance>-application-controller -n <namespace>
$ oc get pods -l app.kubernetes.io/name=<argocd_instance>-application-controller -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE <argocd_instance>-application-controller-0 1/1 Running 0 11s <argocd_instance>-application-controller-1 1/1 Running 0 32s <argocd_instance>-application-controller-2 1/1 Running 0 22s
NAME READY STATUS RESTARTS AGE <argocd_instance>-application-controller-0 1/1 Running 0 11s <argocd_instance>-application-controller-1 1/1 Running 0 32s <argocd_instance>-application-controller-2 1/1 Running 0 22s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シャーディングアルゴリズムとして
round-robin
を使用する設定で、シャーディングが有効になっていることを確認します。oc logs <argocd_application_controller_pod> -n <namespace>
$ oc logs <argocd_application_controller_pod> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力の抜粋例
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=<namespace> version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=<namespace> version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin"
1 time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
"Using filter function: round-robin"
メッセージを探します。
次の手順を実行して、シャード間でクラスターが均等に分散されていることを確認します。
次のコマンドを実行して、ログレベルを
debug
に設定します。oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"logLevel":"debug"}}}' --type=merge
$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"logLevel":"debug"}}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ログを表示し、
processed by shard
を検索して、各クラスターがどのシャードに接続されているかを確認します。oc logs <argocd_application_controller_pod> -n <namespace> | grep "processed by shard"
$ oc logs <argocd_application_controller_pod> -n <namespace> | grep "processed by shard"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力の抜粋例
time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id= will be processed by shard 0" time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 will be processed by shard 1" time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w will be processed by shard 2"
time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id= will be processed by shard 0"
1 time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 will be processed by shard 1"
2 time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w will be processed by shard 2"
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クラスターの数 "C" がシャードレプリカの数 "R" の倍数である場合は、各シャードに同じ数のクラスター "N" が割り当てられている必要があります。これは、"C" を "R" で割ったものに相当します。前の例では、3 つのクラスターと 3 つのレプリカを示しています。したがって、各シャードには 1 つのクラスターが割り当てられます。
3.2. Argo CD アプリケーションコントローラーのシャードの動的スケーリングを有効にする手順 リンクのコピーリンクがクリップボードにコピーされました!
シャードの動的スケーリングはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、Argo CD アプリケーションコントローラーはクラスターをシャードに無期限に割り当てます。round-robin
シャーディングアルゴリズムを使用している場合、この静的割り当てにより、特にレプリカが追加または削除されたときに、シャードが不均一に分散される可能性があります。シャードの動的なスケーリングを有効にして、特定の時点で Argo CD アプリケーションコントローラーが管理するクラスターの数に基づいてシャードの数を自動的に調整できます。これにより、シャードのバランスが確保され、コンピューティングリソースの使用が最適化されます。
動的スケーリングを有効にした後は、シャード数を手動で変更できません。システムは、特定の時点で Argo CD アプリケーションコントローラーが管理するクラスターの数に基づいて、シャードの数を自動的に調整します。
3.2.1. Web コンソールでのシャードの動的スケーリングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、シャードの動的スケーリングを有効にできます。
前提条件
-
cluster-admin
権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
手順
- OpenShift Container Platform Web コンソールの Administrator パースペクティブで、Operators → Installed Operators に移動します。
- Installed Operators のリストから Red Hat OpenShift GitOps Operator を選択し、ArgoCD タブをクリックします。
-
シャードの動的スケーリングを有効にする Argo CD インスタンス名 (例:
openshift-gitops)
を選択します。 YAML タブをクリックし、以下のように
spec.controller.sharding
プロパティーを編集して設定します。動的なスケーリングを有効にした Argo CD YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Save をクリックします。
成功通知アラート
openshift-gitops has been updated to version <version>
が表示されます。注記デフォルトの
openshift-gitops
インスタンスを編集すると、Managed resource ダイアログボックスが表示されます。Save をもう一度クリックして、変更を確定します。
検証
namespace の Pod 数をチェックして、シャード化が有効になっていることを確認します。
- Workloads → StatefulSets に移動します。
-
Argo CD インスタンスがデプロイされている namespace を Project ドロップダウンリストから選択します (例:
openshift-gitops
)。 -
Argo CD インスタンスの名前を持つ
StatefulSet
オブジェクトの名前 (例:openshift-gitops-apllication-controller)
をクリックします。 -
Pod タブをクリックし、Pod の数が Argo CD
YAML
ファイルで設定したminShards
の値以上であることを確認します。
3.2.2. CLI を使用したシャードの動的スケーリングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc
) を使用して、シャードの動的スケーリングを有効にできます。
前提条件
- Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
-
cluster-admin
権限でクラスターにアクセスできる。
手順
-
oc
ツールを使用して、cluster-admin
権限を持つユーザーとしてクラスターにログインします。 次のコマンドを実行して、動的スケーリングを有効にします。
oc patch argocd <argocd_instance> -n <namespace> --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":<value>,"maxShards":<value>,"clustersPerShard":<value>}}}}'
$ oc patch argocd <argocd_instance> -n <namespace> --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":<value>,"maxShards":<value>,"clustersPerShard":<value>}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc patch argocd openshift-gitops -n openshift-gitops --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}}}}'
$ oc patch argocd openshift-gitops -n openshift-gitops --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}}}}'
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このサンプルコマンドは、
openshift-gitops
namespace のopenshift-gitops
Argo CD インスタンスの動的スケーリングを有効にし、シャードの最小数を1
に、シャードの最大数を3
に、およびシャードごとのクラスター数を1
に設定します。minShard
およびclustersPerShard
の値は、1
以上に設定する必要があります。maxShard
の値は、minShard
の値以下である必要があります。
出力例
argocd.argoproj.io/openshift-gitops patched
argocd.argoproj.io/openshift-gitops patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Argo CD インスタンスの
spec.controller.sharding
プロパティーを確認します。oc get argocd <argocd_instance> -n <namespace> -o jsonpath='{.spec.controller.sharding}'
$ oc get argocd <argocd_instance> -n <namespace> -o jsonpath='{.spec.controller.sharding}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc get argocd openshift-gitops -n openshift-gitops -o jsonpath='{.spec.controller.sharding}'
$ oc get argocd openshift-gitops -n openshift-gitops -o jsonpath='{.spec.controller.sharding}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シャードの動的スケーリングが有効になっている場合の出力例
{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}
{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
オプション: OpenShift Container Platform Web コンソールで Argo CD インスタンスの設定
YAML
ファイルにある設定されたspec.controller.sharding
プロパティーをチェックして、動的スケーリングが有効になっていることを確認します。 Argo CD Application Controller Pod の数を確認します。
oc get pods -n <namespace> -l app.kubernetes.io/name=<argocd_instance>-application-controller
$ oc get pods -n <namespace> -l app.kubernetes.io/name=<argocd_instance>-application-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc get pods -n openshift-gitops -l app.kubernetes.io/name=openshift-gitops-application-controller
$ oc get pods -n openshift-gitops -l app.kubernetes.io/name=openshift-gitops-application-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE openshift-gitops-application-controller-0 1/1 Running 0 2m
NAME READY STATUS RESTARTS AGE openshift-gitops-application-controller-0 1/1 Running 0 2m
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD Application Controller Pod の数は、
minShard
の値以下である必要があります。