第7章 Kubernetes リソースでのイメージストリームの使用

OpenShift Container Platform のネイティブリソースであるイメージストリームは、ビルドまたはデプロイメントなどの OpenShift Container Platform で利用可能な残りのネイティブリソースのすべてと共に追加の設定なしで機能します。これらは、ジョブ、レプリケーションコントローラー、レプリカセットまたは Kubernetes デプロイメントなどのネイティブ Kubernetes リソースと共に機能することもできます。

7.1. Kubernetes リソースでのイメージストリームの有効化

Kubernetes リソースでイメージストリームを使用する場合、リソースと同じプロジェクトにあるイメージストリームのみを参照できます。イメージストリームの参照は、単一セグメントの値で設定される必要があります。たとえば ruby:2.5 の場合、ruby2.5 という名前のタグを持ち、参照するリソースと同じプロジェクトにあるイメージストリームの名前になります。

注記

この機能は、default の namespace や openshift- または kube- の namespace では使用できません。

Kubernetes リソースでイメージストリームを有効にする方法は 2 つあります。

  • 特定のリソースでイメージストリームの解決を有効にする。これにより、このリソースのみがイメージフィールドのイメージストリーム名を使用できます。
  • イメージストリームでイメージストリームの解決を有効にする。これにより、このイメージストリームを参照するすべてのリソースがイメージフィールドのイメージストリーム名を使用できます。

手順

oc set image-lookup を使用して、特定のリソース上のイメージストリームの解決またはイメージストリーム上のイメージストリームの解決を有効にすることができます。

  1. すべてのリソースが 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

    有効な場合には、この動作はイメージストリーム内のすべてのタグに対して有効化されます。

  2. 次に、イメージストリームをクエリーし、このオプションが設定されているかどうかを確認できます。

    $ 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