12.6. 관리 클러스터에서 정책 업데이트


TALM( Topology Aware Lifecycle Manager)은 ClusterGroupUpgrade CR(사용자 정의 리소스)에 지정된 클러스터에 대한 정보 정책 세트를 수정합니다. TALM은 PlacementBinding CR의 bindingOverrides.remediationActionsubFilter 사양을 통해 Policy CR의 remediationAction 사양을 제어하여 정책을 수정하고 알려 줍니다. 각 정책에는 해당 RHACM 배치 규칙과 RHACM 배치 바인딩이 있습니다.

TALM은 현재 배치의 각 클러스터를 적용 가능한 관리 정책에 해당하는 배치 규칙에 하나씩 추가합니다. 클러스터가 이미 정책을 준수하는 경우 TALM은 준수하는 클러스터에 해당 정책을 적용하지 않습니다. 그런 다음 TALM은 비준수 클러스터에 다음 정책을 적용합니다. TALM이 일괄적으로 업데이트를 완료하면 모든 클러스터가 정책과 연결된 배치 규칙에서 제거됩니다. 그러면 다음 배치의 업데이트가 시작됩니다.

스포크 클러스터가 RHACM에 규정 준수 상태를 보고하지 않으면 허브 클러스터의 관리 정책에 TALM에 필요한 상태 정보가 누락될 수 있습니다. TALM은 다음과 같은 방법으로 이러한 사례를 처리합니다.

  • 정책의 status.compliant 필드가 누락된 경우 TALM은 정책을 무시하고 로그 항목을 추가합니다. 그런 다음 TALM은 정책의 status.status 필드를 계속 살펴봅니다.
  • 정책의 status.status 가 없으면 TALM에서 오류가 발생합니다.
  • 정책의 status.status 필드에 클러스터의 준수 상태가 누락된 경우 TALM은 해당 클러스터가 해당 정책을 준수하지 않는 것으로 간주합니다.

ClusterGroupUpgrade CR의 batchTimeoutAction은 클러스터의 업그레이드가 실패할 경우 어떻게 되는지 결정합니다. continue를 지정하여 실패한 클러스터를 건너뛰고 다른 클러스터를 업그레이드할 수 있으며, abort를 지정하여 모든 클러스터의 정책 수정을 중지할 수 있습니다. 제한 시간이 지나면 TALM은 클러스터에 더 이상 업데이트가 이루어지지 않도록 자신이 만든 모든 리소스를 제거합니다.

업그레이드 정책 예시

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: ocp-4.4.19.4
  namespace: platform-upgrade
spec:
  disabled: false
  policy-templates:
  - objectDefinition:
      apiVersion: policy.open-cluster-management.io/v1
      kind: ConfigurationPolicy
      metadata:
        name: upgrade
      spec:
        namespaceselector:
          exclude:
          - kube-*
          include:
          - '*'
        object-templates:
        - complianceType: musthave
          objectDefinition:
            apiVersion: config.openshift.io/v1
            kind: ClusterVersion
            metadata:
              name: version
            spec:
              channel: stable-4.19
              desiredUpdate:
                version: 4.4.19.4
              upstream: https://api.openshift.com/api/upgrades_info/v1/graph
            status:
              history:
                - state: Completed
                  version: 4.4.19.4
        remediationAction: inform
        severity: low
  remediationAction: inform
Copy to Clipboard Toggle word wrap

RHACM 정책에 대한 자세한 내용은 정책 개요 를 참조하십시오.

12.6.1. TALM으로 설치하는 관리형 클러스터에 대한 운영자 구독 구성

TALM(Topology Aware Lifecycle Manager)은 Operator의 구독 사용자 정의 리소스(CR)에 status.state.AtLatestKnown 필드가 포함되어 있는 경우에만 Operator에 대한 설치 계획을 승인할 수 있습니다.

프로세스

  1. 운영자의 구독 CR에 status.state.AtLatestKnown 필드를 추가합니다.

    서브스크립션 CR의 예

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: cluster-logging
      namespace: openshift-logging
      annotations:
        ran.openshift.io/ztp-deploy-wave: "2"
    spec:
      channel: "stable-6.2"
      name: cluster-logging
      source: redhat-operators-disconnected
      sourceNamespace: openshift-marketplace
      installPlanApproval: Manual
    status:
      state: AtLatestKnown 
    1
    Copy to Clipboard Toggle word wrap

    1
    status.state: AtLatestKnown 필드는 Operator 카탈로그에서 사용 가능한 최신 Operator 버전에 사용됩니다.
    참고

    레지스트리에 새로운 버전의 Operator가 출시되면 관련 정책이 준수되지 않게 됩니다.

  2. ClusterGroupUpgrade CR을 사용하여 변경된 구독 정책을 관리되는 클러스터에 적용합니다.

12.6.2. 관리되는 클러스터에 업데이트 정책 적용

정책을 적용하여 관리되는 클러스터를 업데이트할 수 있습니다.

사전 요구 사항

  • TALM(Topology Aware Lifecycle Manager)을 설치합니다.
  • TALM에는 RHACM 2.9 이상이 필요합니다.
  • 하나 이상의 관리형 클러스터를 프로비저닝합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.
  • 허브 클러스터에서 RHACM 정책을 만듭니다.

프로세스

  1. ClusterGroupUpgrade CR의 내용을 cgu-1.yaml 파일에 저장합니다.

    apiVersion: ran.openshift.io/v1alpha1
    kind: ClusterGroupUpgrade
    metadata:
      name: cgu-1
      namespace: default
    spec:
      managedPolicies: 
    1
    
        - policy1-common-cluster-version-policy
        - policy2-common-nto-sub-policy
        - policy3-common-ptp-sub-policy
        - policy4-common-sriov-sub-policy
      enable: false
      clusters: 
    2
    
      - spoke1
      - spoke2
      - spoke5
      - spoke6
      remediationStrategy:
        maxConcurrency: 2 
    3
    
        timeout: 240 
    4
    
      batchTimeoutAction: 
    5
    Copy to Clipboard Toggle word wrap
    1
    적용할 정책의 이름입니다.
    2
    업데이트할 클러스터 목록입니다.
    3
    maxConcurrency 필드는 동시에 업데이트되는 클러스터 수를 나타냅니다.
    4
    업데이트 시간 제한(분)입니다.
    5
    일괄 처리가 시간 초과되는 경우 발생하는 작업을 제어합니다. 가능한 값은 abort 또는 continue입니다 . 지정하지 않으면 기본값은 continue 입니다.
  2. 다음 명령을 실행하여 ClusterGroupUpgrade CR을 만듭니다.

    $ oc create -f cgu-1.yaml
    Copy to Clipboard Toggle word wrap
    1. 다음 명령을 실행하여 허브 클러스터에 ClusterGroupUpgrade CR이 생성되었는지 확인하세요.

      $ oc get cgu --all-namespaces
      Copy to Clipboard Toggle word wrap

      출력 예

      NAMESPACE   NAME  AGE  STATE      DETAILS
      default     cgu-1 8m55 NotEnabled Not Enabled
      Copy to Clipboard Toggle word wrap

    2. 다음 명령을 실행하여 업데이트 상태를 확인하세요.

      $ oc get cgu -n default cgu-1 -ojsonpath='{.status}' | jq
      Copy to Clipboard Toggle word wrap

      출력 예

      {
        "computedMaxConcurrency": 2,
        "conditions": [
          {
            "lastTransitionTime": "2022-02-25T15:34:07Z",
            "message": "Not enabled", 
      1
      
            "reason": "NotEnabled",
            "status": "False",
            "type": "Progressing"
          }
        ],
        "managedPoliciesContent": {
          "policy1-common-cluster-version-policy": "null",
          "policy2-common-nto-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"node-tuning-operator\",\"namespace\":\"openshift-cluster-node-tuning-operator\"}]",
          "policy3-common-ptp-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"ptp-operator-subscription\",\"namespace\":\"openshift-ptp\"}]",
          "policy4-common-sriov-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"sriov-network-operator-subscription\",\"namespace\":\"openshift-sriov-network-operator\"}]"
        },
        "managedPoliciesForUpgrade": [
          {
            "name": "policy1-common-cluster-version-policy",
            "namespace": "default"
          },
          {
            "name": "policy2-common-nto-sub-policy",
            "namespace": "default"
          },
          {
            "name": "policy3-common-ptp-sub-policy",
            "namespace": "default"
          },
          {
            "name": "policy4-common-sriov-sub-policy",
            "namespace": "default"
          }
        ],
        "managedPoliciesNs": {
          "policy1-common-cluster-version-policy": "default",
          "policy2-common-nto-sub-policy": "default",
          "policy3-common-ptp-sub-policy": "default",
          "policy4-common-sriov-sub-policy": "default"
        },
        "placementBindings": [
          "cgu-policy1-common-cluster-version-policy",
          "cgu-policy2-common-nto-sub-policy",
          "cgu-policy3-common-ptp-sub-policy",
          "cgu-policy4-common-sriov-sub-policy"
        ],
        "placementRules": [
          "cgu-policy1-common-cluster-version-policy",
          "cgu-policy2-common-nto-sub-policy",
          "cgu-policy3-common-ptp-sub-policy",
          "cgu-policy4-common-sriov-sub-policy"
        ],
        "remediationPlan": [
          [
            "spoke1",
            "spoke2"
          ],
          [
            "spoke5",
            "spoke6"
          ]
        ],
        "status": {}
      }
      Copy to Clipboard Toggle word wrap

      1
      ClusterGroupUpgrade CR의 spec.enable 필드가 false 로 설정되었습니다.
  3. 다음 명령을 실행하여 spec.enable 필드의 값을 true 로 변경합니다.

    $ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-1 \
    --patch '{"spec":{"enable":true}}' --type=merge
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 실행하여 업데이트 상태를 확인하세요.

    $ oc get cgu -n default cgu-1 -ojsonpath='{.status}' | jq
    Copy to Clipboard Toggle word wrap

    출력 예

    {
      "computedMaxConcurrency": 2,
      "conditions": [ 
    1
    
        {
          "lastTransitionTime": "2022-02-25T15:33:07Z",
          "message": "All selected clusters are valid",
          "reason": "ClusterSelectionCompleted",
          "status": "True",
          "type": "ClustersSelected"
        },
        {
          "lastTransitionTime": "2022-02-25T15:33:07Z",
          "message": "Completed validation",
          "reason": "ValidationCompleted",
          "status": "True",
          "type": "Validated"
        },
        {
          "lastTransitionTime": "2022-02-25T15:34:07Z",
          "message": "Remediating non-compliant policies",
          "reason": "InProgress",
          "status": "True",
          "type": "Progressing"
        }
      ],
      "managedPoliciesContent": {
        "policy1-common-cluster-version-policy": "null",
        "policy2-common-nto-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"node-tuning-operator\",\"namespace\":\"openshift-cluster-node-tuning-operator\"}]",
        "policy3-common-ptp-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"ptp-operator-subscription\",\"namespace\":\"openshift-ptp\"}]",
        "policy4-common-sriov-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"sriov-network-operator-subscription\",\"namespace\":\"openshift-sriov-network-operator\"}]"
      },
      "managedPoliciesForUpgrade": [
        {
          "name": "policy1-common-cluster-version-policy",
          "namespace": "default"
        },
        {
          "name": "policy2-common-nto-sub-policy",
          "namespace": "default"
        },
        {
          "name": "policy3-common-ptp-sub-policy",
          "namespace": "default"
        },
        {
          "name": "policy4-common-sriov-sub-policy",
          "namespace": "default"
        }
      ],
      "managedPoliciesNs": {
        "policy1-common-cluster-version-policy": "default",
        "policy2-common-nto-sub-policy": "default",
        "policy3-common-ptp-sub-policy": "default",
        "policy4-common-sriov-sub-policy": "default"
      },
      "placementBindings": [
        "cgu-policy1-common-cluster-version-policy",
        "cgu-policy2-common-nto-sub-policy",
        "cgu-policy3-common-ptp-sub-policy",
        "cgu-policy4-common-sriov-sub-policy"
      ],
      "placementRules": [
        "cgu-policy1-common-cluster-version-policy",
        "cgu-policy2-common-nto-sub-policy",
        "cgu-policy3-common-ptp-sub-policy",
        "cgu-policy4-common-sriov-sub-policy"
      ],
      "remediationPlan": [
        [
          "spoke1",
          "spoke2"
        ],
        [
          "spoke5",
          "spoke6"
        ]
      ],
      "status": {
        "currentBatch": 1,
        "currentBatchRemediationProgress": {
           "spoke1": {
              "policyIndex": 1,
              "state": "InProgress"
           },
           "spoke2": {
              "policyIndex": 1,
              "state": "InProgress"
           }
        },
        "currentBatchStartedAt": "2022-02-25T15:54:16Z",
        "startedAt": "2022-02-25T15:54:16Z"
      }
    }
    Copy to Clipboard Toggle word wrap

    1
    현재 배치의 업데이트 진행 상황을 반영합니다. 진행 상황에 대한 최신 정보를 받으려면 이 명령을 다시 실행하세요.
  2. 다음 명령을 실행하여 정책 상태를 확인하세요.

    oc get policies -A
    Copy to Clipboard Toggle word wrap

    출력 예

    NAMESPACE   NAME                                        REMEDIATION ACTION    COMPLIANCE STATE     AGE
    spoke1    default.policy1-common-cluster-version-policy enforce               Compliant            18m
    spoke1    default.policy2-common-nto-sub-policy         enforce               NonCompliant         18m
    spoke2    default.policy1-common-cluster-version-policy enforce               Compliant            18m
    spoke2    default.policy2-common-nto-sub-policy         enforce               NonCompliant         18m
    spoke5    default.policy3-common-ptp-sub-policy         inform                NonCompliant         18m
    spoke5    default.policy4-common-sriov-sub-policy       inform                NonCompliant         18m
    spoke6    default.policy3-common-ptp-sub-policy         inform                NonCompliant         18m
    spoke6    default.policy4-common-sriov-sub-policy       inform                NonCompliant         18m
    default   policy1-common-ptp-sub-policy                 inform                Compliant            18m
    default   policy2-common-sriov-sub-policy               inform                NonCompliant         18m
    default   policy3-common-ptp-sub-policy                 inform                NonCompliant         18m
    default   policy4-common-sriov-sub-policy               inform                NonCompliant         18m
    Copy to Clipboard Toggle word wrap

    • spec.remediationAction 값은 현재 배치의 클러스터에 적용된 자식 정책에 적용되도록 변경됩니다.
    • spec.remedationAction 값은 나머지 클러스터의 자식 정책에 대한 정보를 제공합니다 .
    • 배치가 완료되면 spec.remediationAction 값이 다시 변경되어 적용된 자식 정책에 대한 정보를 알려줍니다 .
  3. 정책에 운영자 구독이 포함되어 있는 경우 단일 노드 클러스터에서 직접 설치 진행 상황을 확인할 수 있습니다.

    1. 다음 명령을 실행하여 설치 진행 상황을 확인하려는 단일 노드 클러스터의 KUBECONFIG 파일을 내보냅니다.

      $ export KUBECONFIG=<cluster_kubeconfig_absolute_path>
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 단일 노드 클러스터에 있는 모든 구독을 확인하고 ClusterGroupUpgrade CR을 통해 설치하려는 정책에서 해당 구독을 찾으세요.

      $ oc get subs -A | grep -i <subscription_name>
      Copy to Clipboard Toggle word wrap

      클러스터 로깅 정책에 대한 예시 출력

      NAMESPACE                              NAME                         PACKAGE                      SOURCE             CHANNEL
      openshift-logging                      cluster-logging              cluster-logging              redhat-operators   stable
      Copy to Clipboard Toggle word wrap

  4. 관리되는 정책 중 하나에 ClusterVersion CR이 포함된 경우 스포크 클러스터에 대해 다음 명령을 실행하여 현재 배치의 플랫폼 업데이트 상태를 확인합니다.

    $ oc get clusterversion
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
    version   4.4.19.5     True        True          43s     Working towards 4.4.19.7: 71 of 735 done (9% complete)
    Copy to Clipboard Toggle word wrap

  5. 다음 명령을 실행하여 Operator 구독을 확인하세요.

    $ oc get subs -n <operator-namespace> <operator-subscription> -ojsonpath="{.status}"
    Copy to Clipboard Toggle word wrap
  6. 다음 명령을 실행하여 원하는 구독과 연결된 단일 노드 클러스터에 있는 설치 계획을 확인하세요.

    $ oc get installplan -n <subscription_namespace>
    Copy to Clipboard Toggle word wrap

    클러스터 로깅 연산자에 대한 예제 출력

    NAMESPACE                              NAME            CSV                                 APPROVAL   APPROVED
    openshift-logging                      install-6khtw   cluster-logging.5.3.3-4             Manual     true 
    1
    Copy to Clipboard Toggle word wrap

    1
    설치 계획의 승인 필드는 수동 으로 설정되어 있으며, TALM에서 설치 계획을 승인한 후에는 승인 필드가 false 에서 true 로 변경됩니다.
    참고

    TALM이 구독이 포함된 정책을 수정할 경우 해당 구독에 연결된 모든 설치 계획을 자동으로 승인합니다. 운영자에게 최신 알려진 버전을 제공하기 위해 여러 설치 계획이 필요한 경우 TALM은 여러 설치 계획을 승인하고 하나 이상의 중간 버전을 거쳐 업그레이드하여 최종 버전을 얻을 수 있습니다.

  7. ClusterGroupUpgrade가 설치하는 정책의 운영자에 대한 클러스터 서비스 버전이 성공 단계에 도달했는지 확인하려면 다음 명령을 실행하세요.

    $ oc get csv -n <operator_namespace>
    Copy to Clipboard Toggle word wrap

    OpenShift 로깅 연산자에 대한 예제 출력

    NAME                    DISPLAY                     VERSION   REPLACES   PHASE
    cluster-logging.v6.2.1  Red Hat OpenShift Logging   6.2.1                Succeeded
    Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat