ラベルとアノテーション
ベストプラクティスのこの部分では、チャートの中でラベルとアノテーションを使用する際の ベストプラクティスについて議論します。
ラベルかアノテーションか?
メタデータの項目は以下の条件でラベルにすべきです:
- リソースを特定するためにKubernetesによって使用される場合
- システムに問い合わせをする目的でオペレータに公開すると便利な場合
例えば、オペレータが特定のチャートの全てのインスタンスを便利に見つけられるように、
ラベルとしてhelm.sh/chart: NAME-VERSIONを使うことを推奨します。
メタデータの項目が問い合わせの目的で使用されない場合、代わりにアノテーションを 使うべきでしょう。
Helmフックは常にアノテーションです。
標準的なラベル
次のテーブルはHelmチャートが使う、共通のラベルを定義しています。Helmそれ自体は 特定のラベルが存在することを必要としません。RECとマークされたラベルは使用を推奨され、 グローバルな一貫性のためにチャートに記述される べき です。 OPTとマークされた項目は任意です。これらは慣用句として、あるいは一般的に使用されているもの ではありますが、業務上頻繁に使用されるものではありません。
| 名前 | ステータス | 説明 | 
|---|---|---|
| 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 | 複数のチャートとソフトウェアが一体となって一つのアプリケーションを構成している場合のラベル。例えば、ウェブサイトを生成するデータベースとアプリケーションソフトウェアなど。これは、対応するトップレベルのアプリケーションにも設定することができます。 | 
Kubernetesのapp.kubernetes.ioプレフィックスが付いたラベルについて、
Kubernetes
documentationでより詳細な情報を見つけることができます。