Red Hat Training
A Red Hat training course is available for OpenShift Container Platform
13.7. タグおよびイメージメタデータのインポート
イメージストリームは、外部コンテナーイメージレジストリーのイメージリポジトリーからタグおよびイメージメタデータをインポートするように設定できます。これは複数の異なる方法で実行できます。
oc import-imageコマンドで--fromオプションを使用してタグとイメージ情報を手動でインポートできます。$ oc import-image <image_stream_name>[:<tag>] --from=<docker_image_repo> --confirm
以下に例を示します。
$ oc import-image my-ruby --from=docker.io/openshift/ruby-20-centos7 --confirm The import completed successfully. Name: my-ruby Created: Less than a second ago Labels: <none> Annotations: openshift.io/image.dockerRepositoryCheck=2016-05-06T20:59:30Z Docker Pull Spec: 172.30.94.234:5000/demo-project/my-ruby Tag Spec Created PullSpec Image latest docker.io/openshift/ruby-20-centos7 Less than a second ago docker.io/openshift/ruby-20-centos7@sha256:772c5bf9b2d1e8... <same>
また、latest だけではなくイメージのすべてのタグをインポートするには
--allフラグを追加することもできます。OpenShift Container Platform のほとんどのオブジェクトの場合と同様に、CLI を使用して JSON または YAML 定義を作成し、これをファイルに保存してからオブジェクトを作成できます。
spec.dockerImageRepositoryフィールドをイメージの Docker プル仕様に設定します。apiVersion: "v1" kind: "ImageStream" metadata: name: "my-ruby" spec: dockerImageRepository: "docker.io/openshift/ruby-20-centos7"
次にオブジェクトを作成します。
$ oc create -f <file>
外部 Docker レジストリーのイメージを参照するイメージストリームを作成する場合、OpenShift Container Platform は短時間で外部レジストリーと通信し、イメージについての最新情報を取得します。
タグおよびイメージメタデータの同期後に、イメージストリームオブジェクトは以下のようになります。
apiVersion: v1
kind: ImageStream
metadata:
name: my-ruby
namespace: demo-project
selflink: /oapi/v1/namespaces/demo-project/imagestreams/my-ruby
uid: 5b9bd745-13d2-11e6-9a86-0ada84b8265d
resourceVersion: '4699413'
generation: 2
creationTimestamp: '2016-05-06T21:34:48Z'
annotations:
openshift.io/image.dockerRepositoryCheck: '2016-05-06T21:34:48Z'
spec:
dockerImageRepository: docker.io/openshift/ruby-20-centos7
tags:
-
name: latest
annotations: null
from:
kind: DockerImage
name: 'docker.io/openshift/ruby-20-centos7:latest'
generation: 2
importPolicy: { }
status:
dockerImageRepository: '172.30.94.234:5000/demo-project/my-ruby'
tags:
-
tag: latest
items:
-
created: '2016-05-06T21:34:48Z'
dockerImageReference: 'docker.io/openshift/ruby-20-centos7@sha256:772c5bf9b2d1e8e80742ed75aab05820419dc4532fa6d7ad8a1efddda5493dc3'
image: 'sha256:772c5bf9b2d1e8e80742ed75aab05820419dc4532fa6d7ad8a1efddda5493dc3'
generation: 2
タグおよびイメージメタデータを同期するため、タグをスケジュールに応じて外部レジストリーのクエリーを実行できるよう設定できます。 これは、タグのイメージストリームへの追加 で説明されているように --scheduled=true フラグを oc tag コマンドに設定して実行できます。
または、タグの定義で importPolicy.scheduled を true に設定することもできます。
apiVersion: v1
kind: ImageStream
metadata:
name: ruby
spec:
tags:
- from:
kind: DockerImage
name: openshift/ruby-20-centos7
name: latest
importPolicy:
scheduled: true13.7.1. 非セキュアなレジストリーからのイメージのインポート
イメージストリームは、自己署名型の証明書を使って署名されたものを使用する場合や、HTTPS ではなく単純な HTTP を使用する場合など、非セキュアなイメージレジストリーからタグおよびイメージメタデータをインポートするように設定できます。
これを設定するには、openshift.io/image.insecureRepository アノテーションを追加し、これを true に設定します。この設定はレジストリーへの接続時の証明書の検証をバイパスします。
kind: ImageStream
apiVersion: v1
metadata:
name: ruby
annotations:
openshift.io/image.insecureRepository: "true" 1
spec:
dockerImageRepository: my.repo.com:5000/myimage- 1
openshift.io/image.insecureRepositoryアノテーション true に設定します。
このオプションは統合レジストリーに対して、イメージの提供時にイメージストリームでタグ付けされた外部イメージについて非セキュアなトランスポートにフォールバックするよう指示しますが、これにはリスクが伴います。可能な場合には、istag にのみ非セキュアのマーク を付けてこのリスクを回避します。
上記の定義はタグおよびイメージメタデータのインポートのみに適用されます。このイメージがクラスターで使用されるようにするには (docker pull を実行できるようにするには)、以下のいずれかが該当している必要があります。
-
各ノードには Docker が
dockerImageRepositoryのレジストリーの部分に一致する--insecure-registryフラグで設定されている。詳細は、Host Preparation を参照してください。 -
各
istag仕様ではreferencePolicy.typeがLocalに設定されている。詳細は、参照ポリシー を参照してください。
13.7.1.1. イメージストリームタグのポリシー
13.7.1.1.1. 非セキュアなタグのインポートポリシー
上記のアノテーションは、特定の ImageStream のすべてのイメージおよびタグに適用されます。より詳細な制御を実行するために、ポリシーを istags に設定できます。タグの定義の importPolicy.insecure を true に設定すると、このタグ下のイメージについてのみ非セキュアなトランスポートへのフォールバックが許可されます。
特定の istag 下のイメージについてのセキュアでないトランスポートへのフォールバックは、イメージストリームにセキュアでないアノテーションが付けられるか、または istag にセキュアでないインポートポリシーが設定されている場合に有効になります。importPolicy.insecure が false に設定されていると、イメージストリームのアノテーションは上書きできません。
13.7.1.1.2. 参照ポリシー
参照ポリシーにより、このイメージストリームタグを参照するリソースがどこからイメージをプルするかを指定できます。これは外部レジストリーからインポートされるイメージにのみ適用されます。Local と Source のオプションから選択できます。
Source ポリシーはクライアントに対し、イメージのソースレジストリーから直接プルするように指示します。統合レジストリーは、イメージがクラスターによって管理されていない限り使用されません。(これは外部イメージではありません。) これはデフォルトポリシーになります。
Local ポリシーはクライアントに対し、常に統合レジストリーからプルするように指示します。これは Docker デーモンの設定を変更せずに外部の非セキュアなレジストリーからプルする場合に役立ちます。
このポリシーはイメージストリームタグの使用にのみ適用されます。外部レジストリーの場所を使用してイメージを直接参照したり、プルしたりするコンポーネントまたは操作は内部レジストリーにリダイレクトされません。
レジストリーの プルスルー機能 はリモートイメージをクライアントに提供します。この機能はデフォルトで有効にされており、ローカルの参照ポリシーが使用されるようにするには有効にされている必要があります。さらにすべての Blob は後のアクセスを速めるためにミラーリングされます。
イメージストリームタグの仕様でポリシーを referencePolicy.type として設定できます。
ローカル参照ポリシーが設定されたセキュアでないタグの例
kind: ImageStream
apiVersion: v1
metadata:
name: ruby
tags:
- from:
kind: DockerImage
name: my.repo.com:5000/myimage
name: mytag
importPolicy:
insecure: true 1
referencePolicy:
type: Local 2