10.2. PolicyGenTemplate CR을 사용하여 소스 CR 콘텐츠를 재정의
PolicyGenTemplate CR(사용자 정의 리소스)을 사용하면 ztp-site-generate 컨테이너의 GitOps 플러그인과 함께 제공된 기본 소스 CR 상단에 추가 구성 세부 정보를 오버레이할 수 있습니다. PolicyGenTemplate CR은 기본 CR에 대한 논리 병합 또는 패치로 생각할 수 있습니다. PolicyGenTemplate CR을 사용하여 기본 CR의 단일 필드를 업데이트하거나 기본 CR의 전체 콘텐츠를 오버레이합니다. 값을 업데이트하고 기본 CR에 없는 필드를 삽입할 수 있습니다.
다음 예제 절차에서는 group-du-sno-ranGen.yaml 파일의 PolicyGenTemplate CR을 기반으로 한 참조 구성에 대해 생성된 PerformanceProfile CR의 필드를 업데이트하는 방법을 설명합니다. 요구 사항에 따라 PolicyGenTemplate 의 다른 부분을 수정하는 기준으로 절차를 사용하십시오.
사전 요구 사항
- 사용자 지정 사이트 구성 데이터를 관리하는 Git 리포지토리를 생성합니다. 리포지토리는 hub 클러스터에서 액세스할 수 있어야 하며 Argo CD의 소스 리포지토리로 정의해야 합니다.
프로세스
기존 콘텐츠의 기본 소스 CR을 검토합니다. ZTP(ZTP) 컨테이너에서 해당 CR을 추출하여 참조
PolicyGenTemplateCR에 나열된 소스 CR을 검토할 수 있습니다./out폴더를 생성합니다.mkdir -p ./out
$ mkdir -p ./outCopy to Clipboard Copied! Toggle word wrap Toggle overflow 소스 CR을 추출합니다.
podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.15.1 extract /home/ztp --tar | tar x -C ./out
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.15.1 extract /home/ztp --tar | tar x -C ./outCopy to Clipboard Copied! Toggle word wrap Toggle overflow
./out/source-crs/PerformanceProfile.yaml에서 기준PerformanceProfileCR을 검토합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고$…이 포함된 소스 CR의 모든 필드는PolicyGenTemplateCR에 제공되지 않는 경우 생성된 CR에서 제거됩니다.group-du-sno-ranGen.yaml참조 파일에서PerformanceProfile의PolicyGenTemplate항목을 업데이트합니다. 다음 예제PolicyGenTemplateCR 스탠자는 적절한 CPU 사양을 제공하고hugepages구성을 설정하며globallyDisableIrqLoadBalancing을 false로 설정하는 새 필드를 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Git에서
PolicyGenTemplate변경 사항을 커밋한 다음 GitOps ZTP argo CD 애플리케이션에서 모니터링하는 Git 리포지토리로 내보냅니다.
출력 예
GitOps ZTP 애플리케이션은 생성된 PerformanceProfile CR을 포함하는 RHACM 정책을 생성합니다. 해당 CR의 내용은 PolicyGenTemplate 의 PerformanceProfile 항목의 메타데이터 및 사양 콘텐츠를 소스 CR에 병합하여 파생됩니다. 결과 CR에는 다음과 같은 내용이 있습니다.
ztp-site-generate 컨테이너에서 추출한 /source-crs 폴더에서 $ 구문은 구문에 의해 함축된 템플릿 대체에 사용되지 않습니다. 대신 policyGen 툴에 문자열의 $ 접두사가 표시되고 관련 PolicyGenTemplate CR에서 해당 필드의 값을 지정하지 않으면 해당 필드가 출력 CR에서 완전히 생략됩니다.
이에 대한 예외는 PolicyGenTemplate CR에서 mcp 값으로 대체되는 /source-crs YAML 파일의 $mcp 변수입니다. 예를 들어 example/policygentemplates/group-du-standard-ranGen.yaml 에서 mcp 의 값은 worker 입니다.
spec:
bindingRules:
group-du-standard: ""
mcp: "worker"
spec:
bindingRules:
group-du-standard: ""
mcp: "worker"
policyGen 툴은 출력 CR에서 $mcp 의 인스턴스를 worker 로 바꿉니다.