6.2. ClusterInstance CR을 위한 병렬 Argo CD 파이프라인 준비
병렬 Argo CD 프로젝트 및 애플리케이션을 생성하여 새 ClusterInstance CR 및 관련 클러스터 리소스를 관리합니다.
사전 요구 사항
-
cluster-admin권한이 있는 사용자로 허브 클러스터에 로그인했습니다. - GitOps ZTP 환경을 성공적으로 구성했습니다.
- 지원 설치 프로그램 서비스를 성공적으로 설치하고 구성했습니다.
- 단일 노드 OpenShift 클러스터 구성이 포함된 Git 리포지토리에 액세스할 수 있습니다.
프로세스
병렬 Argo 프로젝트 및 애플리케이션에 대한 YAML 파일을 생성합니다.
AppProject리소스를 정의하는 YAML 파일을 생성합니다.ztp-app-project-v2.yaml파일 예apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: ztp-app-project-v2 namespace: openshift-gitops spec: clusterResourceWhitelist: - group: hive.openshift.io kind: ClusterImageSet - group: hive.openshift.io kind: ClusterImageSet - group: cluster.open-cluster-management.io kind: ManagedCluster - group: "" kind: Namespace destinations: - namespace: '*' server: '*' namespaceResourceWhitelist: - group: "" kind: ConfigMap - group: "" kind: Namespace - group: "" kind: Secret - group: agent-install.openshift.io kind: InfraEnv - group: agent-install.openshift.io kind: NMStateConfig - group: extensions.hive.openshift.io kind: AgentClusterInstall - group: hive.openshift.io kind: ClusterDeployment - group: metal3.io kind: BareMetalHost - group: metal3.io kind: HostFirmwareSettings - group: agent.open-cluster-management.io kind: KlusterletAddonConfig - group: cluster.open-cluster-management.io kind: ManagedCluster - group: siteconfig.open-cluster-management.io kind: ClusterInstance1 sourceRepos: - '*'- 1
ClusterInstanceCR은 siteConfig CR 대신를 관리합니다.siteconfig.open-cluster-management.io오브젝트
Application리소스를 정의하는 YAML 파일을 생성합니다.clusters-v2.yaml파일 예apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: clusters-v2 namespace: openshift-gitops spec: destination: namespace: clusters-sub server: https://kubernetes.default.svc ignoreDifferences: - group: cluster.open-cluster-management.io kind: ManagedCluster managedFieldsManagers: - controller project: ztp-app-project-v21 source: path: site-configs-v22 repoURL: http://infra.5g-deployment.lab:3000/student/ztp-repository.git targetRevision: main syncPolicy: syncOptions: - CreateNamespace=true - PrunePropagationPolicy=background - RespectIgnoreDifferences=true참고기본적으로
auto-sync가 활성화됩니다. 그러나 동기화는 클러스터에 대한 구성 데이터를 새 구성 폴더 또는 이 예제에서site-configs-v2/폴더로 푸시하는 경우에만 발생합니다.
ClusterInstanceCR 및 관련 리소스를 포함할 Git 리포지토리에서 루트 폴더를 생성하고 커밋합니다. 예를 들면 다음과 같습니다.$ mkdir site-configs-v2 $ touch site-configs-v2/.gitkeep $ git commit -s -m “Creates cluster-instance folder” $ git push origin main.gitkeep파일은 Git에서 빈 폴더를 추적하는 자리 표시자입니다.참고파이프라인 설정 중에 루트
site-configs-v2/폴더만 생성하고 커밋하면 됩니다. 전체site-configs/폴더 구조를 클러스터 마이그레이션 절차 중에site-configs-v2/에 미러링합니다.
다음 명령을 실행하여
AppProject및Application리소스를 hub 클러스터에 적용합니다.$ oc apply -f ztp-app-project-v2.yaml $ oc apply -f clusters-v2.yaml
검증
다음 명령을 실행하여 원래 Argo CD 프로젝트
ztp-app-project및 새 Argo CD 프로젝트인ztp-app-project-v2가 hub 클러스터에 있는지 확인합니다.$ oc get appprojects -n openshift-gitops출력 예
NAME AGE default 46h policy-app-project 42h ztp-app-project 18h ztp-app-project-v2 14s다음 명령을 실행하여 원래 Argo CD 애플리케이션,
클러스터및 새 Argo CD 애플리케이션, cluster-v2가 hub 클러스터에 있는지 확인합니다.$ oc get application.argo -n openshift-gitops출력 예
NAME SYNC STATUS HEALTH STATUS clusters Synced Healthy clusters-v2 Synced Healthy policies Synced Healthy