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

手順

  1. 次のコマンドを使用して、必要なラベルと権限を持つ新しいクラスターロールを作成します。

    $ 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

    1
    ユーザー定義のクラスターロールの名前。
    2
    ラベルは、既存の <argocd_name>-<argocd_namespace>-argocd-application-controller-admin クラスターロールの定義済みリストと一致します。
    3
    <argocd_name>-<argocd_namespace>-argocd-application-controller-admin クラスターロールは、ユーザー定義のクラスターロールから権限を継承します。
    ヒント

    または、Web コンソールを使用して、Administrator パースペクティブからユーザー定義のクラスターロールを作成することもできます。User Management Roles Create Role にアクセスし、前述の YAML テンプレートを使用して権限を追加し、Create をクリックします。

    出力例

    clusterrole.rbac.authorization.k8s.io/user-application-controller created

    ユーザー定義のクラスターロールが作成されます。

  2. 次のコマンドを実行して、<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 クラスターロールを検索します。詳細と設定を確認するには、クラスターロールを作成する必要があります。

  3. 次のコマンドを実行して、<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 を選択し、集約されたクラスターロールを検索できます。詳細と設定を確認するには、クラスターロールを作成する必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.