18.9. SiteConfig 리소스를 사용한 고급 관리 클러스터 구성
SiteConfig
CR(사용자 정의 리소스)을 사용하여 설치 시 관리 클러스터에 사용자 정의 기능 및 구성을 배포할 수 있습니다.
18.9.1. GitOps ZTP 파이프라인에서 추가 설치 매니페스트 사용자 정의
GitOps ZTP(ZTP) 파이프라인의 설치 단계에 포함할 추가 매니페스트 세트를 정의할 수 있습니다. 이러한 매니페스트는 site Config CR
(사용자 정의 리소스)에 연결되며 설치 중에 클러스터에 적용됩니다. 설치 시 MachineConfig
CR을 포함하면 설치 프로세스의 효율성이 향상됩니다.
사전 요구 사항
- 사용자 지정 사이트 구성 데이터를 관리하는 Git 리포지토리를 생성합니다. 리포지토리는 hub 클러스터에서 액세스할 수 있어야 하며 Argo CD 애플리케이션의 소스 리포지토리로 정의해야 합니다.
프로세스
- GitOps ZTP 파이프라인에서 클러스터 설치를 사용자 정의하는 데 사용하는 추가 매니페스트 CR 세트를 생성합니다.
사용자 지정
/siteconfig
디렉터리에서 추가 매니페스트를 위한 하위 디렉터리/custom-manifest
를 생성합니다. 다음 예제에서는/custom-manifest
폴더가 있는 샘플/siteconfig
를 보여줍니다.siteconfig ├── site1-sno-du.yaml ├── site2-standard-du.yaml ├── extra-manifest/ └── custom-manifest └── 01-example-machine-config.yaml
참고전체에서 사용되는 하위 디렉터리 이름
/custom-manifest
및/extra-manifest
는 예제 이름 전용입니다. 이러한 이름을 사용할 필요는 없으며 이러한 하위 디렉터리의 이름을 지정하는 방법에 대한 제한은 없습니다. 이 예에서/extra-manifest
는ztp-site-generate
컨테이너에서/extra-manifest
의 콘텐츠를 저장하는 Git 하위 디렉터리를 나타냅니다.-
사용자 정의 매니페스트 CR을
siteconfig/custom-manifest
디렉터리에 추가합니다. SiteConfig
CR에서extraManifests.searchPaths
필드에 디렉터리 이름을 입력합니다. 예를 들면 다음과 같습니다.clusters: - clusterName: "example-sno" networkType: "OVNKubernetes" extraManifests: searchPaths: - extra-manifest/ 1 - custom-manifest/ 2
-
SiteConfig
,/extra-manifest
CR 및/custom-manifest
CR을 저장하고 사이트 구성 리포지터리로 푸시합니다.
클러스터 프로비저닝 중에 GitOps ZTP 파이프라인은 /custom-manifest
디렉터리의 CR을 extra-manifest /에 저장된 추가
매니페스트 세트에 추가합니다.
4.14 버전의 extraManifestPath
에는 사용 중단 경고가 적용됩니다.
extraManifestPath
는 계속 지원되지만 extraManifests.searchPaths
를 사용하는 것이 좋습니다. SiteConfig
파일에 extraManifests.searchPaths
를 정의하는 경우 GitOps ZTP 파이프라인은 사이트 설치 중에 ztp-site-generate
컨테이너에서 매니페스트를 가져오지 않습니다.
Siteconfig
CR에서 extraManifestPath
및 extraManifests.searchPaths
를 모두 정의하는 경우 extraManifests.searchPaths
에 정의된 설정이 우선합니다.
ztp-site-generate
컨테이너에서 /extra-manifest
의 내용을 추출하여 GIT 리포지토리로 내보내는 것이 좋습니다.
18.9.2. siteConfig 필터를 사용하여 사용자 정의 리소스 필터링
필터를 사용하면 GitOps ZTP(ZTP) 파이프라인의 설치 단계에서 사용할 다른 CR을 포함하거나 제외하도록 SiteConfig
CR(사용자 정의 리소스)을 쉽게 사용자 지정할 수 있습니다.
SiteConfig
CR의 include
또는 exclude
기본값
을 포함하거나 제외하려는 특정 추가Manifest
RAN CR 목록과 함께 지정할 수 있습니다. include
Default를 포함
으로 설정하면 GitOps ZTP 파이프라인이 설치 중에 /source-crs/extra-manifest
의 모든 파일을 적용합니다. exclude
로 inclusionDefault
를 설정하면 그 반대입니다.
기본적으로 포함된 /source-crs/extra-manifest
폴더에서 개별 CR을 제외할 수 있습니다. 다음 예제에서는 설치 시 /source-crs/extra-manifest/03-sctp-machine-config-worker.yaml
CR을 제외하도록 사용자 정의 단일 노드 OpenShift SiteConfig
CR을 구성합니다.
일부 추가 필터링 시나리오도 설명되어 있습니다.
사전 요구 사항
- 필요한 설치 및 정책 CR을 생성하도록 허브 클러스터를 구성했습니다.
- 사용자 지정 사이트 구성 데이터를 관리하는 Git 리포지토리를 생성하셨습니다. 리포지토리는 hub 클러스터에서 액세스할 수 있어야 하며 Argo CD 애플리케이션의 소스 리포지토리로 정의해야 합니다.
프로세스
GitOps ZTP 파이프라인이
03-sctp-machine-config-worker.yaml
CR 파일을 적용하지 못하도록 siteConfig
CR에 다음 YAML을 적용합니다.apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "site1-sno-du" namespace: "site1-sno-du" spec: baseDomain: "example.com" pullSecretRef: name: "assisted-deployment-pull-secret" clusterImageSetNameRef: "openshift-4.14" sshPublicKey: "<ssh_public_key>" clusters: - clusterName: "site1-sno-du" extraManifests: filter: exclude: - 03-sctp-machine-config-worker.yaml
GitOps ZTP 파이프라인은 설치 중에
03-sctp-machine-config-worker.yaml
CR을 건너뜁니다./source-crs/extra-manifest
의 다른 모든 CR이 적용됩니다.SiteConfig
CR을 저장하고 사이트 구성 리포지토리로 변경 사항을 내보냅니다.GitOps ZTP 파이프라인은 site
Config 필터 명령에 따라 적용되는 CR을
모니터링하고 조정합니다.선택 사항: GitOps ZTP 파이프라인이 클러스터 설치 중에 모든
/source-crs/extra-manifest
CR을 적용하지 않도록 하려면 siteConfig
CR에서 다음 YAML을 적용합니다.- clusterName: "site1-sno-du" extraManifests: filter: inclusionDefault: exclude
선택 사항:
/source-crs/extra-manifest
RAN CR을 모두 제외하고 설치 중에 사용자 지정 CR 파일을 포함하려면 사용자 정의SiteConfig
CR을 편집하여 사용자 정의 매니페스트 폴더 및포함
파일을 설정합니다. 예를 들면 다음과 같습니다.clusters: - clusterName: "site1-sno-du" extraManifestPath: "<custom_manifest_folder>" 1 extraManifests: filter: inclusionDefault: exclude 2 include: - custom-sctp-machine-config-worker.yaml
다음 예제에서는 사용자 지정 폴더 구조를 보여줍니다.
siteconfig ├── site1-sno-du.yaml └── user-custom-manifest └── custom-sctp-machine-config-worker.yaml
18.9.3. SiteConfig CR을 사용하여 노드 삭제
SiteConfig
CR(사용자 정의 리소스)을 사용하면 노드를 삭제하고 다시 프로비저닝할 수 있습니다. 이 방법은 노드를 수동으로 삭제하는 것보다 효율적입니다.
사전 요구 사항
- 필요한 설치 및 정책 CR을 생성하도록 허브 클러스터를 구성했습니다.
- 사용자 지정 사이트 구성 데이터를 관리할 수 있는 Git 리포지토리를 생성했습니다. 리포지토리는 hub 클러스터에서 액세스할 수 있어야 하며 Argo CD 애플리케이션의 소스 리포지토리로 정의해야 합니다.
프로세스
bmac.agent-install.openshift.io/remove-agent-and-node-on-delete=true
주석을 포함하도록SiteConfig
CR을 업데이트하고 변경 사항을 Git 리포지토리로 내보냅니다.apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "cnfdf20" namespace: "cnfdf20" spec: clusters: nodes: - hostname: node6 role: "worker" crAnnotations: add: BareMetalHost: bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: true # ...
다음 명령을 실행하여
BareMetalHost
오브젝트에 주석이 추가되었는지 확인합니다.oc get bmh -n <managed-cluster-namespace> <bmh-object> -ojsonpath='{.metadata}' | jq -r '.annotations["bmac.agent-install.openshift.io/remove-agent-and-node-on-delete"]'
출력 예
true
crSuppression.BareMetalHost
주석을 포함하도록SiteConfig
CR을 업데이트하여BareMetalHost
CR 생성을 비활성화합니다.apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "cnfdf20" namespace: "cnfdf20" spec: clusters: - nodes: - hostName: node6 role: "worker" crSuppression: - BareMetalHost # ...
-
변경 사항을 Git 리포지토리로 푸시하고 프로비저닝 해제가 시작될 때까지 기다립니다.
BareMetalHost
CR의 상태는프로비저닝 해제
로 변경되어야 합니다.BareMetalHost
가 프로비저닝 해제가 완료될 때까지 기다린 후 완전히 삭제됩니다.
검증
다음 명령을 실행하여 작업자 노드의
BareMetalHost
및Agent
CR이 hub 클러스터에서 삭제되었는지 확인합니다.$ oc get bmh -n <cluster-ns>
$ oc get agent -n <cluster-ns>
다음 명령을 실행하여 노드 레코드가 spoke 클러스터에서 삭제되었는지 확인합니다.
$ oc get nodes
참고시크릿을 사용하여 작업하는 경우 ArgoCD에는 삭제 후 다시 동기화를 완료하기 위해 시크릿이 필요하므로 시크릿을 너무 빨리 삭제하면 문제가 발생할 수 있습니다. 현재 ArgoCD 동기화가 완료되면 노드 정리 후에만 보안을 삭제합니다.
다음 단계
노드를 다시 프로비저닝하려면 이전에 SiteConfig
에 추가된 변경 사항을 삭제하고, 변경 사항을 Git 리포지토리로 푸시하고 동기화가 완료될 때까지 기다립니다. 이렇게 하면 작업자 노드의 BareMetalHost
CR이 다시 생성되고 노드를 다시 설치합니다.