17.4. 정책 및 PolicyGenTemplate 리소스를 사용하여 관리형 클러스터 구성

적용된 정책 CR(사용자 정의 리소스)은 프로비저닝하는 관리형 클러스터를 구성합니다. RHACM(Red Hat Advanced Cluster Management)에서 PolicyGenTemplate CR을 사용하여 적용된 정책 CR을 생성하는 방법을 사용자 지정할 수 있습니다.

17.4.1. PolicyGenTemplate CRD 정보

PolicyGenTemplate CRD(사용자 정의 리소스 정의)는 PolicyGen 정책 생성기에 클러스터 구성에 포함할 CR(사용자 정의 리소스), CR을 생성된 정책에 결합하는 방법, 오버레이 콘텐츠를 사용하여 업데이트해야 하는 항목을 지시합니다.

다음 예제에서는 ztp-site-generate 참조 컨테이너에서 추출된 PolicyGenTemplate CR(common-du-ranGen.yaml)을 보여줍니다. common-du-ranGen.yaml 파일은 RHACM(Red Hat Advanced Cluster Management) 정책을 정의합니다. 정책은 CR에서 policyName 의 각 고유한 값에 대해 구성 CR 컬렉션을 관리합니다. common-du-ranGen.yaml 은 단일 배치 바인딩과 바인딩 규칙을 생성하여 bindingRules 섹션에 나열된 레이블을 기반으로 정책을 클러스터에 바인딩합니다.

PolicyGenTemplate CR - common-du-ranGen.yaml

---
apiVersion: ran.openshift.io/v1
kind: PolicyGenTemplate
metadata:
  name: "common"
  namespace: "ztp-common"
spec:
  bindingRules:
    common: "true" 1
  sourceFiles: 2
    - fileName: SriovSubscription.yaml
      policyName: "subscriptions-policy"
    - fileName: SriovSubscriptionNS.yaml
      policyName: "subscriptions-policy"
    - fileName: SriovSubscriptionOperGroup.yaml
      policyName: "subscriptions-policy"
    - fileName: SriovOperatorStatus.yaml
      policyName: "subscriptions-policy"
    - fileName: PtpSubscription.yaml
      policyName: "subscriptions-policy"
    - fileName: PtpSubscriptionNS.yaml
      policyName: "subscriptions-policy"
    - fileName: PtpSubscriptionOperGroup.yaml
      policyName: "subscriptions-policy"
    - fileName: PtpOperatorStatus.yaml
      policyName: "subscriptions-policy"
    - fileName: ClusterLogNS.yaml
      policyName: "subscriptions-policy"
    - fileName: ClusterLogOperGroup.yaml
      policyName: "subscriptions-policy"
    - fileName: ClusterLogSubscription.yaml
      policyName: "subscriptions-policy"
    - fileName: ClusterLogOperatorStatus.yaml
      policyName: "subscriptions-policy"
    - fileName: StorageNS.yaml
      policyName: "subscriptions-policy"
    - fileName: StorageOperGroup.yaml
      policyName: "subscriptions-policy"
    - fileName: StorageSubscription.yaml
      policyName: "subscriptions-policy"
    - fileName: StorageOperatorStatus.yaml
      policyName: "subscriptions-policy"
    - fileName: ReduceMonitoringFootprint.yaml
      policyName: "config-policy"
    - fileName: OperatorHub.yaml 3
      policyName: "config-policy"
    - fileName: DefaultCatsrc.yaml 4
      policyName: "config-policy" 5
      metadata:
        name: redhat-operators
      spec:
        displayName: disconnected-redhat-operators
        image: registry.example.com:5000/disconnected-redhat-operators/disconnected-redhat-operator-index:v4.9
    - fileName: DisconnectedICSP.yaml
      policyName: "config-policy"
      spec:
        repositoryDigestMirrors:
        - mirrors:
          - registry.example.com:5000
          source: registry.redhat.io

1
Common: "true" 는 이 레이블이 있는 모든 클러스터에 정책을 적용합니다.
2
sourceFiles 에 나열된 파일은 설치된 클러스터에 대한 Operator 정책을 생성합니다.
3
OperatorHub.yaml 은 연결이 끊긴 레지스트리에 대한 OperatorHub를 구성합니다.
4
DefaultCatsrc.yaml 은 연결이 끊긴 레지스트리의 카탈로그 소스를 구성합니다.
5
PolicyName: "config-policy" 는 Operator 서브스크립션을 구성합니다. OperatorHub CR은 기본값을 비활성화하고 이 CR은 redhat-operators 를 연결이 끊긴 레지스트리를 가리키는 CatalogSource CR로 대체합니다.

PolicyGenTemplate CR은 포함된 여러 CR로 구성할 수 있습니다. hub 클러스터에 다음 예제 CR을 적용하여 단일 CR을 포함하는 정책을 생성합니다.

apiVersion: ran.openshift.io/v1
kind: PolicyGenTemplate
metadata:
  name: "group-du-sno"
  namespace: "ztp-group"
spec:
  bindingRules:
    group-du-sno: ""
  mcp: "master"
  sourceFiles:
    - fileName: PtpConfigSlave.yaml
      policyName: "config-policy"
      metadata:
        name: "du-ptp-slave"
      spec:
        profile:
        - name: "slave"
          interface: "ens5f0"
          ptp4lOpts: "-2 -s --summary_interval -4"
          phc2sysOpts: "-a -r -n 24"

소스 파일 PtpConfigSlave.yaml 을 예로 사용하여 파일은 PtpConfig CR을 정의합니다. PtpConfigSlave 예제에 대해 생성된 정책의 이름은 group-du-sno-config-policy 입니다. 생성된 group-du-sno-config-policy 에 정의된 PtpConfig CR의 이름은 du-ptp-slave 입니다. PtpConfigSlave.yaml 에 정의된 사양 은 소스 파일에 정의된 다른 사양 항목과 함께 du-ptp-slave 아래에 배치됩니다.

다음 예제에서는 group-du-sno-config-policy CR을 보여줍니다.

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: group-du-ptp-config-policy
  namespace: groups-sub
  annotations:
    policy.open-cluster-management.io/categories: CM Configuration Management
    policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
    policy.open-cluster-management.io/standards: NIST SP 800-53
spec:
    remediationAction: inform
    disabled: false
    policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
                name: group-du-ptp-config-policy-config
            spec:
                remediationAction: inform
                severity: low
                namespaceselector:
                    exclude:
                        - kube-*
                    include:
                        - '*'
                object-templates:
                    - complianceType: musthave
                      objectDefinition:
                        apiVersion: ptp.openshift.io/v1
                        kind: PtpConfig
                        metadata:
                            name: du-ptp-slave
                            namespace: openshift-ptp
                        spec:
                            recommend:
                                - match:
                                - nodeLabel: node-role.kubernetes.io/worker-du
                                  priority: 4
                                  profile: slave
                            profile:
                                - interface: ens5f0
                                  name: slave
                                  phc2sysOpts: -a -r -n 24
                                  ptp4lConf: |
                                    [global]
                                    #
                                    # Default Data Set
                                    #
                                    twoStepFlag 1
                                    slaveOnly 0
                                    priority1 128
                                    priority2 128
                                    domainNumber 24
                                    .....

17.4.2. PolicyGenTemplate CR을 사용자 정의할 때 권장 사항

사이트 구성 PolicyGenTemplate 사용자 정의 리소스(CR)를 사용자 정의할 때 다음 모범 사례를 고려하십시오.

  • 필요한 경우 몇 가지 정책을 사용하십시오. 정책을 더 적게 사용하려면 리소스를 줄일 수 있습니다. 각 추가 정책은 hub 클러스터 및 배포된 관리형 클러스터에 대한 오버헤드를 생성합니다. CR은 PolicyGenTemplate CR의 policyName 필드를 기반으로 정책과 결합됩니다. policyName 의 값이 동일한 동일한 PolicyGenTemplate 의 CR은 단일 정책으로 관리됩니다.
  • 연결이 끊긴 환경에서는 모든 Operator가 포함된 단일 인덱스로 레지스트리를 구성하여 모든 Operator에 대해 단일 카탈로그 소스를 사용합니다. 관리 클러스터의 추가 CatalogSource CR마다 CPU 사용량이 증가합니다.
  • MachineConfig CR은 설치 중에 적용되도록 SiteConfig CR에 추가Manifest 로 포함되어야 합니다. 이렇게 하면 클러스터가 애플리케이션을 배포할 준비가 될 때까지 전체 시간이 단축될 수 있습니다.
  • PolicyGenTemplates 는 원하는 버전을 명시적으로 식별하기 위해 channel 필드를 재정의해야 합니다. 이렇게 하면 업그레이드 중 소스 CR의 변경 사항이 생성된 서브스크립션을 업데이트하지 않습니다.

추가 리소스

  • RHACM을 사용하여 클러스터 스케일링에 대한 권장 사항은 성능 및 확장성을 참조하십시오.
참고

hub 클러스터에서 많은 수의 통화 클러스터를 관리할 때 리소스 사용량을 줄이기 위한 정책 수를 최소화합니다.

여러 구성 CR을 단일 또는 제한된 정책 수로 그룹화하는 것은 hub 클러스터의 전체 정책 수를 줄이는 한 가지 방법입니다. 사이트 구성 관리 정책의 공통, 그룹 및 사이트 계층을 사용하는 경우 사이트별 구성을 단일 정책으로 결합하는 것이 특히 중요합니다.

17.4.3. RAN 배포를 위한 PolicyGenTemplate CR

PGT( PolicyGenTemplate ) 사용자 정의 리소스(CR)를 사용하여 GitOps zero touch provisioning(ZTP) 파이프라인을 사용하여 클러스터에 적용된 구성을 사용자 지정합니다. PGT CR을 사용하면 클러스터에서 구성 CR 세트를 관리하기 위해 하나 이상의 정책을 생성할 수 있습니다. PGT는 관리형 CR 세트를 식별하고, 이를 정책으로 번들하고, 해당 CR을 기반으로 정책을 빌드하며, 라벨 바인딩 규칙을 사용하여 정책을 클러스터와 연결합니다.

GitOps ZTP 컨테이너에서 얻은 참조 구성은 클러스터가 RAN(Radio Access Network) 분산 장치(DU) 애플리케이션의 일반적인 성능 및 리소스 사용률 제약 조건을 지원할 수 있도록 중요한 기능 및 노드 튜닝 설정 세트를 제공하도록 설계되었습니다. 기본 구성의 변경 또는 누락은 기능 가용성, 성능 및 리소스 사용률에 영향을 줄 수 있습니다. 참조 PolicyGenTemplate CR을 기반으로 사용하여 특정 사이트 요구 사항에 맞게 구성 파일의 계층을 생성합니다.

RAN DU 클러스터 구성에 대해 정의된 기준의 PolicyGenTemplate CR은 GitOps ZTP ztp-site-generate 컨테이너에서 추출할 수 있습니다. 자세한 내용은 " GitOps ZTP 사이트 구성 리포지토리 준비"를 참조하십시오.

PolicyGenTemplate CR은 ./out/argocd/example/policygentemplates 폴더에 있습니다. 참조 아키텍처에는 공통, 그룹 및 사이트별 구성 CR이 있습니다. 각 PolicyGenTemplate CR은 ./out/source-crs 폴더에 있는 다른 CR을 나타냅니다.

RAN 클러스터 구성과 관련된 PolicyGenTemplate CR은 아래에 설명되어 있습니다. PolicyGenTemplate CR은 단일 노드, 3 노드 컴팩트 및 표준 클러스터 구성의 차이점을 설명하기 위해 그룹 PolicyGenTemplate CR에 대해 제공됩니다. 마찬가지로 단일 노드 클러스터 및 다중 노드(컴파일 또는 표준) 클러스터에 사이트별 구성 변형이 제공됩니다. 배포와 관련된 그룹 및 사이트별 구성 변형을 사용합니다.

표 17.4. RAN 배포를 위한 PolicyGenTemplate CR

PolicyGenTemplate CR설명

example-multinode-site.yaml

다중 노드 클러스터에 적용할 CR 세트가 포함되어 있습니다. 이러한 CR은 RAN 설치에 일반적인 SR-IOV 기능을 구성합니다.

example-sno-site.yaml

단일 노드 OpenShift 클러스터에 적용되는 CR 세트가 포함되어 있습니다. 이러한 CR은 RAN 설치에 일반적인 SR-IOV 기능을 구성합니다.

common-ranGen.yaml

모든 클러스터에 적용되는 공통 RAN CR 세트를 포함합니다. 이러한 CR은 RAN과 기본 클러스터 튜닝에 대한 일반적인 클러스터 기능을 제공하는 운영자 세트를 구독합니다.

group-du-3node-ranGen.yaml

3-노드 클러스터에 대한 RAN 정책만 포함합니다.

group-du-sno-ranGen.yaml

단일 노드 클러스터에 대한 RAN 정책만 포함합니다.

group-du-standard-ranGen.yaml

표준 3개의 컨트롤 플레인 클러스터에 대한 RAN 정책을 포함합니다.

group-du-3node-validator-ranGen.yaml

3-노드 클러스터에 필요한 다양한 정책을 생성하는 데 사용되는 PolicyGenTemplate CR

group-du-standard-validator-ranGen.yaml

PolicyGenTemplate CR은 표준 클러스터에 필요한 다양한 정책을 생성하는 데 사용됩니다.

group-du-sno-validator-ranGen.yaml

PolicyGenTemplate CR은 단일 노드 OpenShift 클러스터에 필요한 다양한 정책을 생성하는 데 사용됩니다.

17.4.4. PolicyGenTemplate CR을 사용하여 관리형 클러스터 사용자 정의

다음 절차에 따라 zero touch provisioning(ZTP) 파이프라인을 사용하여 프로비저닝하는 관리형 클러스터에 적용되는 정책을 사용자 지정합니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 hub 클러스터에 로그인했습니다.
  • 필요한 설치 및 정책 CR을 생성하기 위해 hub 클러스터를 구성하셨습니다.
  • 사용자 지정 사이트 구성 데이터를 관리하는 Git 리포지토리를 생성했습니다. 리포지토리는 hub 클러스터에서 액세스할 수 있어야 하며 Argo CD 애플리케이션의 소스 리포지토리로 정의해야 합니다.

절차

  1. 사이트별 구성 CR에 대한 PolicyGenTemplate CR을 생성합니다.

    1. out/argocd/example/policygentemplates 폴더(예: example-sno-site.yaml 또는 example-multinode-site.yaml )에서 CR에 대한 적절한 예를 선택합니다.
    2. 예제 파일의 바인딩Rules 필드를 site Config CR에 포함된 사이트별 레이블과 일치하도록 변경합니다. 예제 site Config 파일에서 사이트 별 레이블은 sites: example-sno 입니다.

      참고

      PolicyGenTemplate bindingRules 필드에 정의된 레이블이 관련 관리 클러스터 site Config CR에 정의된 라벨과 일치하는지 확인합니다.

    3. 예제 파일의 내용을 원하는 구성과 일치하도록 변경합니다.
  2. 선택 사항: 전체 클러스터에 적용되는 공통 구성 CR에 대해 PolicyGenTemplate CR을 생성합니다.

    1. out/argocd/example/policygentemplates 폴더에 있는 CR에 대한 적절한 예를 선택합니다(예: common-ranGen.yaml ).
    2. 예제 파일의 내용을 원하는 구성과 일치하도록 변경합니다.
  3. 선택 사항: 플롯의 특정 클러스터 그룹에 적용되는 모든 그룹 구성 CR에 대해 PolicyGenTemplate CR을 생성합니다.

    오버라이드 사양 파일의 내용이 원하는 최종 상태와 일치하는지 확인합니다. out/source-crs 디렉터리에는 PolicyGenTemplate 템플릿에서 포함 및 덮어쓸 수 있는 source-crs의 전체 목록이 포함되어 있습니다.

    참고

    클러스터의 특정 요구 사항에 따라 클러스터 유형당 단일 그룹 정책이 필요할 수 있습니다. 특히 예제 그룹 정책에는 동일한 하드웨어 구성으로 구성된 클러스터 세트에서만 공유할 수 있는 단일 PerformancePolicy.yaml 파일이 있습니다.

    1. out/argocd/example/policygentemplates 폴더(예: group-du-sno-ranGen.yaml )에서 CR에 대한 적절한 예를 선택합니다.
    2. 예제 파일의 내용을 원하는 구성과 일치하도록 변경합니다.
  4. 선택 사항: 검증기를 생성하여 배포된 클러스터의 ZTP 설치 및 구성이 완료될 때 알리도록 정책 PolicyGenTemplate CR에 알릴 수 있습니다. 자세한 내용은 "Create a validator inform policy"를 참조하십시오.
  5. out/argocd/example/policygentemplates/ns.yaml 파일과 유사한 YAML 파일에 모든 정책 네임스페이스를 정의합니다.

    중요

    PolicyGenTemplate CR을 사용하여 동일한 파일에 Namespace CR을 포함하지 마십시오.

  6. out/argocd/example/policygentemplates/ kustomization.yaml 에 표시된 예제와 유사한 generators 섹션의 kustomization.yaml 파일에 PolicyGenTemplate CR 및 Namespace CR을 추가합니다.
  7. Git 리포지토리에 PolicyGenTemplate CR, 네임 스페이스 CR 및 관련 kustomization.yaml 파일을 커밋하고 변경 사항을 내보냅니다.

    ArgoCD 파이프라인은 변경 사항을 감지하고 관리형 클러스터 배포를 시작합니다. SiteConfig CR과 PolicyGenTemplate CR로 동시에 변경 사항을 푸시할 수 있습니다.

17.4.5. 관리형 클러스터 정책 배포 진행 상황 모니터링

ArgoCD 파이프라인은 Git에서 PolicyGenTemplate CR을 사용하여 RHACM 정책을 생성한 다음 hub 클러스터에 동기화합니다. 지원 서비스가 관리형 클러스터에 OpenShift Container Platform을 설치한 후 관리형 클러스터 정책 동기화의 진행 상황을 모니터링할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 hub 클러스터에 로그인했습니다.

절차

  1. Topology Aware Lifecycle Manager (TALM)는 클러스터에 바인딩된 구성 정책을 적용합니다.

    클러스터 설치가 완료되고 클러스터가 Ready 가 되면 이 클러스터에 해당하는 ClusterGroupUpgrade CR과 함께 ran.openshift.io/ztp-deploy-wave 주석 이 정의된 순서가 지정된 정책 목록이 TALM에 의해 자동으로 생성됩니다. 클러스터의 정책은 ClusterGroupUpgrade CR에 나열된 순서대로 적용됩니다.

    다음 명령을 사용하여 구성 정책 조정의 상위 수준 진행 상황을 모니터링할 수 있습니다.

    $ export CLUSTER=<clusterName>
    $ oc get clustergroupupgrades -n ztp-install $CLUSTER -o jsonpath='{.status.conditions[-1:]}' | jq

    출력 예

    {
      "lastTransitionTime": "2022-11-09T07:28:09Z",
      "message": "Remediating non-compliant policies",
      "reason": "InProgress",
      "status": "True",
      "type": "Progressing"
    }

  2. RHACM 대시보드 또는 명령줄을 사용하여 자세한 클러스터 정책 준수 상태를 모니터링할 수 있습니다.

    1. oc 를 사용하여 정책 준수를 확인하려면 다음 명령을 실행합니다.

      $ oc get policies -n $CLUSTER

      출력 예

      NAME                                                     REMEDIATION ACTION   COMPLIANCE STATE   AGE
      ztp-common.common-config-policy                          inform               Compliant          3h42m
      ztp-common.common-subscriptions-policy                   inform               NonCompliant       3h42m
      ztp-group.group-du-sno-config-policy                     inform               NonCompliant       3h42m
      ztp-group.group-du-sno-validator-du-policy               inform               NonCompliant       3h42m
      ztp-install.example1-common-config-policy-pjz9s          enforce              Compliant          167m
      ztp-install.example1-common-subscriptions-policy-zzd9k   enforce              NonCompliant       164m
      ztp-site.example1-config-policy                          inform               NonCompliant       3h42m
      ztp-site.example1-perf-policy                            inform               NonCompliant       3h42m

    2. RHACM 웹 콘솔에서 정책 상태를 확인하려면 다음 작업을 수행합니다.

      1. 관리정책 찾기를 클릭합니다.
      2. 클러스터 정책을 클릭하여 상태를 확인합니다.

모든 클러스터 정책이 호환되면 클러스터의 ZTP 설치 및 구성이 완료됩니다. ztp-done 레이블이 클러스터에 추가되었습니다.

참조 구성에서 준수되는 최종 정책은 *-du-validator-policy 정책에 정의된 정책입니다. 이 정책은 클러스터를 준수하는 경우 모든 클러스터 구성, Operator 설치 및 Operator 구성이 완료되었는지 확인합니다.

17.4.6. 구성 정책 CR 생성 검증

CR(Policy 사용자 정의 리소스)은 생성된 PolicyGenTemplate 과 동일한 네임스페이스에 생성됩니다. 다음 명령을 사용하여 표시된 대로 동일한 문제 해결 흐름은 ztp-common,ztp-group 또는 ztp-site 기반 여부에 관계없이 PolicyGenTemplate 에서 생성된 모든 정책 CR에 적용됩니다.

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

정책 줄 바꿈 CR 세트가 표시되어야 합니다.

정책이 동기화에 실패한 경우 다음 문제 해결 단계를 사용하십시오.

절차

  1. 정책에 대한 자세한 정보를 표시하려면 다음 명령을 실행합니다.

    $ oc describe -n openshift-gitops application policies
  2. Status: Conditions: to show the error logs를 확인합니다. 예를 들어 유효하지 않은 sourceFile NetNamespacefileName 을 설정하면 아래 표시된 오류가 생성됩니다.

    Status:
      Conditions:
        Last Transition Time:  2021-11-26T17:21:39Z
        Message:               rpc error: code = Unknown desc = `kustomize build /tmp/https___git.com/ran-sites/policies/ --enable-alpha-plugins` failed exit status 1: 2021/11/26 17:21:40 Error could not find test.yaml under source-crs/: no such file or directory Error: failure in plugin configured via /tmp/kust-plugin-config-52463179; exit status 1: exit status 1
        Type:  ComparisonError
  3. 상태 확인: 동기화:. Status: Conditions: 에 로그 오류가 있는 경우 Status: Sync: shows Unknown 또는 Error:가 표시됩니다.

    Status:
      Sync:
        Compared To:
          Destination:
            Namespace:  policies-sub
            Server:     https://kubernetes.default.svc
          Source:
            Path:             policies
            Repo URL:         https://git.com/ran-sites/policies/.git
            Target Revision:  master
        Status:               Error
  4. RHACM(Red Hat Advanced Cluster Management)이 ManagedCluster 오브젝트에 적용되는 정책을 인식할 때 정책 CR 오브젝트가 클러스터 네임스페이스에 적용됩니다. 정책이 클러스터 네임스페이스에 복사되었는지 확인합니다.

    $ oc get policy -n $CLUSTER

    출력 예:

    NAME                                         REMEDIATION ACTION   COMPLIANCE STATE   AGE
    ztp-common.common-config-policy              inform               Compliant          13d
    ztp-common.common-subscriptions-policy       inform               Compliant          13d
    ztp-group.group-du-sno-config-policy         inform               Compliant          13d
    Ztp-group.group-du-sno-validator-du-policy   inform               Compliant          13d
    ztp-site.example-sno-config-policy           inform               Compliant          13d

    RHACM은 적용되는 모든 정책을 클러스터 네임스페이스에 복사합니다. 복사한 정책 이름에는 < policyGenTemplate.Namespace>.<policyGenTemplate.Name>-<policyName > 형식이 있습니다.

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

    $ oc get placementrule -n $NS
  6. 다음 명령을 사용하여 누락된 정책, 일반, 그룹 또는 사이트에 적합한 PlacementRule 이름을 기록해 둡니다.

    $ oc get placementrule -n $NS <placementRuleName> -o yaml
    • status-decisions에는 클러스터 이름이 포함되어야 합니다.
    • 사양에서 matchSelector 의 키-값 쌍은 관리 클러스터의 라벨과 일치해야 합니다.
  7. 다음 명령을 사용하여 ManagedCluster 오브젝트에서 라벨을 확인합니다.

    $ oc get ManagedCluster $CLUSTER -o jsonpath='{.metadata.labels}' | jq
  8. 다음 명령을 사용하여 어떤 정책이 호환되는지 확인하십시오.

    $ oc get policy -n $CLUSTER

    Namespace,OperatorGroup, Subscription 정책이 준수하지만 Operator 구성 정책이 일치하지 않으면 Operator가 관리 클러스터에 설치되지 않은 것입니다. 이로 인해 CRD가 아직 spoke에 적용되지 않기 때문에 Operator 구성 정책이 적용되지 않습니다.

17.4.7. 정책 조정 다시 시작

예를 들어 ClusterGroupUpgrade CR(사용자 정의 리소스)이 시간 초과된 경우 예기치 않은 규정 준수 문제가 발생하면 정책 조정을 다시 시작할 수 있습니다.

절차

  1. 관리형 클러스터가 Ready 가 되면 Topology Aware Lifecycle Manager의 ztp-install 네임스페이스에 ClusterGroupUpgrade CR이 생성됩니다.

    $ export CLUSTER=<clusterName>
    $ oc get clustergroupupgrades -n ztp-install $CLUSTER
  2. 예기치 않은 문제가 발생하고 정책이 구성된 시간 내에 불만이 발생하지 않는 경우 (기본값은 4시간) ClusterGroupUpgrade CR의 상태에 UpgradeTimedOut 이 표시됩니다.

    $ oc get clustergroupupgrades -n ztp-install $CLUSTER -o jsonpath='{.status.conditions[?(@.type=="Ready")]}'
  3. UpgradeTimedOut 상태의 ClusterGroupUpgrade CR은 매시간 정책 조정을 자동으로 재시작합니다. 정책을 변경한 경우 기존 ClusterGroupUpgrade CR을 삭제하여 즉시 재시도를 시작할 수 있습니다. 이렇게 하면 정책을 즉시 조정하기 시작하는 새 ClusterGroupUpgrade CR의 자동 생성이 트리거됩니다.

    $ oc delete clustergroupupgrades -n ztp-install $CLUSTER

ClusterGroupUpgrade CR이 UpgradeCompleted 상태로 완료되고 관리 클러스터에 ztp-done 레이블이 적용된 경우 PolicyGenTemplate 을 사용하여 추가 구성을 변경할 수 있습니다. 기존 ClusterGroupUpgrade CR을 삭제하면 TALM이 새 CR을 생성하지 않습니다.

이 시점에서 ZTP는 클러스터와의 상호 작용을 완료했으며 추가 상호 작용을 업데이트로 처리하고 정책 수정을 위해 생성된 새로운 ClusterGroupUpgrade CR을 처리해야 합니다.

추가 리소스

17.4.8. 정책을 사용하여 적용된 관리 클러스터 CR 변경

정책을 통해 관리 클러스터에 배포된 CR(사용자 정의 리소스)에서 콘텐츠를 제거할 수 있습니다.

기본적으로 Policy GenTemplate CR에서 생성된 모든 Policy CR에는 complianceType 필드가 musthave 로 설정되어 있습니다. 관리 클러스터의 CR에 지정된 콘텐츠가 모두 있으므로 제거된 콘텐츠가 없는 musthave 정책은 계속 호환됩니다. 이 구성을 사용하면 CR에서 콘텐츠를 제거할 때 TALM은 정책에서 콘텐츠를 제거하지만 콘텐츠는 관리 클러스터의 CR에서 제거되지 않습니다.

mustonlyhavecomplianceType 필드를 사용하면 정책에서 클러스터의 CR이 정책에 지정된 내용과 정확히 일치하도록 합니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 hub 클러스터에 로그인했습니다.
  • RHACM을 실행하는 허브 클러스터에서 관리 클러스터를 배포했습니다.
  • hub 클러스터에 Topology Aware Lifecycle Manager를 설치했습니다.

절차

  1. 영향을 받는 CR에서 더 이상 필요하지 않은 콘텐츠를 제거합니다. 이 예에서는 disableDrain: false 행이 SriovOperatorConfig CR에서 제거되었습니다.

    CR 예

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovOperatorConfig
    metadata:
      name: default
      namespace: openshift-sriov-network-operator
    spec:
      configDaemonNodeSelector:
        "node-role.kubernetes.io/$mcp": ""
      disableDrain: true
      enableInjector: true
      enableOperatorWebhook: true

  2. 영향을 받는 정책의 complianceTypegroup-du-sno-ranGen.yaml 파일에서 mustonlyhave 로 변경합니다.

    YAML의 예

    # ...
    - fileName: SriovOperatorConfig.yaml
      policyName: "config-policy"
      complianceType: mustonlyhave
    # ...

  3. ClusterGroupUpdates CR을 생성하고 CR 변경 사항을 받아야 하는 클러스터를 지정합니다.

    ClusterGroupUpdates CR의 예

    apiVersion: ran.openshift.io/v1alpha1
    kind: ClusterGroupUpgrade
    metadata:
      name: cgu-remove
      namespace: default
    spec:
      managedPolicies:
        - ztp-group.group-du-sno-config-policy
      enable: false
      clusters:
      - spoke1
      - spoke2
      remediationStrategy:
        maxConcurrency: 2
        timeout: 240
      batchTimeoutAction:

  4. 다음 명령을 실행하여 ClusterGroupUpgrade CR을 생성합니다.

    $ oc create -f cgu-remove.yaml
  5. 적절한 유지 관리 기간 동안 변경 사항을 적용할 준비가 되면 다음 명령을 실행하여 spec.enable 필드의 값을 true 로 변경합니다.

    $ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-remove \
    --patch '{"spec":{"enable":true}}' --type=merge

검증

  1. 다음 명령을 실행하여 정책의 상태를 확인합니다.

    $ oc get <kind> <changed_cr_name>

    출력 예

    NAMESPACE   NAME                                                   REMEDIATION ACTION   COMPLIANCE STATE   AGE
    default     cgu-ztp-group.group-du-sno-config-policy               enforce                                 17m
    default     ztp-group.group-du-sno-config-policy                   inform               NonCompliant       15h

    정책의 COMPLIANCE STATECompliant 인 경우 CR이 업데이트되고 원하지 않는 콘텐츠가 제거됨을 의미합니다.

  2. 관리 클러스터에서 다음 명령을 실행하여 정책이 대상 클러스터에서 제거되었는지 확인합니다.

    $ oc get <kind> <changed_cr_name>

    결과가 없는 경우 관리 클러스터에서 CR이 제거됩니다.

17.4.9. ZTP 설치에 대한 수행 표시

제로 대화 프로비저닝(ZTP)은 클러스터의 ZTP 설치 상태를 확인하는 프로세스를 단순화합니다. ZTP 상태는 클러스터 설치, 클러스터 구성 및 ZTP의 세 단계로 이동합니다.

클러스터 설치 단계
클러스터 설치 단계는 ManagedCluster CR의 ManagedCluster joinManagedClusterAvailable 조건에 의해 표시됩니다. ManagedCluster CR에 이러한 조건이 없거나 조건이 False 로 설정된 경우 클러스터는 여전히 설치 단계에 있습니다. 설치에 대한 자세한 내용은 AgentClusterInstallClusterDeployment CR에서 확인할 수 있습니다. 자세한 내용은 " GitOps ZTP 문제 해결"을 참조하십시오.
클러스터 구성 단계
클러스터 구성 단계는 ztp-running 라벨에 의해 표시됩니다. 클러스터 구성 단계는 클러스터에 ManagedCluster CR을 적용했습니다.
ZTP 수행

클러스터 설치 및 구성이 ZTP 완료 단계에서 완료됩니다. 이는 ztp-running 레이블을 제거하고 ManagedCluster CR에 ztp-done 라벨을 추가하여 표시됩니다. ztp-done 레이블은 구성이 적용되었으며 기준 DU 구성이 클러스터 튜닝을 완료했음을 보여줍니다.

ZTP done 상태로 전환하는 것은 RHACM(Red Hat Advanced Cluster Management) 유효성 검사기의 준수 상태에 대한 조건입니다. 이 정책은 완료된 설치에 대한 기존 기준을 캡처하고 관리 클러스터의 ZTP 프로비저닝이 완료된 경우에만 규정 준수 상태로 이동하는지 검증합니다.

유효성 검사기 알림 정책은 클러스터의 구성이 완전히 적용되고 Operator가 초기화를 완료했는지 확인합니다. 정책은 다음을 검증합니다.

  • 대상 MachineConfigPool 에는 예상 항목이 포함되어 있으며 업데이트를 완료했습니다. 모든 노드를 사용할 수 있으며 성능이 저하되지 않습니다.
  • SR-IOV Operator는 하나 이상의 SriovNetworkNodeStatesyncStatus: Succeeded 에 표시된 초기화를 완료했습니다.
  • PTP Operator 데몬 세트가 있습니다.