3.4. 集約されたクラスターロールの作成を有効にする


クラスタースコープの Argo CD インスタンスの Argo CD Application Controller コンポーネントの集約されたクラスターロールの作成を有効にするには、Argo CD カスタムリソース (CR) の YAML ファイルを編集して、対応するフィールドを設定する必要があります。

手順

  1. Argo CD CR で、.spec.aggregatedClusterRoles フィールドの値を true に設定します。

    Argo CD CR の例

    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: example 1
      namespace: spring-petclinic 2
    # ...
    spec:
      aggregatedClusterRoles: true 3
    # ...

    1
    クラスタースコープのインスタンスの名前。
    2
    クラスタースコープのインスタンスを実行する namespace。
    3
    値を true に設定すると、集約されたクラスターロールの作成が有効になります。集約されたクラスターロールの作成を有効にしない場合は、この行を含めないか、値を false に設定します。

    出力例

    argocd.argoproj.io/example configured

  2. 次のコマンドを実行して、クラスタースコープの Argo CD インスタンスの Status フィールドに Phase: Available と表示されていることを確認します。

    $ oc describe argocd.argoproj.io/example -n spring-petclinic

    出力例

    Name:         example
    Namespace:    spring-petclinic
    Labels:       <none>
    Annotations:  <none>
    API Version:  argoproj.io/v1beta1
    Kind:         ArgoCD
    Metadata:
      Creation Timestamp:  2024-08-14T08:20:53Z
      Finalizers:
        argoproj.io/finalizer
      Generation:        3
      Resource Version:  60437
      UID:               57940e54-d60b-4c1a-bc4a-85c81c63ab69
    Spec:
      Aggregated Cluster Roles:  true
    ...
    Status:
      Application Controller:      Running
      Application Set Controller:  Unknown
      Phase:                       Available 1
      Redis:                       Running
      Repo:                        Running
      Server:                      Running
      Sso:                         Unknown
    Events:                        <none>

    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
  3. 次のコマンドを実行して、Operator が Argo CD Application Controller と Argo CD サーバーコンポーネントのデフォルトのクラスターロールとクラスターロールバインディングを作成したことを確認します。

    $ oc get ClusterRoles -l app.kubernetes.io/part-of=argocd

    出力例

    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

    $ oc get ClusterRoleBindings -l app.kubernetes.io/part-of=argocd

    出力例

    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

    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 ラベルの付いたクラスターロールとクラスターロールバインディングを検索できます。

  4. 次のコマンドを実行して、作成されたロールの出力の権限をチェックして、集約されたクラスターロールが作成されたことを確認します。

    $ oc get ClusterRole/<cluster_role_name> -o yaml 1
    1
    <cluster_role_name> は、作成したロールの名前に置き換えます。

    集約されたクラスターロールの出力例

    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 1
      resourceVersion: "78640"
      uid: aeeb2ef5-b531-4fe3-a61a-b5ad8dd8ca6e
    aggregationRule: 2
      clusterRoleSelectors:
      - matchLabels:
          app.kubernetes.io/managed-by: spring-petclinic
          argocd/aggregate-to-controller: "true"
    rules: [] 3

    1
    集約されたクラスターロールの名前。
    2
    定義済みのラベルのリストは、集約されたクラスターロールが他のユーザー定義のクラスターロールから権限を継承できることを示します。
    3
    事前定義されたパーミッションは設定されません。ただし、Operator が <argocd_name>-<argocd_namespace>-argocd-application-controller-view クラスターロールをすぐに作成すると、対応する定義済み view 権限が集約されたクラスターロールに追加されます。

    view クラスターロールの出力例

    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:14Z"
      labels: 1
        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-view 2
      resourceVersion: "78639"
      uid: 068b8867-7a0c-4af3-a17a-0560a00eba41
    rules: 3
    - apiGroups:
      - '*'
      resources:
      - '*'
      verbs:
      - get
      - list
      - watch
    - nonResourceURLs:
      - '*'
      verbs:
      - get
      - list

    1
    ラベルは、既存の集約されたクラスターロールの定義済みリストと一致します。
    2
    view クラスターロールの名前。
    3
    事前定義された view 権限。これらの権限は、既存の集約されたクラスターロールに追加されます。

    admin クラスターロールの出力例

    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-14T09:59:15Z"
      labels: 1
        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 2
      resourceVersion: "78642"
      uid: e2d35b6f-0832-4993-8b24-915a725454f9
    aggregationRule: 3
      clusterRoleSelectors:
      - matchLabels:
          app.kubernetes.io/managed-by: spring-petclinic
          argocd/aggregate-to-admin: "true"
    rules: null 4

    1
    ラベルは、既存の集約されたクラスターロールの定義済みリストと一致します。
    2
    admin クラスターロールの名前。
    3
    定義済みのラベルリストは、既存の <argocd_name>-<argocd_namespace>-argocd-application-controller-admin クラスターロールが他のユーザー定義のクラスターロールから権限を継承できることを示しています。
    4
    1 つ以上のユーザー定義のクラスターロールにまだ権限が定義されていないことを指定します。
    ヒント

    または、OpenShift Container Platform Web コンソールを使用して、Administrator パースペクティブから確認することもできます。User Management Roles に移動し、Filter オプションを使用して Cluster-wide Roles を選択し、集約されたクラスターロール、view、および admin クラスターロールを検索できます。詳細と設定を確認するには、クラスターロールを作成する必要があります。

    クラスター管理者は、1 つ以上のユーザー定義のクラスターロールを作成し、Argo CD Application Controller のユーザー定義のアクセス許可を設定できるようになりました。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.