第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