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-serverRPM 또는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
oc -n <PostgreSQL namespace> port-forward <PostgreSQL pod name> 5432:5432Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다른 터미널에서 다음 명령과 유사한 PostgreSQL 서버에 로컬로 연결합니다.
psql 'postgres://postgres:@127.0.0.1:5432/postgres'
psql 'postgres://postgres:@127.0.0.1:5432/postgres'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 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";
CREATE USER "rhacm-policy-compliance-history" WITH PASSWORD '<replace with password>'; CREATE DATABASE "rhacm-policy-compliance-history" WITH OWNER="rhacm-policy-compliance-history";Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 데이터베이스를 정책 준수 기록 API에 사용하도록
governance-policy-databaseSecret리소스를 생성합니다. 다음 명령을 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 인증서에 서명한
cadata 필드에 인증 기관 인증서 파일을 지정해야 합니다. 이 값을 지정하지 않으면 데이터베이스 연결의 보안을 줄이기 때문에 권장되지 않지만 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=""
oc -n open-cluster-management label secret governance-policy-database cluster.open-cluster-management.io/backup=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow PostgreSQL 연결을 사용자 지정하려면
connectionURLdata 필드를 직접 사용하고 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%>'
python -c 'import urllib.parse; import sys; print(urllib.parse.quote(sys.argv[1]))' '$uper<Secr&t%>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 -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"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공하면 curl 명령은 다음 메시지와 유사한 값을 반환합니다.
{"data":[],"metadata":{"page":1,"pages":0,"per_page":20,"total":0}}{"data":[],"metadata":{"page":1,"pages":0,"per_page":20,"total":0}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공하지 못하면 curl 명령에서 두 메시지 중 하나를 반환할 수 있습니다.
{"message":"The database is unavailable"}{"message":"The database is unavailable"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow {"message":"Internal Error"}{"message":"Internal Error"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 메시지가 표시되면 다음 명령을 사용하여
open-cluster-management네임스페이스의 Kubernetes 이벤트를 확인합니다.oc -n open-cluster-management get events --field-selector reason=OCMComplianceEventsDBError
oc -n open-cluster-management get events --field-selector reason=OCMComplianceEventsDBErrorCopy to Clipboard Copied! Toggle word wrap Toggle overflow event에서
governance-policy-propagator로그를 볼 수 있는 지침을 수신하는 경우 다음 명령을 실행합니다.oc -n open-cluster-management logs -l name=governance-policy-propagator -f
oc -n open-cluster-management logs -l name=governance-policy-propagator -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자, 암호 또는 데이터베이스가 잘못 지정되었음을 나타내는 오류 메시지가 표시될 수 있습니다. 다음 메시지 예제를 참조하십시오.
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"
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"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
다음 명령을 사용하여 올바른 PostgreSQL 연결 설정으로
governance-policy-databaseSecret리소스를 업데이트합니다.
oc -n open-cluster-management edit secret governance-policy-database
oc -n open-cluster-management edit secret governance-policy-databaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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}')"echo "https://$(oc -n open-cluster-management get route governance-history-api -o=jsonpath='{.spec.host}')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력은 Red Hat Advanced Cluster Management Hub 클러스터의 도메인 이름과 유사할 수 있습니다.
https://governance-history-api-open-cluster-management.apps.openshift.redhat.com
https://governance-history-api-open-cluster-management.apps.openshift.redhat.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 유사한
AddOnDeploymentConfig오브젝트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
value매개변수 값을 규정 준수 기록 외부 URL로 바꿉니다.
-
2.5.3.1. 모든 관리 클러스터에서 활성화 링크 복사링크가 클립보드에 복사되었습니다!
모든 관리 클러스터에서 규정 준수 기록 API를 활성화하여 관리 클러스터의 규정 준수 이벤트를 기록합니다. 다음 단계를 완료합니다.
다음 명령과 함께
AddOnDeploymentConfig를 사용하도록governance-policy-frameworkClusterManagementAddOn오브젝트를 구성합니다.oc edit ClusterManagementAddOn governance-policy-framework
oc edit ClusterManagementAddOn governance-policy-frameworkCopy to Clipboard Copied! Toggle word wrap Toggle overflow spec.supportedConfigs배열을 추가하거나 업데이트합니다. 리소스에 다음 구성이 있을 수 있습니다.- group: addon.open-cluster-management.io resource: addondeploymentconfigs defaultConfig: name: governance-policy-framework namespace: open-cluster-management- group: addon.open-cluster-management.io resource: addondeploymentconfigs defaultConfig: name: governance-policy-framework namespace: open-cluster-managementCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.3.2. 단일 관리 클러스터 활성화 링크 복사링크가 클립보드에 복사되었습니다!
단일 관리형 클러스터에서 규정 준수 기록 API를 활성화하여 관리 클러스터의 규정 준수 이벤트를 기록합니다. 다음 단계를 완료합니다.
관리 클러스터 네임스페이스에서
governance-policy-frameworkManagedClusterAddOn리소스를 구성합니다. 다음 명령을 사용하여 Red Hat Advanced Cluster Management Hub 클러스터에서 다음 명령을 실행합니다.oc -n <manage-cluster-namespace> edit ManagedClusterAddOn governance-policy-framework
oc -n <manage-cluster-namespace> edit ManagedClusterAddOn governance-policy-frameworkCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
<
;manage-cluster-namespace> 자리 표시자를 활성화하려는 관리 클러스터 이름으로 교체합니다.
-
<
다음 예와 유사한 항목을 갖도록
spec.configs배열을 추가하거나 업데이트합니다.- group: addon.open-cluster-management.io resource: addondeploymentconfigs name: governance-policy-framework namespace: open-cluster-management
- group: addon.open-cluster-management.io resource: addondeploymentconfigs name: governance-policy-framework namespace: open-cluster-managementCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성을 확인하려면 관리 클러스터의 배포가
--compliance-api-url컨테이너 인수를 사용하고 있는지 확인합니다. 다음 명령을 실행합니다.oc -n open-cluster-management-agent-addon get deployment governance-policy-framework -o jsonpath='{.spec.template.spec.containers[1].args}'oc -n open-cluster-management-agent-addon get deployment governance-policy-framework -o jsonpath='{.spec.template.spec.containers[1].args}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력은 다음과 유사할 수 있습니다.
["--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"]
["--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"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 정책 규정 준수 이벤트는 정책 준수 기록 API에 기록됩니다.
정책 준수 이벤트가 특정 관리 클러스터에 기록되지 않는 경우 영향을 받는 클러스터의
governance-policy-framework로그를 확인합니다.oc -n open-cluster-management-agent-addon logs deployment/governance-policy-framework -f
oc -n open-cluster-management-agent-addon logs deployment/governance-policy-framework -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 메시지와 유사한 로그 메시지가 표시됩니다.
메시지값이 비어 있으면 정책 규정 준수 기록 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": ""}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": ""}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 정책 규정 준수 기록 API URL이 잘못된 경우 다음 명령을 사용하여 허브 클러스터의 URL을 편집합니다.
oc -n open-cluster-management edit AddOnDeploymentConfig governance-policy-framework
oc -n open-cluster-management edit AddOnDeploymentConfig governance-policy-frameworkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고: 네트워크 통신 문제가 발생하면 네트워크 인프라를 기반으로 문제를 진단해야 합니다.
2.5.4. 추가 리소스 링크 복사링크가 클립보드에 복사되었습니다!
- 정책 준수 기록 API(기술 프리뷰) 를 참조하십시오.