第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>値に設定されている
-