검색

2.5. 정책 규정 준수 내역 (기술 프리뷰)

download PDF

정책 준수 기록 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에 정책 규정 준수 이벤트를 기록하도록 관리형 클러스터를 구성합니다. 모든 클러스터 또는 클러스터의 하위 집합에서 이를 활성화할 수 있습니다. 다음 단계를 완료합니다.

  1. PostgreSQL 서버를 클러스터 관리자로 구성합니다. Red Hat Advanced Cluster Management Hub 클러스터에 PostgreSQL을 배포한 경우 psql 명령을 사용하도록 PostgreSQL 포트를 일시적으로 포트 전달하십시오. 다음 명령을 실행합니다.

    oc -n <PostgreSQL namespace> port-forward <PostgreSQL pod name> 5432:5432
  2. 다른 터미널에서 다음 명령과 유사한 PostgreSQL 서버에 로컬로 연결합니다.

    psql 'postgres://postgres:@127.0.0.1:5432/postgres'
  3. 다음 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";
  4. 이 데이터베이스를 정책 준수 기록 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 값을 적절하게 변경해야 합니다.
  5. 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=""
  6. 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%>'
  7. governance-policy-database 시크릿 을 생성한 후 명령을 실행하여 정책 규정 준수 기록 API를 테스트합니다. OpenShift Route 오브젝트는 동일한 네임스페이스에 자동으로 생성됩니다. 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"}
      1. 메시지가 표시되면 다음 명령을 사용하여 open-cluster-management 네임스페이스의 Kubernetes 이벤트를 확인합니다.

        oc -n open-cluster-management get events --field-selector reason=OCMComplianceEventsDBError
      2. event에서 governance-policy-propagator 로그를 볼 수 있는 지침을 수신하는 경우 다음 명령을 실행합니다.

        oc -n open-cluster-management logs -l name=governance-policy-propagator -f
      3. 사용자, 암호 또는 데이터베이스가 잘못 지정되었음을 나타내는 오류 메시지가 표시될 수 있습니다. 다음 메시지 예제를 참조하십시오.

        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"
      4. 다음 명령을 사용하여 올바른 PostgreSQL 연결 설정으로 governance-policy-database Secret 리소스를 업데이트합니다.
    oc -n open-cluster-management edit secret governance-policy-database

2.5.3. 규정 준수 기록 API URL 설정

정책 규정 준수 기록 API URL을 설정하여 관리 클러스터에서 기능을 활성화합니다. 다음 단계를 완료합니다.

  1. 다음 명령을 사용하여 정책 규정 준수 기록 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
  2. 다음 예와 유사한 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를 활성화하여 관리 클러스터의 규정 준수 이벤트를 기록합니다. 다음 단계를 완료합니다.

  1. 다음 명령과 함께 AddOnDeploymentConfig 를 사용하도록 governance-policy-framework ClusterManagementAddOn 오브젝트를 구성합니다.

    oc edit ClusterManagementAddOn governance-policy-framework
  2. spec.supportedConfigs 배열을 추가하거나 업데이트합니다. 리소스에 다음 구성이 있을 수 있습니다.

      - group: addon.open-cluster-management.io
        resource: addondeploymentconfigs
        defaultConfig:
          name: governance-policy-framework
          namespace: open-cluster-management

2.5.3.2. 단일 관리 클러스터 활성화

단일 관리형 클러스터에서 규정 준수 기록 API를 활성화하여 관리 클러스터의 규정 준수 이벤트를 기록합니다. 다음 단계를 완료합니다.

  1. 관리 클러스터 네임스페이스에서 governance-policy-framework ManagedClusterAddOn 리소스를 구성합니다. 다음 명령을 사용하여 Red Hat Advanced Cluster Management Hub 클러스터에서 다음 명령을 실행합니다.

    oc -n <manage-cluster-namespace> edit ManagedClusterAddOn governance-policy-framework
    • &lt ;manage-cluster-namespace&gt; 자리 표시자를 활성화하려는 관리 클러스터 이름으로 교체합니다.
  2. 다음 예와 유사한 항목을 갖도록 spec.configs 배열을 추가하거나 업데이트합니다.

    - group: addon.open-cluster-management.io
      resource: addondeploymentconfigs
      name: governance-policy-framework
      namespace: open-cluster-management
  3. 구성을 확인하려면 관리 클러스터의 배포가 --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에 기록됩니다.

    1. 정책 준수 이벤트가 특정 관리 클러스터에 기록되지 않는 경우 영향을 받는 클러스터의 governance-policy-framework 로그를 확인합니다.

      oc -n open-cluster-management-agent-addon logs deployment/governance-policy-framework -f
    2. 다음 메시지와 유사한 로그 메시지가 표시됩니다. 메시지 값이 비어 있으면 정책 규정 준수 기록 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": ""}
    3. 정책 규정 준수 기록 API URL이 잘못된 경우 다음 명령을 사용하여 허브 클러스터의 URL을 편집합니다.

      oc -n open-cluster-management edit AddOnDeploymentConfig governance-policy-framework

      참고: 네트워크 통신 문제가 발생하면 네트워크 인프라를 기반으로 문제를 진단해야 합니다.

2.5.4. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.