13.3. Kubernetes リソースでのイメージストリームの使用
OpenShift Container Platform のネイティブリソースであるイメージストリームは、ビルド または デプロイメント などの OpenShift Container Platform で利用可能な残りのネイティブリソースのすべてと共に追加の設定なしで機能します。現時点で、これらは ジョブ、レプリケーションコントローラー、レプリカセットまたは Kubernetes デプロイメント などのネイティブ Kubernetes リソースと共に機能します。
クラスター管理者は使用可能な リソースを正確に設定 することができます。
この機能が有効な場合、リソースの image フィールドにイメージストリームの参照を配置することができます。この機能を使用する場合、リソースと同じプロジェクトにあるイメージストリームのみを参照することができます。イメージストリームの参照は、単一セグメントの値で設定される必要があります。 たとえば ruby:2.5 の場合、ruby は 2.5 という名前のタグを持ち、参照するリソースと同じプロジェクトにあるイメージストリームの名前になります。
この機能を有効にする 2 つの方法があります。
- 特定のリソースでイメージストリームの解決を有効にする。これにより、このリソースのみがイメージフィールドのイメージストリーム名を使用できます。
- イメージストリームでイメージストリームの解決を有効にする。これにより、このイメージストリームを参照するすべてのリソースがイメージフィールドのイメージストリーム名を使用できます。
上記の操作のいずれも oc set image-lookup を使用して実行できます。たとえば、以下のコマンドはすべてのリソースが mysql という名前のイメージストリームを参照できるようにします。
$ oc set image-lookup mysql
これにより、Imagestream.spec.lookupPolicy.local フィールドが true に設定されます。
イメージルックアップが有効なイメージストリーム
apiVersion: v1
kind: ImageStream
metadata:
annotations:
openshift.io/display-name: mysql
name: mysql
namespace: myproject
spec:
lookupPolicy:
local: true
有効な場合には、この動作はイメージストリーム内のすべてのタグに対して有効化されます。
以下を使用してイメージストリームをクエリーし、このオプションが設定されているかどうかを確認できます。
$ oc set image-lookup
さらに、特定のリソースでイメージルックアップを有効にすることもできます。以下のコマンドは mysql という名前の Kubernetes デプロイメントがイメージストリームを使用できるようにします。
$ oc set image-lookup deploy/mysql
これにより、alpha.image.policy.openshift.io/resolve-names アノテーションがデプロイメントに設定されます。
イメージルックアップが有効にされたデプロイメント
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
namespace: myproject
spec:
replicas: 1
template:
metadata:
annotations:
alpha.image.policy.openshift.io/resolve-names: '*'
spec:
containers:
- image: mysql:latest
imagePullPolicy: Always
name: mysql
イメージルックアップを無効にするには、--enabled=false を渡します。
$ oc set image-lookup deploy/mysql --enabled=false