ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Helm] 가이드 - Built-in 객체
    공부/쿠버네티스&헬름 2025. 3. 9. 20:41

    템플릿 엔진은 객체를 템플릿으로 전달합니다. 그리고 코드는 객체를 주고받을 수 있습니다(with와 range 문을 살펴볼 때 예시를 볼 수 있습니다). 나중에 보게 될 tuple 함수와 같이 템플릿 내에서 새 객체를 생성하는 몇 가지 방법도 있습니다.

    객체는 단순하여 하나의 값만 가질 수 있습니다. 또는 다른 객체나 함수를 포함할 수도 있습니다. 예를 들어, Release 객체는 여러 객체(예: Release.Name)를 포함하고 Files 객체는 몇 가지 함수를 가지고 있습니다.

    이전 섹션에서 {{ .Release.Name }}을 사용하여 릴리스 이름을 템플릿에 삽입했습니다. Release는 템플릿에서 액세스할 수 있는 최상위 객체 중 하나입니다.

    1. Release: 릴리스 자체를 설명하는 객체
    • Release.Name: 릴리스 이름
    • Release.Namespace: 릴리스가 배포될 네임스페이스 (매니페스트에서 오버라이드하지 않는 경우)
    • Release.IsUpgrade: 현재 작업이 업그레이드 또는 롤백인 경우 true로 설정
    • Release.IsInstall: 현재 작업이 설치인 경우 true로 설정
    • Release.Revision: 이 릴리스의 리비전 번호. 설치 시 1이며, 각 업그레이드 및 롤백마다 증가
    • Release.Service: 현재 템플릿을 렌더링하는 서비스. Helm에서는 항상 Helm
    1. Values: values.yaml 파일과 사용자 제공 파일에서 템플릿으로 전달된 값이며 기본적으로 Values는 비어 있음

    2. Chart: Chart.yaml 파일의 내용이며 Chart.yaml의 모든 데이터에 접근할 수 있음

    • 예를 들어, {{ .Chart.Name }}-{{ .Chart.Version }}mychart-0.1.0을 출력
    1. Subcharts: 부모 차트에 하위 차트의 범위(.Values, .Charts, .Releases 등)에 대한 접근을 제공
    • 예를 들어, .Subcharts.mySubChart.myValuemySubChart 차트의 myValue에 접근
    1. Files: 차트의 모든 특수 파일이 아닌 파일에 대한 접근을 제공하며 템플릿에 접근할 수는 없지만 차트의 다른 파일에 접근할 수 있음
    • Files.Get: 이름으로 파일을 가져오는 함수 (.Files.Get config.ini).
    • Files.GetBytes: 파일 내용을 문자열 대신 바이트 배열로 가져오는 함수. 이미지와 같은 것에 유용
    • Files.Glob: 주어진 셸 glob 패턴과 일치하는 파일 목록을 반환하는 함수
    • Files.Lines: 파일을 줄 단위로 읽는 함수. 파일의 각 줄을 반복하는 데 유용
    • Files.AsSecrets: 파일 본문을 Base64로 인코딩된 문자열로 반환하는 함수
    • Files.AsConfig: 파일 본문을 YAML 맵으로 반환하는 함수
    1. Capabilities: Kubernetes 클러스터가 지원하는 기능에 대한 정보를 제공
    • Capabilities.APIVersions: 버전 집합
    • Capabilities.APIVersions.Has $version: 클러스터에서 버전(예: batch/v1) 또는 리소스(예: apps/v1/Deployment)를 사용할 수 있는지 여부를 나타냄
    • Capabilities.KubeVersionCapabilities.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 sha1
      • Capabilities.HelmVersion.GitTreeState: Helm git 트리의 상태
      • Capabilities.HelmVersion.GoVersion: 사용된 Go 컴파일러의 버전
    1. Template: 실행 중인 현재 템플릿에 대한 정보를 포함
    • Template.Name: 현재 템플릿의 네임스페이스 파일 경로 (예: mychart/templates/mytemplate.yaml)
    • Template.BasePath: 현재 차트의 템플릿 디렉토리의 네임스페이스 경로 (예: mychart/templates)

    내장 값(built-in values)은 항상 대문자로 시작합니다. 이는 Go의 명명 규칙을 따르는 것입니다. 자신의 이름을 만들 때, 팀에 맞는 규칙을 자유롭게 사용할 수 있습니다. Artifact Hub에서 볼 수 있는 많은 차트와 같이 일부 팀은 로컬 이름과 내장 이름을 구별하기 위해 초기 소문자만 사용하기로 선택합니다.

    레퍼런스

    https://helm.sh/docs/chart_template_guide/builtin_objects/

    댓글