18.9. SiteConfig 리소스를 사용한 고급 관리 클러스터 구성


SiteConfig CR(사용자 정의 리소스)을 사용하여 설치 시 관리 클러스터에 사용자 정의 기능 및 구성을 배포할 수 있습니다.

18.9.1. GitOps ZTP 파이프라인에서 추가 설치 매니페스트 사용자 정의

GitOps ZTP(ZTP) 파이프라인의 설치 단계에 포함할 추가 매니페스트 세트를 정의할 수 있습니다. 이러한 매니페스트는 site Config CR (사용자 정의 리소스)에 연결되며 설치 중에 클러스터에 적용됩니다. 설치 시 MachineConfig CR을 포함하면 설치 프로세스의 효율성이 향상됩니다.

사전 요구 사항

  • 사용자 지정 사이트 구성 데이터를 관리하는 Git 리포지토리를 생성합니다. 리포지토리는 hub 클러스터에서 액세스할 수 있어야 하며 Argo CD 애플리케이션의 소스 리포지토리로 정의해야 합니다.

프로세스

  1. GitOps ZTP 파이프라인에서 클러스터 설치를 사용자 정의하는 데 사용하는 추가 매니페스트 CR 세트를 생성합니다.
  2. 사용자 지정 /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-manifestztp-site-generate 컨테이너에서 /extra-manifest 의 콘텐츠를 저장하는 Git 하위 디렉터리를 나타냅니다.

  3. 사용자 정의 매니페스트 CR을 siteconfig/custom-manifest 디렉터리에 추가합니다.
  4. SiteConfig CR에서 extraManifests.searchPaths 필드에 디렉터리 이름을 입력합니다. 예를 들면 다음과 같습니다.

    clusters:
    - clusterName: "example-sno"
      networkType: "OVNKubernetes"
      extraManifests:
        searchPaths:
          - extra-manifest/ 1
          - custom-manifest/ 2
    1
    ztp-site-generate 컨테이너에서 복사한 매니페스트의 폴더입니다.
    2
    사용자 정의 매니페스트용 폴더입니다.
  5. 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에서 extraManifestPathextraManifests.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 의 모든 파일을 적용합니다. excludeinclusionDefault 를 설정하면 그 반대입니다.

기본적으로 포함된 /source-crs/extra-manifest 폴더에서 개별 CR을 제외할 수 있습니다. 다음 예제에서는 설치 시 /source-crs/extra-manifest/03-sctp-machine-config-worker.yaml CR을 제외하도록 사용자 정의 단일 노드 OpenShift SiteConfig CR을 구성합니다.

일부 추가 필터링 시나리오도 설명되어 있습니다.

사전 요구 사항

  • 필요한 설치 및 정책 CR을 생성하도록 허브 클러스터를 구성했습니다.
  • 사용자 지정 사이트 구성 데이터를 관리하는 Git 리포지토리를 생성하셨습니다. 리포지토리는 hub 클러스터에서 액세스할 수 있어야 하며 Argo CD 애플리케이션의 소스 리포지토리로 정의해야 합니다.

프로세스

  1. GitOps ZTP 파이프라인이 03-sctp-machine-config-worker.yaml CR 파일을 적용하지 못하도록 site Config 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이 적용됩니다.

  2. SiteConfig CR을 저장하고 사이트 구성 리포지토리로 변경 사항을 내보냅니다.

    GitOps ZTP 파이프라인은 site Config 필터 명령에 따라 적용되는 CR을 모니터링하고 조정합니다.

  3. 선택 사항: GitOps ZTP 파이프라인이 클러스터 설치 중에 모든 /source-crs/extra-manifest CR을 적용하지 않도록 하려면 site Config CR에서 다음 YAML을 적용합니다.

    - clusterName: "site1-sno-du"
      extraManifests:
        filter:
          inclusionDefault: exclude
  4. 선택 사항: /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
    1
    < custom_manifest_folder >를 사용자 정의 설치 CR이 포함된 폴더의 이름으로 바꿉니다(예: user-custom-manifest/ ).
    2
    GitOps ZTP 파이프라인이 설치 중에 /source-crs/extra-manifest 에 파일을 적용하지 못하도록 inclusionDefaultexclude 로 설정합니다.

    다음 예제에서는 사용자 지정 폴더 구조를 보여줍니다.

    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 애플리케이션의 소스 리포지토리로 정의해야 합니다.

프로세스

  1. 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
    # ...
  2. 다음 명령을 실행하여 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

  3. 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
    # ...
  4. 변경 사항을 Git 리포지토리로 푸시하고 프로비저닝 해제가 시작될 때까지 기다립니다. BareMetalHost CR의 상태는 프로비저닝 해제 로 변경되어야 합니다. BareMetalHost 가 프로비저닝 해제가 완료될 때까지 기다린 후 완전히 삭제됩니다.

검증

  1. 다음 명령을 실행하여 작업자 노드의 BareMetalHostAgent CR이 hub 클러스터에서 삭제되었는지 확인합니다.

    $ oc get bmh -n <cluster-ns>
    $ oc get agent -n <cluster-ns>
  2. 다음 명령을 실행하여 노드 레코드가 spoke 클러스터에서 삭제되었는지 확인합니다.

    $ oc get nodes
    참고

    시크릿을 사용하여 작업하는 경우 ArgoCD에는 삭제 후 다시 동기화를 완료하기 위해 시크릿이 필요하므로 시크릿을 너무 빨리 삭제하면 문제가 발생할 수 있습니다. 현재 ArgoCD 동기화가 완료되면 노드 정리 후에만 보안을 삭제합니다.

다음 단계

노드를 다시 프로비저닝하려면 이전에 SiteConfig 에 추가된 변경 사항을 삭제하고, 변경 사항을 Git 리포지토리로 푸시하고 동기화가 완료될 때까지 기다립니다. 이렇게 하면 작업자 노드의 BareMetalHost CR이 다시 생성되고 노드를 다시 설치합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.