내장 객체
내장 객체 (Built-in Objects)
이 문서는 템플릿 엔진이 템플릿으로 전달하는 객체들을 다뤄요. Release, Values, Chart, Files, Capabilities, Template 등 내장 객체와 그 필드를 설명해요.
출처: 문서
본문
객체는 템플릿 엔진에서 템플릿으로 전달돼요. 그리고 코드가 객체를 여기저기 전달할 수 있어요 (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는 파일 본문을 Base 64로 인코딩된 문자열로 반환하는 함수예요. -
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은 현재 Helm 버전을 semver 형식으로 나타낸 값이에요. -
Capabilities.HelmVersion.GitCommit은 Helm git sha1이에요. -
Capabilities.HelmVersion.GitTreeState는 Helm git 트리의 상태예요. -
Capabilities.HelmVersion.GoVersion은 사용된 Go 컴파일러 버전이에요.
-
-
Template: 현재 실행 중인 템플릿에 대한 정보를 담고 있어요.-
Template.Name: 현재 템플릿의 네임스페이스된 파일 경로예요 (예:mychart/templates/mytemplate.yaml). -
Template.BasePath: 현재 차트의 템플릿 디렉터리의 네임스페이스된 경로예요 (예:mychart/templates).
-
내장 값은 항상 대문자로 시작해요. 이것은 Go의 명명 규칙을 따른 거예요. 자신의 이름을 만들 때는 팀에 맞는 규칙을 자유롭게 사용할 수 있어요. Artifact Hub에서 볼 수 있는 많은 차트를 만든 팀들처럼, 로컬 이름을 내장된 이름과 구분하기 위해 소문자로만 시작하도록 선택하는 팀도 있어요. 이 가이드에서는 그 규칙을 따라요.