宣言型クラスター設定
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 インスタンスを使用してクラスタースコープのリソースの管理 リンクのコピーリンクがクリップボードにコピーされました!
特別なユースケースで必要な場合を除き、Argo CD インスタンスの権限をクラスタースコープに昇格しないでください。昇格したインスタンスは、cluster-admin 権限を持つユーザーのみが管理する必要があります。クラスタースコープのインスタンスの namespace にアクセスできるユーザーは誰でも、クラスターの権限を昇格してクラスター管理者になることができます。
クラスタースコープのリソースを管理するには、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セクションのSubscriptionYAML ファイルを編集します。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-controllerCopy 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-controllerCopy 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:NoExecuteCopy 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-gitopsnamespace のワークロードがインフラストラクチャーノードでスケジュールされていることを確認します。
デフォルトの 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-gitopsnamespace にある 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.gitCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc getコマンドを実行して、作成されたアプリケーションを確認します。oc get application -n openshift-gitops
$ oc get application -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションがデプロイされている namespace にラベルを追加し、
openshift-gitopsnamespace の 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-gitopsCopy 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
argocdCLI がインストールされている。 - 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.testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのアプリケーションを表示して、
argocdコマンドをデフォルトモードで実行できることを確認します。argocd app list
$ argocd app listCopy 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 TARGETCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトモードでアプリケーションを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshif-gitopsArgo 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 listCopy 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
argocdCLI がインストールされている。
手順
ocCLI ツールを使用して 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:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテキストが
kubeconfigファイルで正しく設定されているかどうかを確認します。oc config current-context
$ oc config current-contextCopy 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-gitopsCopy 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-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのアプリケーションを一覧表示して、
coreモードでargocdコマンドを実行できることを確認します。argocd app list --core
$ argocd app list --coreCopy 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 TARGETCopy to Clipboard Copied! Toggle word wrap Toggle overflow coreモードでアプリケーションを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshif-gitopsArgo 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 --coreCopy 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-petclinicnamespace を検索し、これがクラスターに追加されていることを確認します。クラスター設定がクラスターに正常に同期されます。
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
argocdCLI がインストールされている。
手順
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.testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションは
nonesync ポリシーを使用して設定されているため、同期操作を手動でトリガーする必要があります。argocd app sync openshift-gitops/app-cluster-configs
$ argocd app sync openshift-gitops/app-cluster-configsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをリスト表示して、アプリケーションのステータスが
HealthyおよびSyncedであることを確認します。argocd app list
$ argocd app listCopy 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
argocdCLI がインストールされている。
手順
ocCLI ツールを使用して 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:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテキストが
kubeconfigファイルで正しく設定されているかどうかを確認します。oc config current-context
$ oc config current-contextCopy 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-gitopsCopy 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-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションは
nonesync ポリシーを使用して設定されているため、同期操作を手動でトリガーする必要があります。argocd app sync --core openshift-gitops/app-cluster-configs
$ argocd app sync --core openshift-gitops/app-cluster-configsCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをリスト表示して、アプリケーションのステータスが
HealthyおよびSyncedであることを確認します。argocd app list --core
$ argocd app list --coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.12. クラスター設定用の組み込みのアクセス許可 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Argo CD インスタンスには、クラスター Operator、オプションの OLM オペレーター、およびユーザー管理など、特定のクラスタースコープのリソースを管理する権限があります。
-
Argo CD には
cluster-admin権限がありません。 - GitOps Operator に管理される任意の Argo CD インスタンスにバインドされた権限を拡張できます。ただし、GitOps Operator に作成されたロールやクラスターロールなどの権限リソースは、Operator により初期状態に戻される可能性があるため、変更しないでください。代わりに、専用のロールとクラスターロールオブジェクトを作成し、それらをアプリケーションコントローラーが使用する適切なサービスアカウントにバインドします。
Argo CD インスタンスの権限:
| リソース | 説明 |
|---|---|
| リソースグループ | ユーザーまたは管理者の設定 |
|
| OLM によって管理されるオプションの Operator |
|
| グループ、ユーザー、およびそれらの権限 |
|
| クラスター全体のビルド設定、レジストリー設定、およびスケジューラーポリシーを設定するために使用される CVO によって管理されるコントロールプレーン Operator |
|
| ストレージ |
|
| コンソールのカスタマイズ |
1.13. クラスター設定のアクセス許可を追加する リンクのコピーリンクがクリップボードにコピーされました!
Argo CD インスタンスにアクセス許可を付与して、クラスター設定を管理できます。追加のアクセス許可を持つクラスターロールを作成し、新しいクラスターロールバインディングを作成して、クラスターロールをサービスアカウントに関連付けます。
前提条件
-
cluster-admin権限で OpenShift Container Platform クラスターにアクセスでき、Web コンソールにログインしている。 - Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
手順
Web コンソールで、User Management → Roles → Create Role を選択します。以下の
ClusterRoleYAML テンプレートを使用してルールを追加し、追加の権限を指定します。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 のインストールを完了するには、保留中のインストールプランを手動で承認する必要があります。
1.15. Red Hat OpenShift GitOps を使用した respectRBAC の設定 リンクのコピーリンクがクリップボードにコピーされました!
Argo CD の respectRBAC 機能は、Argo CD がクラスター上のリソースを監視する方法を制御します。デフォルトでは、Argo CD はクラスタースコープでクラスター上のすべての Kubernetes リソース (CRD) を監視しようとします。respectRBAC 機能を使用すると、リソースの除外を手動で設定することなく、コントローラー RBAC のみを使用して ArgoCD コントローラーによる特定のリソースの検出や同期を制限できます。
この機能を有効にするには、Argo CD リソースで .spec.controller.respectRBAC キーを設定します。このキーを設定すると、コントローラーはリストまたはアクセスできないリソースの監視を自動的に停止します。たとえば、こうすることで、Argo CD クラスターロールにより、Argo CD が OpenShift Routes を監視できなくなるといった状況が回避されます。監視できなくなると、同期中にリソースの監視ができない旨のエラーが発生してしまいます。
コマンドラインインターフェイス (CLI) または Web コンソールを使用して Argo CD インスタンスを作成し、respectRBAC 機能を有効にできます。
前提条件
Subscription リソースで namespace を作成して更新していることを確認し、Subscription がクラスタースコープの Argo CD インスタンスをホストできるようにします。詳細は、「Argo CD インスタンスを使用してクラスタースコープのリソースの管理」を参照してください。
1.15.1. CLI を使用した respectRBAC の設定 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して respectRBAC 機能を設定できます。
手順
respectRBAC機能を設定するには、YAML オブジェクトファイル (例:argo-cd-resource.yaml) を作成します。respectRBACを作成するためのArgoCDYAML の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD インスタンスの名前を指定します。
- 2
ArgoCDリソースの.spec.controller.respectRBACキーの値をnormalまたはstrictとして指定できます。リソースの表示は軽量な操作であるため、精度と速度のバランスをとるために値をnormalに設定することを検討してください。値をnormalに設定したときに、Argo CD がリソースにアクセスできないことを示すエラーを報告する場合は、値をstrictに設定します。strictに設定すると、サーバーへの API 呼び出しの数が増え、Argo CD が RBAC リソースの追加検証を実行して権限を決定するため、normalよりも正確になります。
次のコマンドを実行して、YAML ファイルに変更を適用します。
oc apply -f argocd-resource.yaml -n argo-cd-instance
$ oc apply -f argocd-resource.yaml -n argo-cd-instance1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ArgoCDリソースを含む YAML ファイルの名前と、ArgoCDをホストする namespace を指定します。
次のコマンドを実行して、
.status.phaseフィールドのステータスがAvailableであることを確認します。oc get argocd <argocd_instance_name> -n <argocd_namespace> -o jsonpath='{.status.phase}'$ oc get argocd <argocd_instance_name> -n <argocd_namespace> -o jsonpath='{.status.phase}'1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<argocd_instance_name>は、Argo CD インスタンスの名前に置き換えます (例:example-argocd)。
ConfigMapリソースのresource.respectRBACパラメーターが正常に更新されていることを確認します。argocd-cmconfig map の内容を取得するには、次のコマンドを実行します。oc get cm argocd-cm -n <argocd_namespace> -o yaml
$ oc get cm argocd-cm -n <argocd_namespace> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
argocd-cmConfigMapにresource.respectRBACパラメーターが含まれていることを確認し、その値がstrictまたはnormalに設定されていることを確認します。
1.15.2. Web コンソールを使用した respectRBAC の設定 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールで respectRBAC を設定できます。
手順
- OpenShift Container Platform Web コンソールにログインします。
- Web コンソールの Administrator パースペクティブで、Operators → Installed Operators の順にクリックします。
- Project リストからユーザー定義の Argo CD インスタンスをインストールするプロジェクトを作成または選択します。
- インストールされている Operators リストから Red Hat OpenShift GitOps を選択し、Argo CD タブをクリックします。
Argo CD タブで
respectRBACパラメーターを設定します。spec: controller: respectRBAC: strictspec: controller: respectRBAC: strictCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create をクリックします。
インストールが正常に完了したら、Argo CD インスタンスが Argo CD タブに一覧表示され、Status が Available であることを確認します。
Argo CD インスタンスの作成後、次の手順を実行して、
ConfigMapリソースのresource.respectRBACパラメーターが正常に更新されていることを確認します。- Administrator パースペクティブで、Workload → ConfigMaps に移動します。
- Project オプションで、Argo CD namespace を選択します。
-
argocd-cmconfig map を選択します。 -
YAML タブを選択して、
resource.respectRBACパラメーターを表示します。
第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
argocdCLI がインストールされている。 -
クラスタースコープの Argo CD インスタンス を定義済みの namespace にインストールしている。たとえば、
spring-petclinicnamespace です。 ユーザー定義のクラスタースコープインスタンスが、次のコンポーネントのクラスターロールとクラスターロールバインディングを使用して設定されていることを検証している。
- Argo CD Application Controller
- Argo CD サーバー
- Argo CD ApplicationSet Controller (ApplicationSet Controller 作成される)
spring-petclinicnamespace のcustomclusterroleパス を使用してcluster-configsArgo CD アプリケーション をデプロイし、test-gitops-nsnamespace とtest-gitops-pv永続ボリュームリソースを作成している。注記cluster-configsArgo 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 configuredCopy 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 foundCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスタースコープのインスタンスのデフォルトのクラスターロールおよびクラスターロールバインディングは作成されません。クラスター管理者は、GitOps コントロールプレーンコンポーネントの新しいクラスターロールとクラスターロールバインディングを作成することで、クラスタースコープのインスタンスのアクセス許可を作成およびカスタマイズできるようになりました。
2.3. クラスタースコープのインスタンスの権限のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、GitOps コントロールプレーンコンポーネントの新しいクラスターロールとクラスターロールバインディングを作成して、クラスタースコープのインスタンスの権限をカスタマイズする必要があります。
たとえば、以下の手順ではユーザー定義のクラスタースコープのインスタンスのみにフォーカスします。
手順
- Web コンソールの Administrator パースペクティブを開き、User Management → Roles → Create Role に移動します。
以下の
ClusterRoleYAML テンプレートを使用してルールを追加し、追加の権限を指定します。クラスターロール 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 Application Controller のデフォルトのクラスターロールには、特定のハードコードされた権限セットがあります。このクラスターロールは Red Hat OpenShift GitOps Operator によって管理されるため、変更できません。クラスター管理者は、以下のいずれかの方法で権限をカスタマイズできます。
3.1. 集約されたクラスターロール リンクのコピーリンクがクリップボードにコピーされました!
集約されたクラスターロールを使用すると、新しいクラスターロールを最初から作成して権限を定義する必要がなくなります。代わりに、複数のクラスターロールを 1 つに結合できます。
Red Hat OpenShift GitOps 1.14 以降では、クラスター管理者は集約されたクラスターロールを使用して、ユーザーが Argo CD Application Controller のユーザー定義の権限を簡単に追加できるようにすることが可能です。
- 集約されたクラスターロール機能はオプションであり、デフォルトでは無効になっています。集約されたクラスターロールは、クラスタースコープの Argo CD インスタンスの Argo CD Application Controller コンポーネントに対してのみ作成できます。
-
Argo CD カスタムリソース (CR) から
aggregatedClusterRolesフィールドを削除しても、ユーザー定義のクラスターロールは削除されません。CLI または UI を使用して、ユーザー定義のクラスターロールを手動で削除する必要があります。
3.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 集約されたクラスターロール を理解している。
- OpenShift Container Platform クラスターに Red Hat OpenShift GitOps がインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 -
Red Hat OpenShift GitOps
argocdCLI がインストールされている。 - クラスタースコープの Argo CD インスタンス を定義済みの namespace にインストールしている。
ユーザー定義のクラスタースコープインスタンスが、次のコンポーネントのクラスターロールとクラスターロールバインディングを使用して設定されていることを検証している。
- Argo CD Application Controller
- Argo CD サーバー
- Argo CD ApplicationSet Controller (ApplicationSet Controller が作成されている場合)
- クラスタースコープインスタンスの デフォルトのクラスターロールの作成が無効化されている。
3.3. 集約されたクラスターロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
集約されたクラスターロールを作成するプロセスには、次の手順が含まれます。
- 集約されたクラスターロールの作成を有効にする
- ユーザー定義のクラスターロールを作成し、Application Controller のユーザー定義の権限を設定する
3.3.1. 集約されたクラスターロールの作成を有効にする リンクのコピーリンクがクリップボードにコピーされました!
Argo CD カスタムリソース (CR) で .spec.aggregatedClusterRoles フィールドの値を true に設定して、集約されたクラスターロールの作成を有効化できます。集約されたクラスターロールの作成を有効にすると、Red Hat OpenShift GitOps Operator は次のアクションを実行します。
-
デフォルトで事前定義された
aggregationRuleフィールドを含む<argocd_name>-<argocd_namespace>-argocd-application-controller集約クラスターロールを作成します。 - 対応するクラスターロールバインディングを作成し、管理します。
-
アプリケーションコントローラーの
viewおよびadminクラスターロールを作成および管理し、集約されたクラスターロールにユーザー定義の権限を追加します。
3.3.2. ユーザー定義のクラスターロールを作成してユーザー定義の権限を設定する リンクのコピーリンクがクリップボードにコピーされました!
<argocd_name>-<argocd_namespace>-argocd-application-controller-admin クラスターロールと集約クラスターロールにユーザー定義の権限を設定するには、argocd/aggregate-to-admin: 'true' ラベルを持つ 1 つ以上のユーザー定義クラスターロールを作成し、Application Controller のユーザー定義の権限を設定する必要があります。
-
集約されたクラスターロールは
<argocd_name>-<argocd_namespace>-argocd-application-controller-adminおよび<argocd_name>-<argocd_namespace>-argocd-application-controller-viewクラスターロールから権限を継承します。 -
<argocd_name>-<argocd_namespace>-argocd-application-controller-adminクラスターロールは、ユーザー定義のクラスターロールから権限を継承します。
3.4. 集約されたクラスターロールの作成を有効にする リンクのコピーリンクがクリップボードにコピーされました!
クラスタースコープの Argo CD インスタンスの Argo CD Application Controller コンポーネントの集約されたクラスターロールの作成を有効にするには、Argo CD カスタムリソース (CR) の YAML ファイルを編集して、対応するフィールドを設定する必要があります。
手順
Argo CD CR で、
.spec.aggregatedClusterRolesフィールドの値をtrueに設定します。Argo CD CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
argocd.argoproj.io/example configured
argocd.argoproj.io/example configuredCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クラスタースコープの Argo CD インスタンスの
StatusフィールドにPhase: Availableと表示されていることを確認します。oc describe argocd.argoproj.io/example -n spring-petclinic
$ oc describe argocd.argoproj.io/example -n spring-petclinicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
Availableステータスは、クラスタースコープの Argo CD インスタンスが正常で使用可能であることを示します。
注記Red Hat OpenShift GitOps Operator は、次のデフォルトのクラスターロールを作成し、管理します。
-
<argocd_name>-<argocd_namespace>-argocd-application-controller集約クラスターロール -
<argocd_name>-<argocd_namespace>-argocd-application-controller-view -
<argocd_name>-<argocd_namespace>-argocd-application-controller-admin
次のコマンドを実行して、Operator が Argo CD Application Controller と Argo CD サーバーコンポーネントのデフォルトのクラスターロールとクラスターロールバインディングを作成したことを確認します。
oc get ClusterRoles -l app.kubernetes.io/part-of=argocd
$ oc get ClusterRoles -l app.kubernetes.io/part-of=argocdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME CREATED AT example-spring-petclinic-argocd-application-controller 2024-08-14T08:20:58Z example-spring-petclinic-argocd-application-controller-admin 2024-08-14T09:08:38Z example-spring-petclinic-argocd-application-controller-view 2024-08-14T09:08:38Z example-spring-petclinic-argocd-server 2024-08-14T08:20:59Z
NAME CREATED AT example-spring-petclinic-argocd-application-controller 2024-08-14T08:20:58Z example-spring-petclinic-argocd-application-controller-admin 2024-08-14T09:08:38Z example-spring-petclinic-argocd-application-controller-view 2024-08-14T09:08:38Z example-spring-petclinic-argocd-server 2024-08-14T08:20:59ZCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ClusterRoleBindings -l app.kubernetes.io/part-of=argocd
$ oc get ClusterRoleBindings -l app.kubernetes.io/part-of=argocdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME ROLE AGE example-spring-petclinic-argocd-application-controller ClusterRole/example-spring-petclinic-argocd-application-controller 54m example-spring-petclinic-argocd-server ClusterRole/example-spring-petclinic-argocd-server 54m
NAME ROLE AGE example-spring-petclinic-argocd-application-controller ClusterRole/example-spring-petclinic-argocd-application-controller 54m example-spring-petclinic-argocd-server ClusterRole/example-spring-petclinic-argocd-server 54mCopy to Clipboard Copied! Toggle word wrap Toggle overflow viewおよびadminクラスターロールのクラスターロールバインディングは作成されません。これは、viewおよびadminクラスターロールは集約されたクラスターロールに権限を追加するだけで、Argo CD Application Controller への権限を直接設定しないためです。ヒントまたは、OpenShift Container Platform Web コンソールを使用して、Administrator パースペクティブから確認することもできます。User Management → Roles および User Management → RoleBindings に移動します。
app.kubernetes.io/part-of:argocdラベルの付いたクラスターロールとクラスターロールバインディングを検索できます。次のコマンドを実行して、作成されたロールの出力の権限をチェックして、集約されたクラスターロールが作成されたことを確認します。
oc get ClusterRole/<cluster_role_name> -o yaml
$ oc get ClusterRole/<cluster_role_name> -o yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<cluster_role_name>は、作成したロールの名前に置き換えます。
集約されたクラスターロールの出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow viewクラスターロールの出力例Copy to Clipboard Copied! Toggle word wrap Toggle overflow adminクラスターロールの出力例Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、OpenShift Container Platform Web コンソールを使用して、Administrator パースペクティブから確認することもできます。User Management → Roles に移動し、Filter オプションを使用して Cluster-wide Roles を選択し、集約されたクラスターロール、
view、およびadminクラスターロールを検索できます。詳細と設定を確認するには、クラスターロールを作成する必要があります。クラスター管理者は、1 つ以上のユーザー定義のクラスターロールを作成し、Argo CD Application Controller のユーザー定義のアクセス許可を設定できるようになりました。
3.5. ユーザー定義のクラスターロールを作成し、Application Controller のユーザー定義の権限を設定する リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者が、集約されたクラスターロールにユーザー定義のアクセス許可を追加するには、1 つ以上のユーザー定義のクラスターロールを作成し、クラスタースコープの Argo CD インスタンスの Argo CD Application Controller コンポーネントに対してユーザー定義のアクセス権限を設定する必要があります。
前提条件
- クラスタースコープの Argo CD インスタンスの Argo CD Application Controller コンポーネントの集約されたクラスターロールの作成を有効にしている。
Red Hat OpenShift GitOps Operator によって作成および管理される次のデフォルトのクラスターロールがある。
-
<argocd_name>-<argocd_namespace>-argocd-application-controllerは、定義済みのaggregationRuleフィールドを持つ集約クラスターロールです。 -
事前定義された
view権限を持つ<argocd_name>-<argocd_namespace>-argocd-application-controller-view -
事前定義された権限のない
<argocd_name>-<argocd_namespace>-argocd-application-controller-admin
-
手順
次のコマンドを使用して、必要なラベルと権限を持つ新しいクラスターロールを作成します。
oc apply -n <namespace> -f <cluster_role_name>.yaml
$ oc apply -n <namespace> -f <cluster_role_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<namespace>- 定義した namespace の名前を指定します。
<cluster_role_name>定義済みのクラスターロール YAML ファイルの名前を指定します。
ユーザー定義のクラスターロール YAML の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、Web コンソールを使用して、Administrator パースペクティブからユーザー定義のクラスターロールを作成することもできます。User Management → Roles → Create Role にアクセスし、前述の YAML テンプレートを使用して権限を追加し、Create をクリックします。
出力例
clusterrole.rbac.authorization.k8s.io/user-application-controller created
clusterrole.rbac.authorization.k8s.io/user-application-controller createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザー定義のクラスターロールが作成されます。
次のコマンドを実行して、
<argocd_name>-<argocd_namespace>-argocd-application-controller-adminクラスターロールがユーザー定義のクラスターロールから権限を継承していることを確認します。oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller-admin -o yaml
$ oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller-admin -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<argocd_name>- ユーザー定義のクラスタースコープ Argo CD インスタンスの名前を指定します。
<argocd_namespace>Argo CD がインストールされている namespace を指定します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、OpenShift Container Platform Web コンソールを使用して、Administrator パースペクティブから確認することもできます。User Management → Roles に移動し、Filter オプションを使用して Cluster-wide Roles を選択し、
<argocd_name>-<argocd_namespace>-argocd-application-controller-adminクラスターロールを検索します。詳細と設定を確認するには、クラスターロールを作成する必要があります。
次のコマンドを実行して、
<argocd_name>-<argocd_namespace>-argocd-application-controller集約クラスターロールが<argocd_name>-<argocd_namespace>-argocd-application-controller-adminおよび<argocd_name>-<argocd_namespace>-argocd-application-controller-viewクラスターロールから権限を継承していることを確認します。oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller -o yaml
$ oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<argocd_name>- ユーザー定義のクラスタースコープ Argo CD インスタンスの名前を指定します。
<argocd_namespace>Argo CD がインストールされている namespace を指定します。
集約されたクラスターロールの出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、OpenShift Container Platform Web コンソールを使用して、Administrator パースペクティブから確認することもできます。User Management → Roles に移動し、Filter オプションを使用して Cluster-wide Roles を選択し、集約されたクラスターロールを検索できます。詳細と設定を確認するには、クラスターロールを作成する必要があります。
第4章 Argo CD Application Controller レプリカ間でのクラスターのシャーディング リンクのコピーリンクがクリップボードにコピーされました!
コントローラーが管理しているクラスターが多すぎてメモリーを大量に使用している場合は、複数の Argo CD Application Controller レプリカ間でクラスターをシャードできます。
4.1. ラウンドロビンシャーディングアルゴリズムの有効化 リンクのコピーリンクがクリップボードにコピーされました!
round-robin シャーディングアルゴリズムはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、Argo CD Application Controller は、不均一な legacy のハッシュベースのシャーディングアルゴリズムを使用してクラスターをシャードに割り当てます。これにより、クラスターの分散が不均等になる可能性があります。round-robin シャーディングアルゴリズムを有効にして、すべてのシャードにわたってより均等なクラスター分散を実現できます。
Red Hat OpenShift GitOps で round-robin シャーディングアルゴリズムを使用すると、次の利点があります。
- よりバランスの取れたワークロード分散を確保する
- シャードが過負荷になったり、十分に活用されなかったりすることを回避する
- コンピューティングリソースの効率を最適化する
- ボトルネックのリスクを軽減する
- Argo CD システムの全体的なパフォーマンスと信頼性を向上する
代替シャーディングアルゴリズムの導入により、特定の使用例に基づいてさらにカスタマイズできるようになります。デプロイメントのニーズに最も適したアルゴリズムを選択できるため、さまざまな運用シナリオでの柔軟性と適応性が向上します。
GitOps で代替シャーディングアルゴリズムの利点を活用するには、デプロイ中にシャーディングを有効にすることが重要です。
4.1.1. Web コンソールでの round-robin シャーディングアルゴリズムの有効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して round-robin シャーディングアルゴリズムを有効にできます。
前提条件
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
- 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 タブに移動します。
- 作成された Application Controller 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 つのクラスターが割り当てられます。
4.1.2. CLI を使用したラウンドロビンシャーディングアルゴリズムの有効化 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイスを使用して、round-robin シャーディングアルゴリズムを有効にできます。
前提条件
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
-
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=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patchedCopy 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=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Argo CD Application Controller 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 22sCopy 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=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patchedCopy 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 つのクラスターが割り当てられます。
4.2. Argo CD Application Controller のシャードの動的スケーリングを有効にする手順 リンクのコピーリンクがクリップボードにコピーされました!
シャードの動的スケーリングはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、Argo CD Application Controller はクラスターをシャードに無期限に割り当てます。round-robin シャーディングアルゴリズムを使用している場合、この静的割り当てにより、特にレプリカが追加または削除されたときに、シャードが不均一に分散される可能性があります。シャードの動的なスケーリングを有効にして、特定の時点で Argo CD Application Controller が管理するクラスターの数に基づいてシャードの数を自動的に調整できます。これにより、シャードのバランスが確保され、コンピューティングリソースの使用が最適化されます。
動的スケーリングを有効にした後は、シャード数を手動で変更できません。システムは、特定の時点で Argo CD Application Controller が管理するクラスターの数に基づいて、シャードの数を自動的に調整します。
4.2.1. Web コンソールでのシャードの動的スケーリングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、シャードの動的スケーリングを有効にできます。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
手順
- 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の値以上であることを確認します。
4.2.2. CLI を使用したシャードの動的スケーリングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc) を使用して、シャードの動的スケーリングを有効にできます。
前提条件
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
-
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-gitopsnamespace のopenshift-gitopsArgo CD インスタンスの動的スケーリングを有効にし、シャードの最小数を1に、シャードの最大数を3に、およびシャードごとのクラスター数を1に設定します。minShardおよびclustersPerShardの値は、1以上に設定する必要があります。maxShardの値は、minShardの値以下である必要があります。
出力例
argocd.argoproj.io/openshift-gitops patched
argocd.argoproj.io/openshift-gitops patchedCopy 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-controllerCopy 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-controllerCopy 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 2m1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD Application Controller Pod の数は、
minShardの値以下である必要があります。