라벨과 어노테이션

라벨과 어노테이션 (Labels and Annotations)

이 문서는 차트에서 라벨(labels)과 어노테이션(annotations)을 사용하는 모범 사례를 다뤄요. 어떤 메타데이터를 라벨로 쓸지 어노테이션으로 쓸지, 그리고 표준 라벨을 어떻게 사용하는지 설명해요.

출처: 문서

본문

이 모범 사례 가이드의 이 부분은 차트에서 라벨과 어노테이션을 사용하는 모범 사례를 논의해요.

라벨인가, 어노테이션인가? (Is it a Label or an Annotation?)

메타데이터 항목은 다음 조건에서 라벨이어야 해요:

  • Kubernetes가 이 리소스를 식별하는 데 사용하는 경우

  • 운영자가 시스템을 조회하는 목적으로 노출하는 것이 유용한 경우

예를 들어 운영자가 특정 차트의 모든 인스턴스를 편리하게 찾을 수 있도록 helm.sh/chart: NAME-VERSION을 라벨로 사용할 것을 권장해요.

메타데이터 항목이 조회에 사용되지 않는다면 대신 어노테이션으로 설정해야 해요.

Helm 훅(hooks)은 항상 어노테이션이에요.

표준 라벨 (Standard Labels)

다음 표는 Helm 차트가 사용하는 공통 라벨을 정의해요. Helm 자체는 특정 라벨이 반드시 있어야 한다고 요구하지 않아요. REC로 표시된 라벨은 권장되며, 전역 일관성을 위해 차트에 반드시 넣어야 해요. OPT로 표시된 것은 선택 사항이에요. 관용적이거나 흔히 쓰이는 것이지만 운영 목적으로 자주 의존되지는 않아요.

Name Status Description
app.kubernetes.io/name REC 앱 이름이어야 하며 전체 앱을 반영해요. 보통 {{ template "name" . }}를 사용해요. 많은 Kubernetes 매니페스트에서 사용되며 Helm 전용이 아니에요.
helm.sh/chart REC 차트 이름과 버전이어야 해요: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}.
app.kubernetes.io/managed-by REC 항상 {{ .Release.Service }}로 설정해야 해요. Helm이 관리하는 모든 것을 찾는 데 쓰여요.
app.kubernetes.io/instance REC {{ .Release.Name }}이어야 해요. 같은 애플리케이션의 서로 다른 인스턴스를 구분하는 데 도움을 줘요.
app.kubernetes.io/version OPT 앱의 버전이며 {{ .Chart.AppVersion }}으로 설정할 수 있어요.
app.kubernetes.io/component OPT 애플리케이션에서 조각들이 맡는 서로 다른 역할을 표시하는 공통 라벨이에요. 예: app.kubernetes.io/component: frontend.
app.kubernetes.io/part-of OPT 여러 차트나 소프트웨어 조각이 함께 하나의 애플리케이션을 만들 때 사용해요. 예를 들어 웹사이트를 만들기 위한 애플리케이션 소프트웨어와 데이터베이스가 그러해요. 지원되는 최상위 애플리케이션으로 설정할 수 있어요.

app.kubernetes.io 접두사가 붙은 Kubernetes 라벨에 대한 더 자세한 정보는 Kubernetes 문서에서 찾을 수 있어요.

더 알아보기 (Learn more)