Menu Close

18.17.2. 정책 CR 생성 검증

ArgoCD는 생성된 PolicyGenTemplate 과 동일한 네임스페이스에 정책 CR(사용자 정의 리소스)을 생성합니다. 동일한 문제 해결 흐름은 공통, 그룹 또는 사이트 기반 여부와 관계없이 PolicyGenTemplates 에서 생성된 모든 정책 CR에 적용됩니다.

정책 CR의 상태를 확인하려면 다음 명령을 입력합니다.

$ export NS=<namespace>
$ oc get policy -n $NS

반환된 출력에는 예상 정책 래핑 CR 세트가 표시됩니다. 오브젝트가 반환되지 않으면 다음 절차를 사용하여 SiteConfig 에서 정책 CR로 ArgoCD 파이프라인 흐름의 문제를 해결합니다.

절차

  1. PolicyGenTemplate 과 hub 클러스터의 동기화를 확인합니다.

    $ oc get policygentemplate -A

    또는

    $ oc get policygentemplate -n $NS

    PolicyGenTemplate 이 동기화되지 않으면 다음 상황 중 하나가 발생했습니다.

    • 클러스터 애플리케이션이 Git 리포지토리의 CR을 허브에 동기화하지 못했습니다. 다음 명령을 사용하여 다음을 확인합니다.

      $ oc describe -n openshift-gitops application clusters

      Status: Synced (상태: 동기화)를 확인하고 Revision: 이 서브스크립션된 리포지토리로 내보낸 커밋의 SHA인지 확인합니다.

    • 컨테이너 이미지를 가져오지 못했으므로 사전 동기화 후크가 실패했습니다. 클러스터 애플리케이션에서 사전 동기화 작업의 상태가 ArgoCD 대시보드를 확인합니다.
  2. 정책이 클러스터 네임스페이스에 복사되었는지 확인합니다. ACM에서 정책이 ManagedCluster 에 적용됨을 인식하면 ACM은 policy CR 오브젝트를 클러스터 네임스페이스에 적용합니다.

    $ oc get policy -n <clusterName>

    ACM은 여기에 적용되는 모든 공통, 그룹 및 사이트 정책을 복사합니다. 정책 이름은 <policyNamespace><policyName> 입니다.

  3. 클러스터 네임스페이스에 복사되지 않은 정책에 대한 배치 규칙을 확인합니다. 해당 정책에 대한 PlacementRulematchSelectorManagedCluster 의 라벨과 일치해야 합니다.

    $ oc get placementrule -n $NS
  4. 공통, 그룹 또는 사이트 정책이 누락된 경우 PlacementRule 이름을 기록해 두십시오.

     oc get placementrule -n $NS <placmentRuleName> -o yaml
    • 상태 결정 값에는 클러스터 이름이 포함되어야 합니다.
    • 사양의 matchSelector 키 값은 관리 클러스터의 라벨과 일치해야 합니다. ManagedCluster 의 라벨을 확인합니다.

       oc get ManagedCluster $CLUSTER -o jsonpath='{.metadata.labels}' | jq

      예제

      apiVersion: apps.open-cluster-management.io/v1
      kind: PlacementRule
      metadata:
        name: group-test1-policies-placementrules
        namespace: group-test1-policies
      spec:
        clusterSelector:
          matchExpressions:
          - key: group-test1
            operator: In
            values:
            - ""
      status:
        decisions:
        - clusterName: <myClusterName>
          clusterNamespace: <myClusterName>

  5. 모든 정책이 준수되었는지 확인합니다.

     oc get policy -n $CLUSTER

    네임스페이스, OperatorGroup 및 서브스크립션 정책이 호환되지만 Operator 구성 정책은 설치되지 않은 경우가 많습니다.