2.2. 설치 템플릿 개요
설치 템플릿은 설치 아티팩트 세트를 생성하는 데 사용되는 데이터 기반 템플릿입니다. 이러한 템플릿은 Golang 텍스트/템플릿 형식을 따르고 ClusterInstance 사용자 정의 리소스의 데이터를 사용하여 인스턴스화됩니다. 이를 통해 유사한 구성이 있지만 값이 다른 각 대상 클러스터에 대해 동적 설치 매니페스트를 생성할 수 있습니다.
다양한 설치 방법 또는 클러스터 토폴로지를 기반으로 여러 세트를 생성할 수도 있습니다. SiteConfig Operator는 다음 유형의 설치 템플릿을 지원합니다.
- 클러스터 수준
- 클러스터별 필드만 참조해야 하는 템플릿입니다.
- 노드 수준
- 클러스터별 필드와 노드별 필드를 모두 참조할 수 있는 템플릿입니다.
설치 템플릿에 대한 자세한 내용은 다음 설명서를 참조하십시오.
2.2.1. 템플릿 함수 링크 복사링크가 클립보드에 복사되었습니다!
templated 필드를 사용자 지정할 수 있습니다. SiteConfig Operator는 모든 sprig 라이브러리 함수 를 지원합니다.
또한 ClusterInstance API는 사용자 정의 매니페스트를 생성하는 동안 사용할 수 있는 다음 기능을 제공합니다.
toYaml-
toYaml함수는 항목을 YAML 문자열로 인코딩합니다. 항목을 YAML로 변환할 수 없는 경우 함수는 빈 문자열을 반환합니다.
ClusterInstance.Spec.Proxy 필드에서 .toYaml 사양의 다음 예제를 참조하십시오.
{{ if .Spec.Proxy }}
proxy:
{{ .Spec.Proxy | toYaml | indent 4 }}
{{ end }}
{{ if .Spec.Proxy }}
proxy:
{{ .Spec.Proxy | toYaml | indent 4 }}
{{ end }}
2.2.2. 기본 템플릿 세트 링크 복사링크가 클립보드에 복사되었습니다!
SiteConfig Operator는 Operator가 설치된 동일한 네임스페이스에 있는 다음과 같은 기본, 유효성 검사 및 변경 불가능한 템플릿 세트를 제공합니다.
| 설치 방법 | 템플릿 유형 | 파일 이름 | 템플릿 콘텐츠 |
|---|---|---|---|
| 지원되는 설치 관리자 | 클러스터 수준 템플릿 |
|
|
| 노드 수준 템플릿 |
|
| |
| 이미지 기반 Install Operator | 클러스터 수준 템플릿 |
|
|
| 노드 수준 템플릿 |
|
|
ClusterInstance API에 대한 자세한 내용은 ClusterInstance API 를 참조하십시오.
2.2.3. 특수 템플릿 변수 링크 복사링크가 클립보드에 복사되었습니다!
SiteConfig Operator는 템플릿에서 사용할 수 있는 특수 템플릿 변수 집합을 제공합니다. 다음 목록을 참조하십시오.
CurrentNode- SiteConfig Operator는 노드 개체의 반복을 명시적으로 제어하고 이 변수를 노출하여 템플릿에서 처리되는 현재 노드의 모든 콘텐츠에 액세스합니다.
InstallConfigOverrides-
병합된
networkType,cpu CryostatingMode및installConfigOverrides콘텐츠를 포함합니다. ControlPlaneAgents-
컨트롤 플레인 에이전트 수로 구성되며
ClusterInstance노드 오브젝트에서 자동으로 파생됩니다. WorkerAgents-
작업자 에이전트 수로 구성되며
ClusterInstance노드 오브젝트에서 자동으로 파생됩니다.
텍스트 템플릿에서 필드 이름을 대문자로 지정하여 사용자 지정 템플릿 필드를 생성합니다.
예를 들어 ClusterInstance spec 필드는 .Spec 접두사를 사용하여 참조합니다. 그러나 .SpecialVars 접두사를 사용하여 특수 변수 필드를 참조해야 합니다.
중요: spec.nodes 필드에 .Spec.Nodes 접두사를 사용하는 대신 .SpecialVars.CurrentNode 특수 템플릿 변수로 참조해야 합니다.
예를 들어 CurrentNode 특수 템플릿 변수를 사용하여 현재 노드의 이름과 네임스페이스 를 지정하려면 다음 양식에서 필드 이름을 사용합니다.
name: "{{ .SpecialVars.CurrentNode.HostName }}"
namespace: "{{ .Spec.ClusterName }}"
name: "{{ .SpecialVars.CurrentNode.HostName }}"
namespace: "{{ .Spec.ClusterName }}"
2.2.4. 매니페스트 순서 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
siteconfig.open-cluster-management.io/sync- ECDSA 주석을 사용하여 매니페스트가 생성, 업데이트 및 삭제된 순서를 제어할 수 있습니다. 주석은 정수를 값으로 사용하고 해당 정수는 웨이브 로 구성됩니다.
단일 웨이브에 하나 또는 여러 매니페스트를 추가할 수 있습니다. 값을 지정하지 않으면 주석에서 기본값인 0 을 사용합니다.
SiteConfig Operator는 리소스를 생성하거나 업데이트할 때 오름차순으로 매니페스트를 오름차순으로 조정하고 내림차순으로 리소스를 삭제합니다.
다음 예에서 SiteConfig Operator가 매니페스트를 생성하거나 업데이트하면 AgentClusterInstall 및 ClusterDeployment 사용자 정의 리소스가 첫 번째 웨이브에서 조정되는 반면 KlusterletAddonConfig 및 ManagedCluster 사용자 정의 리소스는 세 번째 파동에서 조정됩니다.
SiteConfig Operator가 리소스를 삭제하는 경우 KlusterletAddonConfig 및 ManagedCluster 사용자 정의 리소스가 가장 먼저 삭제되는 반면 AgentClusterInstall 및 ClusterDeployment 사용자 정의 리소스가 마지막입니다.
2.2.5. 추가 주석 및 라벨 구성 링크 복사링크가 클립보드에 복사되었습니다!
ClusterInstance API에서 extraAnnotations 및 extraLabels 필드를 사용하여 클러스터 수준 및 노드 수준 설치 매니페스트 모두에 추가 주석 및 레이블을 구성할 수 있습니다. SiteConfig Operator는 ClusterInstance 리소스에서 지정하는 매니페스트에 추가 주석 및 레이블을 적용합니다.
추가 주석 및 레이블을 생성할 때 SiteConfig 운영자가 일치하는 모든 매니페스트에 적용할 수 있도록 매니페스트 유형을 지정해야 합니다. 그러나 주석과 레이블은 임의의 것이며 애플리케이션에 의미 있는 모든 키 및 값 쌍을 설정할 수 있습니다.
참고: 추가 주석 및 레이블은 참조된 템플릿을 통해 렌더링된 리소스에만 적용됩니다.
추가 주석 및 의 다음 예제 애플리케이션을 확인합니다.
extra Labels
추가 주석 및 애플리케이션 예extra Labels
- 1 2
- 이 필드는 SiteConfig Operator가
ManagedCluster및ClusterDeployment매니페스트에 적용하는 클러스터 수준 주석 및 레이블을 지원합니다. - 3 4
- 이 필드는 SiteConfig Operator가
BareMetalHost매니페스트에 적용하는 노드 수준 주석 및 레이블을 지원합니다.다음 명령을 실행하여 추가 레이블이 적용되었는지 확인할 수 있습니다.
oc get managedclusters example-sno -ojsonpath='{.metadata.labels}' | jqoc get managedclusters example-sno -ojsonpath='{.metadata.labels}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 적용된 라벨의 다음 예제를 확인합니다.
적용된 라벨 예
{ "common": "true", "group-du": "", ... }{ "common": "true", "group-du": "", ... }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 실행하여 추가 주석이 적용되었는지 확인할 수 있습니다.
oc get bmh example-sno.example.redhat.com -n example-sno -ojsonpath='{.metadata.annotations}' | jqoc get bmh example-sno.example.redhat.com -n example-sno -ojsonpath='{.metadata.annotations}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 적용된 주석의 다음 예제를 확인합니다.
적용된 주석 예
{ "myNodeAnnotation": "success", ... }{ "myNodeAnnotation": "success", ... }Copy to Clipboard Copied! Toggle word wrap Toggle overflow