2.5. 정책 규정 준수 내역 (기술 프리뷰)
정책 준수 기록 API는 쿼리 가능한 형식으로 Red Hat Advanced Cluster Management for Kubernetes 정책 준수 이벤트의 장기 스토리지를 원하는 경우 선택적 기술 프리뷰 기능입니다. API를 사용하여 spec
필드와 같은 추가 세부 정보를 가져와서 정책을 감사하고 문제를 해결하고 클러스터에서 정책을 비활성화하거나 제거할 때 규정 준수 이벤트를 가져올 수 있습니다. 정책 준수 기록 API는 또한 감사 및 문제 해결에 도움이 되도록 CSV(콤마로 구분된 값) 정책 준수 이벤트의 요약을 생성할 수도 있습니다.
정책 준수 기록 API는 추가 감사 및 문제 해결을 위해 CSV(콤마로 구분된 값) 정책 컴플라이언스 이벤트도 생성할 수 있습니다.
2.5.1. 사전 요구 사항
정책 준수 기록 API에는 버전 13 이상에서 PostgreSQL 서버가 필요합니다.
일부 Red Hat 지원 옵션에는
registry.redhat.io/rhel9/postgresql-15
컨테이너 이미지,registry.redhat.io/rhel8/postgresql-13
컨테이너 이미지,postgresql-server
RPM 또는postgresql/server
모듈 사용이 포함됩니다. 선택한 경로의 설정 및 구성에 대한 해당 공식 Red Hat 설명서를 검토하십시오. 정책 준수 기록 API는 표준 PostgreSQL과 호환되며 공식 Red Hat 지원 오퍼링에만 국한되지 않습니다.- Red Hat Advanced Cluster Management Hub 클러스터에서 이 PostgreSQL 서버에 연결할 수 있어야 합니다. PostgreSQL 서버가 허브 클러스터 외부에서 실행 중인 경우 허브 클러스터가 PostgreSQL 서버의 포트 5432에 연결할 수 있도록 라우팅 및 방화벽 구성을 확인합니다. PostgreSQL 구성에서 재정의된 경우 이 포트가 다른 값일 수 있습니다.
2.5.2. 규정 준수 기록 API 활성화
API에 정책 규정 준수 이벤트를 기록하도록 관리형 클러스터를 구성합니다. 모든 클러스터 또는 클러스터의 하위 집합에서 이를 활성화할 수 있습니다. 다음 단계를 완료합니다.
PostgreSQL 서버를 클러스터 관리자로 구성합니다. Red Hat Advanced Cluster Management Hub 클러스터에 PostgreSQL을 배포한 경우
psql
명령을 사용하도록 PostgreSQL 포트를 일시적으로 포트 전달하십시오. 다음 명령을 실행합니다.oc -n <PostgreSQL namespace> port-forward <PostgreSQL pod name> 5432:5432
다른 터미널에서 다음 명령과 유사한 PostgreSQL 서버에 로컬로 연결합니다.
psql 'postgres://postgres:@127.0.0.1:5432/postgres'
다음 SQL 문을 사용하여 Red Hat Advanced Cluster Management Hub 클러스터에 대한 사용자 및 데이터베이스를 생성합니다.
CREATE USER "rhacm-policy-compliance-history" WITH PASSWORD '<replace with password>'; CREATE DATABASE "rhacm-policy-compliance-history" WITH OWNER="rhacm-policy-compliance-history";
이 데이터베이스를 정책 준수 기록 API에 사용하도록
governance-policy-database
Secret
리소스를 생성합니다. 다음 명령을 실행합니다.oc -n open-cluster-management create secret generic governance-policy-database \ 1 --from-literal="user=rhacm-policy-compliance-history" \ --from-literal="password=rhacm-policy-compliance-history" \ --from-literal="host=<replace with host name of the Postgres server>" \ 2 --from-literal="dbname=ocm-compliance-history" \ --from-literal="sslmode=verify-full" \ --from-file="ca=<replace>" 3
- 1
- Red Hat Advanced Cluster Management가 설치된 네임스페이스를 추가합니다. 기본적으로 Red Hat Advanced Cluster Management는
open-cluster-management
네임스페이스에 설치됩니다. - 2
- PostgresQL 서버의 호스트 이름을 추가합니다. Red Hat Advanced Cluster Management Hub 클러스터에 PostgreSQL 서버를 배포하고 클러스터 외부에 노출되지 않는 경우 호스트 값으로
Service
오브젝트를 사용할 수 있습니다. 형식은 <service name>.<namespace>.svc
입니다. 이 접근 방식은 Red Hat Advanced Cluster Management Hub 클러스터의 네트워크 정책에 따라 다릅니다. - 3
- PostgreSQL 서버의 TLS 인증서에 서명한
ca
data 필드에 인증 기관 인증서 파일을 지정해야 합니다. 이 값을 지정하지 않으면 데이터베이스 연결의 보안을 줄이기 때문에 권장되지 않지만 sslmode 값을 적절하게 변경해야 합니다.
cluster.open-cluster-management.io/backup
레이블을 추가하여 Red Hat Advanced Cluster Management hub 클러스터 복원 작업의Secret
리소스를 백업합니다. 다음 명령을 실행합니다.oc -n open-cluster-management label secret governance-policy-database cluster.open-cluster-management.io/backup=""
PostgreSQL 연결을 사용자 지정하려면
connectionURL
data 필드를 직접 사용하고 PostgreSQL 연결 URI 형식으로 값을 제공합니다. 암호의 특수 문자는 URL로 인코딩되어야 합니다. 한 가지 옵션은 Python을 사용하여 암호의 URL 인코딩 형식을 생성하는 것입니다. 예를 들어 암호가$uper<Secr&t%
>인 경우 다음 Python 명령을 실행하여 출력%24uper%3CSecr% 25%3E
:python -c 'import urllib.parse; import sys; print(urllib.parse.quote(sys.argv[1]))' '$uper<Secr&t%>'
governance-policy-database
시크릿
을 생성한 후 명령을 실행하여 정책 규정 준수 기록 API를 테스트합니다. OpenShiftRoute
오브젝트는 동일한 네임스페이스에 자동으로 생성됩니다. Red Hat Advanced Cluster Management Hub 클러스터의 경로가 신뢰할 수 있는 인증서를 사용하지 않는 경우 curl 명령에-k
플래그를 제공하여 TLS 확인을 건너뛰도록 선택할 수 있습니다.curl -H "Authorization: Bearer $(oc whoami --show-token)" \ "https://$(oc -n open-cluster-management get route governance-history-api -o jsonpath='{.spec.host}')/api/v1/compliance-events"
성공하면 curl 명령은 다음 메시지와 유사한 값을 반환합니다.
{"data":[],"metadata":{"page":1,"pages":0,"per_page":20,"total":0}}
성공하지 못하면 curl 명령에서 두 메시지 중 하나를 반환할 수 있습니다.
{"message":"The database is unavailable"}
{"message":"Internal Error"}
메시지가 표시되면 다음 명령을 사용하여
open-cluster-management
네임스페이스의 Kubernetes 이벤트를 확인합니다.oc -n open-cluster-management get events --field-selector reason=OCMComplianceEventsDBError
event에서
governance-policy-propagator
로그를 볼 수 있는 지침을 수신하는 경우 다음 명령을 실행합니다.oc -n open-cluster-management logs -l name=governance-policy-propagator -f
사용자, 암호 또는 데이터베이스가 잘못 지정되었음을 나타내는 오류 메시지가 표시될 수 있습니다. 다음 메시지 예제를 참조하십시오.
2024-03-05T12:17:14.500-0500 info compliance-events-api complianceeventsapi/complianceeventsapi_controller.go:261 The database connection failed: pq: password authentication failed for user "rhacm-policy-compliance-history"
-
다음 명령을 사용하여 올바른 PostgreSQL 연결 설정으로
governance-policy-database
Secret
리소스를 업데이트합니다.
oc -n open-cluster-management edit secret governance-policy-database
2.5.3. 규정 준수 기록 API URL 설정
정책 규정 준수 기록 API URL을 설정하여 관리 클러스터에서 기능을 활성화합니다. 다음 단계를 완료합니다.
다음 명령을 사용하여 정책 규정 준수 기록 API의 외부 URL을 검색합니다.
echo "https://$(oc -n open-cluster-management get route governance-history-api -o=jsonpath='{.spec.host}')"
출력은 Red Hat Advanced Cluster Management Hub 클러스터의 도메인 이름과 유사할 수 있습니다.
https://governance-history-api-open-cluster-management.apps.openshift.redhat.com
다음 예와 유사한
AddOnDeploymentConfig
오브젝트를 생성합니다.apiVersion: addon.open-cluster-management.io/v1alpha1 kind: AddOnDeploymentConfig metadata: name: governance-policy-framework namespace: open-cluster-management spec: customizedVariables: - name: complianceHistoryAPIURL value: <replace with URL from previous command>
-
value
매개변수 값을 규정 준수 기록 외부 URL로 바꿉니다.
-
2.5.3.1. 모든 관리 클러스터에서 활성화
모든 관리 클러스터에서 규정 준수 기록 API를 활성화하여 관리 클러스터의 규정 준수 이벤트를 기록합니다. 다음 단계를 완료합니다.
다음 명령과 함께
AddOnDeploymentConfig
를 사용하도록governance-policy-framework
ClusterManagementAddOn
오브젝트를 구성합니다.oc edit ClusterManagementAddOn governance-policy-framework
spec.supportedConfigs
배열을 추가하거나 업데이트합니다. 리소스에 다음 구성이 있을 수 있습니다.- group: addon.open-cluster-management.io resource: addondeploymentconfigs defaultConfig: name: governance-policy-framework namespace: open-cluster-management
2.5.3.2. 단일 관리 클러스터 활성화
단일 관리형 클러스터에서 규정 준수 기록 API를 활성화하여 관리 클러스터의 규정 준수 이벤트를 기록합니다. 다음 단계를 완료합니다.
관리 클러스터 네임스페이스에서
governance-policy-framework
ManagedClusterAddOn
리소스를 구성합니다. 다음 명령을 사용하여 Red Hat Advanced Cluster Management Hub 클러스터에서 다음 명령을 실행합니다.oc -n <manage-cluster-namespace> edit ManagedClusterAddOn governance-policy-framework
-
<
;manage-cluster-namespace>
; 자리 표시자를 활성화하려는 관리 클러스터 이름으로 교체합니다.
-
<
다음 예와 유사한 항목을 갖도록
spec.configs
배열을 추가하거나 업데이트합니다.- group: addon.open-cluster-management.io resource: addondeploymentconfigs name: governance-policy-framework namespace: open-cluster-management
구성을 확인하려면 관리 클러스터의 배포가
--compliance-api-url
컨테이너 인수를 사용하고 있는지 확인합니다. 다음 명령을 실행합니다.oc -n open-cluster-management-agent-addon get deployment governance-policy-framework -o jsonpath='{.spec.template.spec.containers[1].args}'
출력은 다음과 유사할 수 있습니다.
["--enable-lease=true","--hub-cluster-configfile=/var/run/klusterlet/kubeconfig","--leader-elect=false","--log-encoder=console","--log-level=0","--v=-1","--evaluation-concurrency=2","--client-max-qps=30","--client-burst=45","--disable-spec-sync=true","--cluster-namespace=local-cluster","--compliance-api-url=https://governance-history-api-open-cluster-management.apps.openshift.redhat.com"]
새 정책 규정 준수 이벤트는 정책 준수 기록 API에 기록됩니다.
정책 준수 이벤트가 특정 관리 클러스터에 기록되지 않는 경우 영향을 받는 클러스터의
governance-policy-framework
로그를 확인합니다.oc -n open-cluster-management-agent-addon logs deployment/governance-policy-framework -f
다음 메시지와 유사한 로그 메시지가 표시됩니다.
메시지
값이 비어 있으면 정책 규정 준수 기록 API URL이 올바르지 않거나 네트워크 통신 문제가 발생합니다.024-03-05T19:28:38.063Z info policy-status-sync statussync/policy_status_sync.go:750 Failed to record the compliance event with the compliance API. Will requeue. {"statusCode": 503, "message": ""}
정책 규정 준수 기록 API URL이 잘못된 경우 다음 명령을 사용하여 허브 클러스터의 URL을 편집합니다.
oc -n open-cluster-management edit AddOnDeploymentConfig governance-policy-framework
참고: 네트워크 통신 문제가 발생하면 네트워크 인프라를 기반으로 문제를 진단해야 합니다.
2.5.4. 추가 리소스
- 정책 준수 기록 API(기술 프리뷰) 를 참조하십시오.