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: true
13.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