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
ここでは、以下のようになります。
<namespace>
- 定義した namespace の名前を指定します。
<cluster_role_name>
定義済みのクラスターロール YAML ファイルの名前を指定します。
ユーザー定義のクラスターロール YAML の例
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: user-application-controller 1 labels: 2 app.kubernetes.io/managed-by: spring-petclinic app.kubernetes.io/name: example app.kubernetes.io/part-of: argocd argocd/aggregate-to-admin: 'true' rules: 3 - verbs: - '*' apiGroups: - '' resources: - namespaces - persistentvolumeclaims - persistentvolumes - configmaps - verbs: - '*' apiGroups: - compliance.openshift.io resources: - scansettingbindings
ヒントまたは、Web コンソールを使用して、Administrator パースペクティブからユーザー定義のクラスターロールを作成することもできます。User Management
Roles Create Role にアクセスし、前述の YAML テンプレートを使用して権限を追加し、Create をクリックします。 出力例
clusterrole.rbac.authorization.k8s.io/user-application-controller created
ユーザー定義のクラスターロールが作成されます。
次のコマンドを実行して、
<argocd_name>-<argocd_namespace>-argocd-application-controller-admin
クラスターロールがユーザー定義のクラスターロールから権限を継承していることを確認します。$ oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller-admin -o yaml
ここでは、以下のようになります。
<argocd_name>
- ユーザー定義のクラスタースコープ Argo CD インスタンスの名前を指定します。
<argocd_namespace>
Argo CD がインストールされている namespace を指定します。
出力例
aggregationRule: clusterRoleSelectors: - matchLabels: app.kubernetes.io/managed-by: spring-petclinic argocd/aggregate-to-admin: "true" apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: argocds.argoproj.io/name: example argocds.argoproj.io/namespace: spring-petclinic kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"argoproj.io/v1beta1","kind":"ArgoCD","metadata":{"annotations":{},"name":"example","namespace":"spring-petclinic"},"spec":{"aggregatedClusterRoles":true}} creationTimestamp: "2024-08-14T09:59:15Z" labels: app.kubernetes.io/managed-by: spring-petclinic app.kubernetes.io/name: example app.kubernetes.io/part-of: argocd argocd/aggregate-to-controller: "true" name: example-spring-petclinic-argocd-application-controller-admin resourceVersion: "79202" uid: e2d35b6f-0832-4993-8b24-915a725454f9 rules: - apiGroups: - "" resources: - namespaces - persistentvolumeclaims - persistentvolumes - configmaps verbs: - '*' - apiGroups: - compliance.openshift.io resources: - scansettingbindings verbs: - '*'
ヒントまたは、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
ここでは、以下のようになります。
<argocd_name>
- ユーザー定義のクラスタースコープ Argo CD インスタンスの名前を指定します。
<argocd_namespace>
Argo CD がインストールされている namespace を指定します。
集約されたクラスターロールの出力例
aggregationRule: clusterRoleSelectors: - matchLabels: app.kubernetes.io/managed-by: spring-petclinic argocd/aggregate-to-controller: "true" apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: argocds.argoproj.io/name: example argocds.argoproj.io/namespace: spring-petclinic kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"argoproj.io/v1beta1","kind":"ArgoCD","metadata":{"annotations":{},"name":"example","namespace":"spring-petclinic"},"spec":{"aggregatedClusterRoles":true}} rbac.authorization.kubernetes.io/autoupdate: "true" creationTimestamp: "2024-08-14T08:20:58Z" labels: app.kubernetes.io/managed-by: spring-petclinic app.kubernetes.io/name: example app.kubernetes.io/part-of: argocd name: example-spring-petclinic-argocd-application-controller resourceVersion: "79203" uid: aeeb2ef5-b531-4fe3-a61a-b5ad8dd8ca6e rules: - apiGroups: - "" resources: - namespaces - persistentvolumeclaims - persistentvolumes - configmaps verbs: - '*' - apiGroups: - compliance.openshift.io resources: - scansettingbindings verbs: - '*' - apiGroups: - '*' resources: - '*' verbs: - get - list - watch - nonResourceURLs: - '*' verbs: - get - list
ヒントまたは、OpenShift Container Platform Web コンソールを使用して、Administrator パースペクティブから確認することもできます。User Management
Roles に移動し、Filter オプションを使用して Cluster-wide Roles を選択し、集約されたクラスターロールを検索できます。詳細と設定を確認するには、クラスターロールを作成する必要があります。