2.4. 정책 컨트롤러 고급 구성
ManagedClusterAddOn
사용자 정의 리소스를 사용하여 관리 클러스터에서 정책 컨트롤러 구성을 사용자 지정할 수 있습니다. 다음 ManagedClusterAddOns
는 정책 프레임워크, Kubernetes 구성 정책 컨트롤러, 인증서 정책 컨트롤러 및 IAM 정책 컨트롤러를 구성합니다.
필수 액세스: 클러스터 관리자
2.4.1. 거버넌스 프레임워크 동시성 구성
각 관리 클러스터에 대한 거버넌스 프레임워크 동시성을 구성합니다. 기본값 2
를 변경하려면 따옴표 내에서 0이 아닌 정수로 policy-evaluation-concurrency
주석을 설정합니다. 그런 다음 ManagedClusterAddOn
개체 이름의 값을 hub 클러스터의 관리 클러스터 네임스페이스에서 governance-policy-framework
로 설정합니다.
cluster1
이라는 관리 클러스터에서 동시성이 2
로 설정된 다음 YAML 예제를 참조하십시오.
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: governance-policy-framework namespace: cluster1 annotations: policy-evaluation-concurrency: "2" spec: installNamespace: open-cluster-management-agent-addon
client-qps
및 client-burst
주석을 설정하려면 ManagedClusterAddOn
리소스를 업데이트하고 매개변수를 정의합니다.
각 초당 대한 쿼리가 30
으로 설정되고 burst가 cluster1
이라는 관리형 클러스터에서 45
로 설정된 다음 YAML 예제를 참조하십시오.
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: governance-policy-framework namespace: cluster1 annotations: client-qps: "30" client-burst: "45" spec: installNamespace: open-cluster-management-agent-addon
2.4.2. 구성 정책 컨트롤러의 동시성 구성
각 관리 클러스터에 대해 구성 정책 컨트롤러의 동시성을 구성하여 동시에 평가할 수 있는 구성 정책 수를 변경할 수 있습니다. 기본값 2
를 변경하려면 따옴표 내에서 0이 아닌 정수로 policy-evaluation-concurrency
주석을 설정합니다. 그런 다음 hub 클러스터의 관리 클러스터 네임스페이스에서 ManagedClusterAddOn
오브젝트 이름의 값을 config-policy-controller
로 설정합니다.
참고: Increased concurrency 값은 config-policy-controller
Pod, Kubernetes API 서버 및 OpenShift API 서버에서 CPU 및 메모리 사용률을 늘립니다.
cluster1
이라는 관리 클러스터에서 동시성이 5
로 설정된 다음 YAML 예제를 참조하십시오.
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: policy-evaluation-concurrency: "5" spec: installNamespace: open-cluster-management-agent-addon
2.4.3. API 서버에 대한 요청 속도 구성
구성 정책 컨트롤러가 각 관리 클러스터에서 수행하는 API 서버에 대한 요청 속도를 구성합니다. 속도가 증가하면 구성 정책 컨트롤러의 응답성이 향상되어 Kubernetes API 서버 및 OpenShift API 서버의 CPU 및 메모리 사용률도 높아집니다. 기본적으로 요청 속도는 policy-evaluation-concurrency
설정으로 확장되며 짧은 기간 동안 더 많은 요청 수를 나타내는 45
burst 값이 있는 QPS(초당 30
쿼리)로 설정됩니다.
client-qps
및 client-burst
주석을 따옴표 내에서 0이 아닌 정수로 설정하여 속도 및 버스트를 구성할 수 있습니다. hub 클러스터의 관리 클러스터 네임스페이스에서 ManagedClusterAddOn
오브젝트 이름의 값을 config-policy-controller
로 설정할 수 있습니다.
각 초당 대한 쿼리가 20
으로 설정되고 burst가 cluster1
이라는 관리형 클러스터에서 100
으로 설정된 다음 YAML 예제를 참조하십시오.
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: client-qps: "20" client-burst: "100" spec: installNamespace: open-cluster-management-agent-addon
2.4.4. 디버그 로그 구성
각 정책 컨트롤러에 대한 디버그 로그를 구성하고 수집할 때 로그 수준을 조정할 수 있습니다.
참고: 디버그 로그 볼륨을 줄이면 로그에서 표시되는 정보가 줄어듭니다.
정책 컨트롤러에서 내보낸 디버그 로그를 줄여 로그에 오류 전용 버그를 표시할 수 있습니다. 디버그 로그를 줄이려면 주석에서 debug 로그 값을 -1
로 설정합니다. 각 값이 무엇을 나타내는지 확인하십시오.
-
-1
: 오류 로그만 -
0
: 정보 로그 -
1
: 디버그 로그 -
2
: 상세 디버깅 로그
Kubernetes 구성 컨트롤러의 두 번째 디버깅 정보를 받으려면 값이 2
인 로그 수준
주석을 ManagedClusterAddOn
사용자 정의 리소스에 추가합니다. 기본적으로 로그 수준은
0
으로 설정됩니다. 즉, 정보를 제공하는 메시지가 표시됩니다. 다음 예제를 확인합니다.
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: log-level: "2" spec: installNamespace: open-cluster-management-agent-addon
또한 ConfigurationPolicy
리소스의 각 spec.object-template[]
에 대해 매개변수 recordDiff
를 Log
로 설정할 수 있습니다. 관리 클러스터의 오브젝트Definition
과 오브젝트의 차이점은 관리 클러스터의 config-policy-controller
Pod에 기록됩니다. 다음 예제를 확인합니다.
recordDiff: Log
:이 있는 ConfigurationPolicy
리소스
apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: my-config-policy spec: object-templates: - complianceType: musthave recordDiff: Log objectDefinition: apiVersion: v1 kind: ConfigMap metadata: name: my-configmap data: fieldToUpdate: "2"
클러스터의 ConfigMap
리소스가 fieldToUpdate: "1"
이면 diff가 다음 정보를 사용하여 config-policy-controller
Pod에 표시됩니다.
Logging the diff: --- default/my-configmap : existing +++ default/my-configmap : updated @@ -2,3 +2,3 @@ data: - fieldToUpdate: "1" + fieldToUpdate: "2" kind: ConfigMap
중요: 보안 오브젝트의 차이점을 기록하지 않도록 합니다. 차이점은 일반 텍스트로 기록됩니다.
2.4.5. 거버넌스 메트릭
정책 프레임워크는 정책 배포 및 규정 준수를 보여주는 지표를 노출합니다. hub 클러스터에서 policy_governance_info
메트릭을 사용하여 추세를 보고 정책 오류를 분석합니다. 메트릭에 대한 개요는 다음 항목을 참조하십시오.
2.4.5.1. metric: policy_governance_info
OpenShift Container Platform 모니터링 구성 요소는 policy_governance_info
메트릭을 수집합니다. 관찰 기능을 활성화하면 구성 요소에서 일부 집계 데이터를 수집합니다.
참고: 관찰 기능을 활성화하면 Grafana 탐색 페이지에서 지표 쿼리를 입력합니다. 정책을 생성할 때 루트 정책을 생성합니다. 프레임워크는 루트 정책, 배치
리소스, PlacementBindings
리소스를 감시하여 전파된 정책을 생성하는 위치에 대한 정보를 확인하여 관리 클러스터에 정책을 배포합니다.
루트 및 전파 정책 둘 다에서 정책을 준수하는 경우 0
메트릭이 기록되고 1이 비준수인 경우 1
이 기록됩니다.
policy_governance_info
메트릭은 다음 레이블을 사용합니다.
-
유형
: 레이블 값은root
이거나전파됨
입니다. -
policy
: 연결된 루트 정책의 이름입니다. -
policy_namespace
: 루트 정책이 정의된 허브 클러스터의 네임스페이스입니다. -
cluster_namespace
: 정책이 배포된 클러스터의 네임스페이스입니다.
이러한 라벨과 값을 사용하면 클러스터에서 발생하는 많은 상황을 추적할 수 있는 쿼리를 사용할 수 있습니다.
참고: 메트릭이 필요하지 않고 성능 또는 보안에 대한 우려가 있는 경우 메트릭 컬렉션을 비활성화할 수 있습니다. 전파자 배포에서 DISABLE_REPORT_METRICS
환경 변수를 true
로 설정합니다. observability allowlist에 policy_governance_info
메트릭을 사용자 정의 지표로 추가할 수도 있습니다. 자세한 내용은 사용자 정의 메트릭 추가 를 참조하십시오.
2.4.5.2. metric: config_policies_evaluation_duration_seconds
config_policies_evaluation_duration_seconds
히스토그램은 클러스터에서 평가할 준비가 된 모든 구성 정책을 처리하는 데 걸리는 시간(초)을 추적합니다. 다음 메트릭을 사용하여 히스토그램을 쿼리합니다.
-
config_policies_evaluation_duration_seconds_bucket
: 버킷은 누적되고 다음과 같은 가능한 항목이 있는 초를 나타냅니다. 1, 3, 9, 10.5, 15, 30, 60, 90, 120, 180, 300,450, 600 이상. -
config_policies_evaluation_duration_seconds_count
: 모든 이벤트의 수입니다. -
config_policies_evaluation_duration_seconds_sum
: 모든 값의 합계입니다.
config_policies_evaluation_duration_seconds
지표를 사용하여 자주 평가할 필요가 없는 리소스 집약적 정책에 대해 ConfigurationPolicy
evaluationInterval
설정을 변경해야 하는지 확인합니다. Kubernetes API 서버에서 리소스 사용률이 높으면 동시성을 늘릴 수도 있습니다. 자세한 내용은 동시성 구성을 참조하십시오.
구성 정책을 평가하는 데 사용되는 시간에 대한 정보를 받으려면 다음 표현식과 유사한 Prometheus 쿼리를 수행하십시오.
rate(config_policies_evaluation_duration_seconds_sum[10m])/rate(config_policies_evaluation_duration_seconds_count[10m])
open-cluster-management-agent-addon
네임스페이스의 관리 클러스터에서 실행되는 config-policy-controller
Pod는 메트릭을 계산합니다. config-policy-controller
는 기본적으로 지표를 관찰 가능성으로 보내지 않습니다.
2.4.6. 구성 변경 확인
컨트롤러를 사용하여 새 구성을 적용하면 ManifestApplied
매개변수가 ManagedClusterAddOn
에서 업데이트됩니다. 이러한 조건 타임스탬프는 구성을 올바르게 확인하는 데 도움이 됩니다. 예를 들어 이 명령은 local-cluster
의 cert-policy-controller
가 업데이트되었는지 확인할 수 있습니다.
oc get -n local-cluster managedclusteraddon cert-policy-controller | grep -B4 'type: ManifestApplied'
다음 출력이 표시될 수 있습니다.
- lastTransitionTime: "2023-01-26T15:42:22Z" message: manifests of addon are applied successfully reason: AddonManifestApplied status: "True" type: ManifestApplied
2.4.7. 추가 리소스
- Kubernetes 구성 정책 컨트롤러참조
- 더 많은 주제를 위해 Governance 주제로 돌아갑니다.
- 이 항목의 시작 부분에서 정책 컨트롤러 고급 구성으로 돌아갑니다.