-
[Helm] 가이드 - Built-in 객체공부/쿠버네티스&헬름 2025. 3. 9. 20:41
템플릿 엔진은 객체를 템플릿으로 전달합니다. 그리고 코드는 객체를 주고받을 수 있습니다(with와 range 문을 살펴볼 때 예시를 볼 수 있습니다). 나중에 보게 될 tuple 함수와 같이 템플릿 내에서 새 객체를 생성하는 몇 가지 방법도 있습니다.
객체는 단순하여 하나의 값만 가질 수 있습니다. 또는 다른 객체나 함수를 포함할 수도 있습니다. 예를 들어, Release 객체는 여러 객체(예: Release.Name)를 포함하고 Files 객체는 몇 가지 함수를 가지고 있습니다.
이전 섹션에서 {{ .Release.Name }}을 사용하여 릴리스 이름을 템플릿에 삽입했습니다. Release는 템플릿에서 액세스할 수 있는 최상위 객체 중 하나입니다.
- Release: 릴리스 자체를 설명하는 객체
Release.Name
: 릴리스 이름Release.Namespace
: 릴리스가 배포될 네임스페이스 (매니페스트에서 오버라이드하지 않는 경우)Release.IsUpgrade
: 현재 작업이 업그레이드 또는 롤백인 경우true
로 설정Release.IsInstall
: 현재 작업이 설치인 경우true
로 설정Release.Revision
: 이 릴리스의 리비전 번호. 설치 시 1이며, 각 업그레이드 및 롤백마다 증가Release.Service
: 현재 템플릿을 렌더링하는 서비스. Helm에서는 항상Helm
임
Values:
values.yaml
파일과 사용자 제공 파일에서 템플릿으로 전달된 값이며 기본적으로Values
는 비어 있음Chart:
Chart.yaml
파일의 내용이며Chart.yaml
의 모든 데이터에 접근할 수 있음
- 예를 들어,
{{ .Chart.Name }}-{{ .Chart.Version }}
은mychart-0.1.0
을 출력
- Subcharts: 부모 차트에 하위 차트의 범위(
.Values
,.Charts
,.Releases
등)에 대한 접근을 제공
- 예를 들어,
.Subcharts.mySubChart.myValue
는mySubChart
차트의myValue
에 접근
- Files: 차트의 모든 특수 파일이 아닌 파일에 대한 접근을 제공하며 템플릿에 접근할 수는 없지만 차트의 다른 파일에 접근할 수 있음
Files.Get
: 이름으로 파일을 가져오는 함수 (.Files.Get config.ini
).Files.GetBytes
: 파일 내용을 문자열 대신 바이트 배열로 가져오는 함수. 이미지와 같은 것에 유용Files.Glob
: 주어진 셸 glob 패턴과 일치하는 파일 목록을 반환하는 함수Files.Lines
: 파일을 줄 단위로 읽는 함수. 파일의 각 줄을 반복하는 데 유용Files.AsSecrets
: 파일 본문을 Base64로 인코딩된 문자열로 반환하는 함수Files.AsConfig
: 파일 본문을 YAML 맵으로 반환하는 함수
- Capabilities: Kubernetes 클러스터가 지원하는 기능에 대한 정보를 제공
Capabilities.APIVersions
: 버전 집합Capabilities.APIVersions.Has $version
: 클러스터에서 버전(예:batch/v1
) 또는 리소스(예:apps/v1/Deployment
)를 사용할 수 있는지 여부를 나타냄Capabilities.KubeVersion
및Capabilities.KubeVersion.Version
: Kubernetes 버전Capabilities.KubeVersion.Major
: Kubernetes 주요 버전Capabilities.KubeVersion.Minor
: Kubernetes 부 버전Capabilities.HelmVersion
: Helm 버전 세부 정보를 포함하는 객체이며helm version
의 출력과 동일Capabilities.HelmVersion.Version
: semver 형식의 현재 Helm 버전Capabilities.HelmVersion.GitCommit
: Helm git sha1Capabilities.HelmVersion.GitTreeState
: Helm git 트리의 상태Capabilities.HelmVersion.GoVersion
: 사용된 Go 컴파일러의 버전
- Template: 실행 중인 현재 템플릿에 대한 정보를 포함
Template.Name
: 현재 템플릿의 네임스페이스 파일 경로 (예:mychart/templates/mytemplate.yaml
)Template.BasePath
: 현재 차트의 템플릿 디렉토리의 네임스페이스 경로 (예:mychart/templates
)
내장 값(built-in values)은 항상 대문자로 시작합니다. 이는 Go의 명명 규칙을 따르는 것입니다. 자신의 이름을 만들 때, 팀에 맞는 규칙을 자유롭게 사용할 수 있습니다. Artifact Hub에서 볼 수 있는 많은 차트와 같이 일부 팀은 로컬 이름과 내장 이름을 구별하기 위해 초기 소문자만 사용하기로 선택합니다.
레퍼런스