3.5. 사용자 정의 클러스터 역할 생성 및 애플리케이션 컨트롤러에 대한 사용자 정의 권한 구성
클러스터 관리자는 집계된 클러스터 역할에 사용자 정의 권한을 추가하려면 하나 이상의 사용자 정의 클러스터 역할을 생성한 다음 클러스터 범위 Argo CD 인스턴스의 Argo CD 애플리케이션 컨트롤러 구성 요소에 대한 사용자 정의 권한을 구성해야 합니다.
사전 요구 사항
- 클러스터 범위 Argo CD 인스턴스의 Argo CD 애플리케이션 컨트롤러 구성 요소에 대해 집계된 클러스터 역할을 생성했습니다.
Red Hat OpenShift GitOps Operator에서 생성 및 관리하는 다음과 같은 기본 클러스터 역할이 있습니다.
-
<
argocd_name>-<argocd_namespace>-argocd-application-controller
가 사전 정의된aggregationRule
필드를 사용하여 클러스터 역할을 집계했습니다. -
<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>
- 정의된 네임스페이스의 이름을 지정합니다.
<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
작은 정보또는 웹 콘솔을 사용하여 관리자 화면에서 사용자 정의 클러스터 역할을 생성할 수 있습니다. 사용자 관리
역할 역할 생성 으로 이동하여 이전 YAML 템플릿을 사용하여 권한을 추가하고 생성 을 클릭합니다. 출력 예
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가 설치된 네임스페이스를 지정합니다.
출력 예
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 웹 콘솔을 사용하여 관리자 화면에서 확인할 수 있습니다. 사용자 관리
역할로 이동하여 필터 옵션을 사용하여 클러스터 전체 역할을 선택하고 < argocd_name>-<argocd_namespace>-argocd-application-controller-admin
클러스터 역할을 검색할 수 있습니다. 세부 정보 및 구성을 확인하려면 클러스터 역할을 열어야 합니다.
다음 명령을 실행하여 <
argocd_name>-<argocd_namespace>-argocd_application-controller
집계 클러스터 역할에서 <argocd_name>-<argocd_namespace>-argocd_namespace>-argocd-application-controller-admin
및 <argocd_name>-<argocd_namespace>-argocd_controller-view
의 권한을 상속하는지 확인합니다.$ oc get ClusterRole/<argocd_name>-<argocd_namespace>-argocd-application-controller -o yaml
다음과 같습니다.
<argocd_name>
- 사용자 정의 클러스터 범위 Argo CD 인스턴스의 이름을 지정합니다.
<argocd_namespace>
Argo CD가 설치된 네임스페이스를 지정합니다.
집계된 클러스터 역할의 출력 예
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 웹 콘솔을 사용하여 관리자 화면에서 확인할 수 있습니다. 사용자 관리
역할로 이동하여 필터 옵션을 사용하여 클러스터 전체 역할을 선택한 다음 집계된 클러스터 역할을 검색할 수 있습니다. 세부 정보 및 구성을 확인하려면 클러스터 역할을 열어야 합니다.