4.2. イメージへのメタデータの組み込み

イメージのメタデータを定義することで、OpenShift Container Platform によるコンテナーイメージの使用が改善され、開発者が OpenShift Container Platform でイメージを使用しやすくなります。たとえば、メタデータを追加して、イメージに関する役立つ情報を提供したり、必要とされる可能性のある他のイメージを提案したりできます。

このトピックでは、現在の一連のユースケースに必要なメタデータのみを定義します。他のメタデータまたはユースケースは、今後追加される可能性があります。

4.2.1. イメージメタデータの定義

DockerfileLABEL 命令を使用して、イメージのメタデータを定義することができます。ラベルは、イメージやコンテナーに割り当てるキーと値のペアである点で環境変数と似ています。ただし、ラベルは、実行中のアプリケーションに表示されず、イメージやコンテナーをすばやく検索する場合にも使用できる点で、環境変数とは異なります。

LABEL 命令に関する詳細は、Docker ドキュメント を参照してください。

通常、ラベル名には namespace が使用されます。namespace は、対象のラベルを選択して使用するプロジェクトを反映するように設定されます。OpenShift Container Platform の場合、namespace は io.openshift に、Kubernetes の場合は、namespace は io.k8s に設定されます。

形式に関する詳細は、Docker のカスタムメタデータ に関するドキュメントを参照してください。

表4.1 サポートされるメタデータ

変数説明

io.openshift.tags

このラベルには、コンマ区切りの文字列値の一覧として表現されているタグの一覧が含まれます。タグを使用して、コンテナーイメージを幅広い機能エリアに分類します。タグを使用すると、UI および生成ツールがアプリケーションの作成プロセスで適切なコンテナーイメージを提案しやすくなります。

LABEL io.openshift.tags   mongodb,mongodb24,nosql

io.openshift.wants

コンテナーイメージにすでにタグが指定されていない場合に、生成ツールと UI が適切な提案を行うのに使用するタグの一覧を指定します。たとえば、コンテナーイメージに mysqlredis が必要で、コンテナーイメージに redis タグが指定されていない場合には、UI はこのイメージをデプロイメントに追加するように提案する可能性があります。

LABEL io.openshift.wants   mongodb,redis

io.k8s.description

このラベルは、コンテナーイメージの利用者に、このイメージが提供するサービスや機能に関する詳細情報を提供するのに使用できます。UI は、この説明とコンテナーイメージ名を使用して、人間が解読しやすい情報をエンドユーザーに提供します。

LABEL io.k8s.description The MySQL 5.5 Server with master-slave replication support

io.openshift.non-scalable

イメージは、この変数を使用して、スケーリングがサポートされていないことを示す場合があります。その後、UI はこれをそのイメージのコンシューマーに通知します。スケーリング不可にした場合は replicas の値を最初に 1 よりも大きい値に設定することはできません。

LABEL io.openshift.non-scalable     true

io.openshift.min-memory および io.openshift.min-cpu

このラベルは、コンテナーイメージが正しく機能するにはどの程度リソースが必要かを提案します。UI でユーザーに対し、このコンテナーイメージをデプロイすると、ユーザークォータを超過する可能性があることを警告する場合があります。この値は、Kubernetes の数量と互換性がある必要があります。

LABEL io.openshift.min-memory 8Gi
LABEL io.openshift.min-cpu     4