6.4. SiteConfig CR에서 ClusterInstance CR로의 마이그레이션 수행


단일 노드 OpenShift 클러스터를 이전 파이프라인에서 SiteConfig CR을 제거하고 해당 ClusterInstance CR을 새 파이프라인에 추가하여 SiteConfig CR을 ClusterInstance CR을 ClusterInstance CR로 마이그레이션합니다.

사전 요구 사항

  • cluster-admin 권한이 있는 사용자로 허브 클러스터에 로그인했습니다.
  • ClusterInstance CR을 사용하여 클러스터를 관리할 Argo CD 프로젝트 및 애플리케이션을 포함하여 병렬 Argo CD 파이프라인을 설정해야 합니다.
  • 원래의 SiteConfig CR 파이프라인을 관리하는 Argo CD 애플리케이션은 동기화 정책 prune=false 로 구성됩니다. 이 설정을 사용하면 이 애플리케이션에서 대상 클러스터를 제거한 후 리소스가 그대로 유지됩니다.
  • 단일 노드 OpenShift 클러스터 구성이 포함된 Git 리포지토리에 액세스할 수 있습니다.
  • RHACM(Red Hat Advanced Cluster Management) 버전 2.12 이상이 hub 클러스터에 설치되어 있어야 합니다.
  • siteConfig Operator가 hub 클러스터에 설치되어 실행되고 있습니다.
  • Podman을 설치하고 registry.redhat.io 컨테이너 이미지 레지스트리에 액세스할 수 있습니다.

프로세스

  1. site-configs 폴더 구조를 ClusterInstance CR을 포함할 새 site-configs-v2 디렉터리에 미러링합니다. 예를 들면 다음과 같습니다.

    site-configs-v2/
    ├── hub-1/ 
    1
    
    │   └── extra-manifest/
    ├── pre-reqs/
    │   └── sno1/ 
    2
    
    ├── reference-manifest/
    │   └── 4.20/
    └── resources/
    Copy to Clipboard Toggle word wrap
    1
    hub-1/ 폴더에는 각 클러스터에 대한 ClusterInstance CR이 포함됩니다.
    2
    이미지 레지스트리 풀 시크릿, 베이스 보드 관리 컨트롤러 인증 정보와 같은 필수 사전 요구 사항 리소스를 포함하도록 대상 클러스터를 미러링합니다.
  2. Git의 관련 파일에서 리소스를 주석 처리하여 원래 Argo CD 애플리케이션에서 대상 클러스터를 제거합니다.

    1. site-configs/kustomization.yaml 파일에서 대상 클러스터를 주석 처리합니다. 예를 들면 다음과 같습니다.

      $ cat site-configs/kustomization.yaml
      Copy to Clipboard Toggle word wrap

      업데이트된 site-configs/kustomization.yaml 파일의 예

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      resources:
         - pre-reqs/
         #- resources/
      generators:
         #- hub-1/sno1.yaml
         - hub-1/sno2.yaml
         - hub-1/sno3.yaml
      Copy to Clipboard Toggle word wrap

    2. site-configs/pre-reqs/kustomization.yaml 파일에서 대상 클러스터를 주석 처리합니다. 이렇게 하면 site-configs/pre-reqs/sno1 폴더가 제거되는데, 여기에는 마이그레이션도 필요하며 이미지 레지스트리 풀 시크릿, 베이스 보드 관리 컨트롤러 인증 정보 등의 리소스가 있습니다. 예를 들면 다음과 같습니다.

      $ cat site-configs/pre-reqs/kustomization.yaml
      Copy to Clipboard Toggle word wrap

      업데이트된 site-configs/pre-reqs/kustomization.yaml 파일의 예

      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      resources:
        #- sno1/
        - sno2/
        - sno3/
      Copy to Clipboard Toggle word wrap

  3. Git 리포지토리에 대한 변경 사항을 커밋합니다.

    참고

    변경 사항을 커밋한 후 Argo CD 애플리케이션이 태그 세트 클러스터 리소스의 상태를 모니터링하려고 하므로 원래 Argo CD 애플리케이션에서 OutOfSync 동기화 상태를 보고합니다. 그러나 동기화 정책은 prune=false 로 설정되므로 Argo CD 애플리케이션에서는 리소스를 삭제하지 않습니다.

  4. 원래 Argo CD 애플리케이션이 더 이상 클러스터 리소스를 관리하지 않도록 하려면 다음 명령을 실행하여 리소스에서 Argo CD 애플리케이션 레이블을 제거할 수 있습니다.

    $ for cr in bmh,hfs,clusterdeployment,agentclusterinstall,infraenv,nmstateconfig,configmap,klusterletaddonconfig,secrets; do oc label $cr app.kubernetes.io/instance- --all -n sno1; done && oc label ns sno1 app.kubernetes.io/instance- && oc label managedclusters sno1 app.kubernetes.io/instance-
    Copy to Clipboard Toggle word wrap

    Argo CD 애플리케이션 레이블은 sno1 네임스페이스의 모든 리소스에서 제거되고 동기화 상태가 Synced 로 돌아갑니다.

  5. ztp-site-generate 컨테이너 이미지와 함께 패키지된 siteconfig-converter 툴을 사용하여 대상 클러스터에 대한 ClusterInstance CR을 생성합니다.

    참고

    siteconfig-converter 툴은 site Config CR에서 다음 더 이상 사용되지 않는 필드를 사용하는 이전 버전의 AgentClusterInstall 리소스를 변환할 수 없습니다.

    • apiVIP
    • ingressVIP
    • manifestsConfigMapRef

    이 문제를 해결하려면 다음 옵션 중 하나를 수행할 수 있습니다.

    • 이러한 필드를 포함하는 사용자 지정 클러스터 템플릿을 생성합니다. 사용자 지정 템플릿 생성에 대한 자세한 내용은 SiteConfig Operator를 사용하여 사용자 지정 템플릿 생성을참조하십시오.
    • ClusterInstance CR의 억제 된Manifests 목록에 추가하거나 siteconfig-converter 툴에서 -s 플래그를 사용하여 AgentClusterInstall 리소스 생성을 표시하지 않습니다. 클러스터를 다시 설치할 때 억제된Manifests 목록에서 리소스를 제거해야 합니다.
    1. 다음 명령을 실행하여 ztp-site-generate 컨테이너 이미지를 가져옵니다.

      podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:4.20
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 컨테이너를 대화형으로 siteconfig-converter 툴을 실행합니다.

      $ podman run -v "${PWD}":/resources:Z,U -it registry.redhat.io/openshift4/ztp-site-generate-rhel8:{product-version} siteconfig-converter -d /resources/<output_folder> /resources/<path_to_siteconfig_resource>
      Copy to Clipboard Toggle word wrap
      • & lt;output_folder& gt;를 생성된 파일의 출력 디렉터리로 바꿉니다.
      • & lt;path_to_siteconfig_resource >를 대상 site Config CR 파일의 경로로 바꿉니다.

        출력 예

        Successfully read SiteConfig: sno1/sno1
        Converted cluster 1 (sno1) to ClusterInstance: /resources/output/sno1.yaml
        WARNING: extraManifests field is not supported in ClusterInstance and will be ignored. Create one or more configmaps with the exact desired set of CRs for the cluster and include them in the extraManifestsRefs.
        WARNING: Added default extraManifest ConfigMap 'extra-manifests-cm' to extraManifestsRefs. This configmap is created automatically.
        Successfully converted 1 cluster(s) to ClusterInstance files in /resources/output: sno1.yaml
        Generating ConfigMap kustomization files...
        Using ConfigMap name: extra-manifests-cm, namespace: sno1, manifests directory: extra-manifests
        Generating ConfigMap kustomization files with name: extra-manifests-cm, namespace: sno1, manifests directory: extra-manifests
        Generating extraManifests for SiteConfig: /resources/sno1.yaml
        Using absolute path for input file: /resources/sno1.yaml
        Running siteconfig-generator from directory: /resources
        Found extraManifests directory: /resources/output/extra-manifests/sno1
        Moved sno1_containerruntimeconfig_enable-crun-master.yaml to /resources/output/extra-manifests/sno1_containerruntimeconfig_enable-crun-master.yaml
        Moved sno1_containerruntimeconfig_enable-crun-worker.yaml to /resources/output/extra-manifests/sno1_containerruntimeconfig_enable-crun-worker.yaml
        Moved 2 extraManifest files from /resources/output/extra-manifests/sno1 to /resources/output/extra-manifests
        Removed directory: /resources/output/extra-manifests/sno1
        --- Kustomization.yaml Generator ---
        Scanning directory: /resources/output/extra-manifests
        Found and adding: extra-manifests/sno1_containerruntimeconfig_enable-crun-master.yaml
        Found and adding: extra-manifests/sno1_containerruntimeconfig_enable-crun-worker.yaml
        ------------------------------------
        kustomization-configMapGenerator-snippet.yaml generated successfully at: /resources/output/kustomization-configMapGenerator-snippet.yaml
        Content:
        apiVersion: kustomize.config.k8s.io/v1beta1
        kind: Kustomization
        configMapGenerator:
            - files:
                - extra-manifests/sno1_containerruntimeconfig_enable-crun-master.yaml
                - extra-manifests/sno1_containerruntimeconfig_enable-crun-worker.yaml
              name: extra-manifests-cm
              namespace: sno1
        generatorOptions:
            disableNameSuffixHash: true
        
        ------------------------------------
        Copy to Clipboard Toggle word wrap

        참고

        ClusterInstance CR을 사용하려면 ConfigMap 리소스에 추가 매니페스트를 정의해야 합니다.

        이 요구 사항을 충족하기 위해 siteconfig-converter 툴에서 kustomization.yaml 스니펫을 생성합니다. 생성된 스니펫에서는 Kustomize의 configMapGenerator 를 사용하여 매니페스트 파일을 필요한 ConfigMap 리소스에 자동으로 패키징합니다. ConfigMap 리소스가 다른 클러스터 리소스와 함께 생성 및 관리되도록 이 스니펫을 원래 kustomization.yaml 파일에 병합해야 합니다.

  6. 새 파이프라인 Kustomization 파일에서 이를 참조하여 대상 클러스터를 관리하도록 새 Argo CD 애플리케이션을 구성합니다. 예를 들면 다음과 같습니다.

    $ cat site-configs-v2/kustomization.yaml
    Copy to Clipboard Toggle word wrap

    업데이트된 site-configs-v2/kustomization.yaml 파일의 예

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    resources:
      - resources/
      - pre-reqs/
      - hub-1/sno1.yaml
    Copy to Clipboard Toggle word wrap

    $ cat  site-configs-v2/pre-reqs/kustomization.yaml
    Copy to Clipboard Toggle word wrap

    업데이트된 site-configs-v2/pre-reqs/kustomization.yaml 파일의 예

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    resources:
      - sno1/
    Copy to Clipboard Toggle word wrap

  7. Git 리포지토리에 대한 변경 사항을 커밋합니다.

검증

  1. 다음 명령을 실행하여 ClusterInstance CR이 성공적으로 배포되고 프로비저닝 상태가 완료되었는지 확인합니다.

    $ oc get clusterinstance -A
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                                         PAUSED   PROVISIONSTATUS   PROVISIONDETAILS         AGE
    clusterinstance.siteconfig.open-cluster-management.io/sno1            Completed         Provisioning completed   27s
    Copy to Clipboard Toggle word wrap

    이 시점에서 ClusterInstance CR을 사용하는 새로운 Argo CD 애플리케이션이 sno1 클러스터를 관리하고 있습니다. 모든 대상 클러스터가 새 파이프라인으로 마이그레이션될 때까지 이러한 단계를 반복하여 한 번에 하나 이상의 클러스터를 계속 마이그레이션할 수 있습니다.

  2. site-configs-v2/ 디렉터리의 폴더 구조와 파일에 sno1 클러스터에 대해 마이그레이션된 리소스가 포함되어 있는지 확인합니다. 예를 들면 다음과 같습니다.

    site-configs-v2/
    ├── hub-1/
    │   ├── sno1.yaml 
    1
    
    ├── extra-manifest/
    │   ├── enable-crun-worker.yaml 
    2
    
    │   └── enable-crun-master.yaml
    ├── kustomization.yaml 
    3
    
    ├── pre-reqs/
    │   └── sno1/
    │       ├── bmc-credentials.yaml
    │       ├── namespace.yaml
    │       └── pull-secret.yaml
    ├── kustomization.yaml
    ├── reference-manifest/
    │   └── 4.20/
    └── resources/
        ├── active-ocp-version.yaml
        └── kustomization.yaml
    Copy to Clipboard Toggle word wrap
    1
    sno1 클러스터의 ClusterInstance CR입니다.
    2
    툴은 ClusterInstance CR에서 참조하는 추가 매니페스트를 자동으로 생성합니다. 생성 후 파일 이름이 변경될 수 있습니다. 연결된 kustomization.yaml 파일의 원래 이름 지정 규칙과 일치하도록 파일의 이름을 변경할 수 있습니다.
    3
    툴은 kuztomization.yaml 파일 스니펫을 생성하여 추가 매니페스트를 지정하는 ConfigMap 리소스를 생성합니다. 생성된 kustomization 스니펫을 원래 kuztomization.yaml 파일과 병합할 수 있습니다.

6.4.1. siteconfig-converter 툴의 참조 플래그

다음 매트릭스는 siteconfig-converter 툴의 플래그를 설명합니다.

Expand
플래그유형설명

-d

string

변환된 ClusterInstance CR(사용자 정의 리소스)의 출력 디렉터리를 정의합니다. 이 플래그는 필수입니다.

-t

string

클러스터의 쉼표로 구분된 템플릿 참조 목록을 네임스페이스/이름 형식으로 정의합니다. 기본값은 open-cluster-management/ai-cluster-templates-v1 입니다.

-n

string

노드의 쉼표로 구분된 템플릿 참조 목록을 네임스페이스/이름 형식으로 정의합니다. 기본값은 open-cluster-management/ai-node-templates-v1 입니다.

-m

string

추가 매니페스트 참조에 사용할 쉼표로 구분된 ConfigMap 이름 목록을 정의합니다.

-s

string

클러스터 수준에서 억제할 쉼표로 구분된 매니페스트 이름 목록을 정의합니다.

-w

boolean

변환 경고를 변환된 YAML 파일의 헤드에 주석으로 작성합니다. 기본값은 false입니다.

-c

boolean

원본 SiteConfig CR에서 변환된 ClusterInstance CR로 주석을 복사합니다. 기본값은 false입니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat