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 컨테이너 이미지 레지스트리에 액세스할 수 있습니다.
프로세스
site-configs
폴더 구조를ClusterInstance
CR을 포함할 새site-configs-v2
디렉터리에 미러링합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Git의 관련 파일에서 리소스를 주석 처리하여 원래 Argo CD 애플리케이션에서 대상 클러스터를 제거합니다.
site-configs/kustomization.yaml
파일에서 대상 클러스터를 주석 처리합니다. 예를 들면 다음과 같습니다.cat site-configs/kustomization.yaml
$ cat site-configs/kustomization.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 업데이트된
site-configs/kustomization.yaml
파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow site-configs/pre-reqs/kustomization.yaml
파일에서 대상 클러스터를 주석 처리합니다. 이렇게 하면site-configs/pre-reqs/sno1
폴더가 제거되는데, 여기에는 마이그레이션도 필요하며 이미지 레지스트리 풀 시크릿, 베이스 보드 관리 컨트롤러 인증 정보 등의 리소스가 있습니다. 예를 들면 다음과 같습니다.cat site-configs/pre-reqs/kustomization.yaml
$ cat site-configs/pre-reqs/kustomization.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 업데이트된
site-configs/pre-reqs/kustomization.yaml
파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Git 리포지토리에 대한 변경 사항을 커밋합니다.
참고변경 사항을 커밋한 후 Argo CD 애플리케이션이 태그 세트 클러스터 리소스의 상태를 모니터링하려고 하므로 원래 Argo CD 애플리케이션에서
OutOfSync
동기화 상태를 보고합니다. 그러나 동기화 정책은prune=false
로 설정되므로 Argo CD 애플리케이션에서는 리소스를 삭제하지 않습니다.원래 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-
$ 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 Copied! Toggle word wrap Toggle overflow Argo CD 애플리케이션 레이블은
sno1
네임스페이스의 모든 리소스에서 제거되고 동기화 상태가Synced
로 돌아갑니다.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
목록에서 리소스를 제거해야 합니다.
다음 명령을 실행하여
ztp-site-generate
컨테이너 이미지를 가져옵니다.podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:4.20
podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:4.20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 컨테이너를 대화형으로
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>
$ 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 Copied! Toggle word wrap Toggle overflow -
&
lt;output_folder&
gt;를 생성된 파일의 출력 디렉터리로 바꿉니다. &
lt;path_to_siteconfig_resource
>를 대상 siteConfig
CR 파일의 경로로 바꿉니다.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고ClusterInstance
CR을 사용하려면ConfigMap
리소스에 추가 매니페스트를 정의해야 합니다.이 요구 사항을 충족하기 위해
siteconfig-converter
툴에서kustomization.yaml
스니펫을 생성합니다. 생성된 스니펫에서는 Kustomize의configMapGenerator
를 사용하여 매니페스트 파일을 필요한ConfigMap
리소스에 자동으로 패키징합니다.ConfigMap
리소스가 다른 클러스터 리소스와 함께 생성 및 관리되도록 이 스니펫을 원래kustomization.yaml
파일에 병합해야 합니다.
-
&
-
새 파이프라인
Kustomization
파일에서 이를 참조하여 대상 클러스터를 관리하도록 새 Argo CD 애플리케이션을 구성합니다. 예를 들면 다음과 같습니다.cat site-configs-v2/kustomization.yaml
$ cat site-configs-v2/kustomization.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 업데이트된
site-configs-v2/kustomization.yaml
파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat site-configs-v2/pre-reqs/kustomization.yaml
$ cat site-configs-v2/pre-reqs/kustomization.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 업데이트된
site-configs-v2/pre-reqs/kustomization.yaml
파일의 예apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - sno1/
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - sno1/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Git 리포지토리에 대한 변경 사항을 커밋합니다.
검증
다음 명령을 실행하여
ClusterInstance
CR이 성공적으로 배포되고 프로비저닝 상태가 완료되었는지 확인합니다.oc get clusterinstance -A
$ oc get clusterinstance -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME PAUSED PROVISIONSTATUS PROVISIONDETAILS AGE clusterinstance.siteconfig.open-cluster-management.io/sno1 Completed Provisioning completed 27s
NAME PAUSED PROVISIONSTATUS PROVISIONDETAILS AGE clusterinstance.siteconfig.open-cluster-management.io/sno1 Completed Provisioning completed 27s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 시점에서
ClusterInstance
CR을 사용하는 새로운 Argo CD 애플리케이션이sno1
클러스터를 관리하고 있습니다. 모든 대상 클러스터가 새 파이프라인으로 마이그레이션될 때까지 이러한 단계를 반복하여 한 번에 하나 이상의 클러스터를 계속 마이그레이션할 수 있습니다.site-configs-v2/
디렉터리의 폴더 구조와 파일에sno1
클러스터에 대해 마이그레이션된 리소스가 포함되어 있는지 확인합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
sno1
클러스터의ClusterInstance
CR입니다.- 2
- 툴은
ClusterInstance
CR에서 참조하는 추가 매니페스트를 자동으로 생성합니다. 생성 후 파일 이름이 변경될 수 있습니다. 연결된kustomization.yaml
파일의 원래 이름 지정 규칙과 일치하도록 파일의 이름을 변경할 수 있습니다. - 3
- 툴은
kuztomization.yaml
파일 스니펫을 생성하여 추가 매니페스트를 지정하는ConfigMap
리소스를 생성합니다. 생성된kustomization
스니펫을 원래kuztomization.yaml
파일과 병합할 수 있습니다.
6.4.1. siteconfig-converter 툴의 참조 플래그 링크 복사링크가 클립보드에 복사되었습니다!
다음 매트릭스는 siteconfig-converter
툴의 플래그를 설명합니다.
플래그 | 유형 | 설명 |
---|---|---|
-d | string |
변환된 |
-t | string |
클러스터의 쉼표로 구분된 템플릿 참조 목록을 네임스페이스/이름 형식으로 정의합니다. 기본값은 |
-n | string |
노드의 쉼표로 구분된 템플릿 참조 목록을 네임스페이스/이름 형식으로 정의합니다. 기본값은 |
-m | string |
추가 매니페스트 참조에 사용할 쉼표로 구분된 |
-s | string | 클러스터 수준에서 억제할 쉼표로 구분된 매니페스트 이름 목록을 정의합니다. |
-w | boolean |
변환 경고를 변환된 YAML 파일의 헤드에 주석으로 작성합니다. 기본값은 |
-c | boolean |
원본 |