Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第3章 イメージのメタデータ

3.1. 概要

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

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

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

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

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

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

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

表3.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.expose-services

このラベルには、*Dockerfile* にある EXPOSE 命令と一致し、指定のポートでどの実際のサービスがコンシューマーに提供されているのか詳しい説明を提供するサービスポート一覧が含まれます。

形式は PORT[/PROTO]:NAME です。[PROTO] の部分は、オプションで、何も指定しない場合には、デフォルト値の tcp に設定されます。

LABEL io.openshift.expose-services 2020/udp:ftp,8080:https

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