第7章 Kubernetes リソースでのイメージストリームの使用
イメージストリームは、Red Hat OpenShift Service on AWS のネイティブリソースであり、Build
リソースや DeploymentConfigs
リソースなど、Red Hat OpenShift Service on AWS で利用可能なすべてのネイティブリソースと連携します。これらは、Job
リソース、ReplicationController
リソース、ReplicaSet
リソース、Kubernetes Deployment
リソースなどのネイティブ Kubernetes リソースと共に機能することもできます。
7.1. Kubernetes リソースでのイメージストリームの有効化
Kubernetes リソースでイメージストリームを使用する場合、リソースと同じプロジェクトにあるイメージストリームのみを参照できます。イメージストリームの参照は、ruby:2.5
など、単一セグメントの値で構成されている必要があります。この場合、ruby
は 2.5
という名前のタグを持ち、参照するリソースと同じプロジェクトにあるイメージストリームの名前です。
デフォルトプロジェクトでワークロードを実行したり、デフォルトプロジェクトへのアクセスを共有したりしないでください。デフォルトのプロジェクトは、コアクラスターコンポーネントを実行するために予約されています。
デフォルトプロジェクトである default
、kube-public
、kube-system
、openshift
、openshift-infra
、openshift-node
、および openshift.io/run-level
ラベルが 0
または 1
に設定されているその他のシステム作成プロジェクトは、高い特権があるとみなされます。Pod セキュリティーアドミッション、Security Context Constraints、クラスターリソースクォータ、イメージ参照解決などのアドミッションプラグインに依存する機能は、高い特権を持つプロジェクトでは機能しません。
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