第7章 Kubernetes リソースでのイメージストリームの使用
OpenShift Container Platform のネイティブリソースであるイメージストリームは、Build
リソース、DeploymentConfigs
リソースなどの OpenShift Container Platform で利用可能なネイティブリソースすべてで動作します。これらは、Job
リソース、ReplicationController
リソース、ReplicaSet
リソース、Kubernetes Deployment
リソースなどのネイティブ Kubernetes リソースと共に機能することもできます。
7.1. Kubernetes リソースでのイメージストリームの有効化
Kubernetes リソースでイメージストリームを使用する場合、リソースと同じプロジェクトにあるイメージストリームのみを参照できます。イメージストリームの参照は、単一セグメントの値で設定される必要があります。たとえば ruby:2.5
の場合、ruby
は 2.5
という名前のタグを持ち、参照するリソースと同じプロジェクトにあるイメージストリームの名前になります。
この機能は、default
の namespace や openshift-
または kube-
の namespace では使用できません。
Kubernetes リソースでイメージストリームを有効にする方法は 2 つあります。
- 特定のリソースでイメージストリームの解決を有効にする。これにより、このリソースのみがイメージフィールドのイメージストリーム名を使用できます。
- イメージストリームでイメージストリームの解決を有効にする。これにより、このイメージストリームを参照するすべてのリソースがイメージフィールドのイメージストリーム名を使用できます。
手順
oc set image-lookup
を使用して、特定のリソース上のイメージストリームの解決またはイメージストリーム上のイメージストリームの解決を有効にすることができます。
すべてのリソースが
mysql
という名前のイメージストリームを参照できるようにするには、以下のコマンドを入力します。$ oc set image-lookup mysql
これにより、
Imagestream.spec.lookupPolicy.local
フィールドが true に設定されます。イメージルックアップが有効なイメージストリーム
apiVersion: image.openshift.io/v1 kind: ImageStream metadata: annotations: openshift.io/display-name: mysql name: mysql namespace: myproject spec: lookupPolicy: local: true
有効な場合には、この動作はイメージストリーム内のすべてのタグに対して有効化されます。
次に、イメージストリームをクエリーし、このオプションが設定されているかどうかを確認できます。
$ oc set image-lookup imagestream --list
特定のリソースでイメージルックアップを有効にすることができます。
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