3.5.2. イメージストリーム
イメージストリームおよびその関連付けられたタグは、OpenShift Container Platform 内で コンテナーイメージ を参照するための抽象化を提供します。イメージストリームとそのタグを使用して、利用可能なイメージを確認し、リポジトリーのイメージが変更される場合でも必要な特定のイメージを使用していることを確認できます。
イメージストリームには実際のイメージデータは含まれませんが、イメージリポジトリーと同様に、関連するイメージの単一の仮想ビューが提示されます。
ビルド および デプロイメント をそれぞれ実行し、ビルドおよびデプロイメントを、新規イメージが追加される際やこれに対応する際の通知をイメージストリームで確認できるように設定できます。
たとえば、デプロイメントで特定のイメージを使用しており、そのイメージの新規バージョンを作成する場合に、対象のイメージの新しいバージョンが選択されるように、デプロイメントを自動的に実行することができます。
デプロイメントまたはビルドで使用するイメージストリームタグが更新されない場合には、コンテナーイメージレジストリーのコンテナーイメージが更新されても、ビルドまたはデプロイメントは以前の (既知でおそらく適切であると予想される) イメージをそのまま使用します。
ソースイメージは以下のいずれかに保存できます。
- OpenShift Container Platform の 統合レジストリー
-
registry.redhat.io
またはhub.docker.com
などの外部レジストリー - OpenShift Container Platform クラスターの他のイメージストリーム
(ビルドまたはデプロイメント設定などの) イメージストリームタグを参照するオブジェクトを定義する場合には、Docker リポジトリーではなく、イメージストリームタグを参照します。アプリケーションのビルドまたはデプロイ時に、OpenShift Container Platform がこのイメージストリームタグを使用して Docker リポジトリーにクエリーを送信して、対象のイメージに関連付けられた ID を特定して、正確なイメージを使用します。
イメージストリームメタデータは他のクラスター情報と共に etcd インスタンスに保存されます。
以下のイメージストリームには、Python v3.4 イメージをポイントする 34
と、Python v3.5 イメージをポイントする 35
の 2 つのタグが含まれます。
$ oc describe is python
出力例
Name: python Namespace: imagestream Created: 25 hours ago Labels: app=python Annotations: openshift.io/generated-by=OpenShiftWebConsole openshift.io/image.dockerRepositoryCheck=2017-10-03T19:48:00Z Docker Pull Spec: docker-registry.default.svc:5000/imagestream/python Image Lookup: local=false Unique Images: 2 Tags: 2 34 tagged from centos/python-34-centos7 * centos/python-34-centos7@sha256:28178e2352d31f240de1af1370be855db33ae9782de737bb005247d8791a54d0 14 seconds ago 35 tagged from centos/python-35-centos7 * centos/python-35-centos7@sha256:2efb79ca3ac9c9145a63675fb0c09220ab3b8d4005d35e0644417ee552548b10 7 seconds ago
イメージストリームの使用には、いくつかの大きな利点があります。
- コマンドラインを使用して再プッシュすることなく、タグ付けや、タグのロールバック、およびイメージの迅速な処理を実行できます。
- 新規イメージがレジストリーにプッシュされると、ビルドおよびデプロイメントをトリガーできます。また、OpenShift Container Platform には他のリソースの汎用トリガーがあります (Kubernetes オブジェクトなど)。
- 定期的な再インポートを実行するためにタグにマークを付けること ができます。ソースイメージが変更されると、その変更は選択され、イメージストリームに反映されます。 これにより、ビルドまたはデプロイメント設定に応じてビルドおよび/またはデプロイメントフローがトリガーされます。
- 詳細なアクセス制御を使用してイメージを共有し、チーム間でイメージを迅速に分散できます。
- ソースイメージが変更されると、イメージストリームタグはイメージの既知の適切なバージョンをポイントしたままになり、アプリケーションが予期せずに損傷しないようにします。
- イメージストリームオブジェクトのパーミッションを使用して、イメージを表示し、使用できるユーザーについて セキュリティーを設定 することができます。
- クラスターレベルでイメージを読み込んだり、一覧表示するパーミッションのないユーザーは、イメージストリームを使用してプロジェクトでタグ付けされたイメージを取得できます。
イメージストリームのキュレートされたセットについては、OpenShift Image Streams and Templates library を参照してください。
イメージストリームの使用時に、イメージストリームタグのポイント先およびタグおよびイメージへの変更の影響について把握しておくことは重要デス。以下に例を示します。
-
イメージストリームタグがコンテナーイメージタグを参照する場合、コンテナーイメージタグの更新方法を理解しておく必要があります。たとえば、コンテナーイメージタグ
docker.io/ruby:2.5
は v2.5 ruby イメージを参照しますが、コンテナーイメージタグdocker.io/ruby:latest
はメジャーバージョンで変更されます。そのため、イメージストリームタグが参照するコンテナーイメージタグは、イメージストリームタグの安定度を示すものとなります。 - イメージストリームタグが別のイメージストリームタグをフォローする場合 (コンテナーイメージタグを直接参照しない場合)、イメージストリームタグが別のイメージストリームタグをフォローするように更新される可能性があります。この場合、互換性のないバージョンの変更が選択されてしまう可能性があります。
3.5.2.1. 重要な用語
- Docker リポジトリー
関連するコンテナーイメージおよびそれらを識別するタグのコレクションです。たとえば、OpenShift Jenkins イメージは Docker リポジトリーにあります。
docker.io/openshift/jenkins-2-centos7
- Container レジストリー
Docker リポジトリーからイメージを保存し、提供できるコンテンツサーバーです。以下に例を示します。
registry.redhat.io
- コンテナーイメージ
- コンテナーとして実行できる特定のコンテナーセットです。通常は Docker リポジトリー内の特定のタグに関連付けられます。
- コンテナーイメージタグ
- 特定のイメージを区別する、リポジトリー内のコンテナーイメージに適用されるラベルです。たとえば、ここでは 3.6.0 がタグとして使用されています。
docker.io/openshift/jenkins-2-centos7:3.6.0
新規のコンテナーイメージコンテンツを参照するようにいつでも更新できるコンテナーイメージタグです。
- コンテナーイメージ ID
- イメージをプルするために使用できる SHA (セキュアハッシュアルゴリズム) コードです。以下に例を示します。
docker.io/openshift/jenkins-2-centos7@sha256:ab312bda324
SHA イメージ ID は変更できません。特定の SHA ID は同一のコンテナーイメージコンテンツを常に参照します。
- イメージストリーム
- タグで識別される任意の数の Docker 形式のコンテナーイメージへのポインターが含まれる OpenShift Container Platform オブジェクトです。イメージストリームを Docker リポジトリーと同等のものとしてみなすことができます。
- イメージストリームタグ
- イメージストリーム内のイメージへの名前付きポインター。イメージストリームタグはコンテナーイメージタグに似ています。以下の イメージストリームタグ を参照してください。
- イメージストリームイメージ
- イメージがタグ付けされている特定のイメージストリームから特定のコンテナーイメージを取得できるようにするイメージです。イメージストリームイメージは、特定のイメージの SHA ID についてのメタデータをプルする API リソースオブジェクトです。以下の イメージストリームイメージ を参照してください。
- イメージストリームトリガー
- イメージストリームタグの変更時に特定のアクションを生じさせるトリガーです。たとえば、インポートにより、タグの値が変更され、これによりデプロイメント、ビルドまたはそれらをリッスンする他のリソースがある場合にトリガーが実行されます。以下の イメージストリームトリガー を参照してください。