ラベルとアノテーション

ベストプラクティスガイドのこの部分では、チャートでラベルとアノテーションを使用するためのベストプラクティスについて説明します。

ラベルとアノテーションのどちらですか?

メタデータ項目は、以下の条件でラベルにする必要があります。

  • Kubernetesがこのリソースを識別するために使用する
  • システムのクエリを目的として、オペレーターに公開すると役立つ

たとえば、オペレーターが特定のチャートのすべてのインスタンスを簡単に見つけられるように、helm.sh/chart: NAME-VERSIONをラベルとして使用することをお勧めします。

メタデータ項目がクエリに使用されない場合は、代わりにアノテーションとして設定する必要があります。

Helmフックは常にアノテーションです。

標準ラベル

次の表は、Helmチャートが使用する一般的なラベルを定義しています。Helm自体は、特定のラベルが存在することを決して要求しません。RECとマークされたラベルは推奨されており、グローバルな一貫性のためにチャートに配置する必要があります。OPTとマークされたものはオプションです。これらは慣用的または一般的に使用されていますが、運用上の目的で頻繁に依存することはありません。

名前ステータス説明
app.kubernetes.io/nameRECこれは、アプリケーション全体を反映したアプリケーション名である必要があります。通常、これには{{ template "name" . }}が使用されます。これは多くのKubernetesマニフェストで使用されており、Helm固有のものではありません。
helm.sh/chartRECこれは、チャート名とバージョンである必要があります:{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
app.kubernetes.io/managed-byRECこれは常に{{ .Release.Service }}に設定する必要があります。Helmによって管理されているすべてのものを見つけるためのものです。
app.kubernetes.io/instanceRECこれは{{ .Release.Name }}である必要があります。同じアプリケーションの異なるインスタンスを区別するのに役立ちます。
app.kubernetes.io/versionOPTアプリケーションのバージョンであり、{{ .Chart.AppVersion }}に設定できます。
app.kubernetes.io/componentOPTこれは、アプリケーション内で各要素が果たす異なる役割をマークするための一般的なラベルです。たとえば、app.kubernetes.io/component: frontend
app.kubernetes.io/part-ofOPT複数のチャートまたはソフトウェアが組み合わせて1つのアプリケーションを作成する場合。たとえば、Webサイトを作成するためのアプリケーションソフトウェアとデータベース。これは、サポートされている最上位のアプリケーションに設定できます。

app.kubernetes.ioというプレフィックスが付いたKubernetesラベルの詳細については、Kubernetesドキュメントを参照してください。