6.8. イメージとイメージストリームのインポートと操作


次のセクションでは、イメージストリームをインポートして操作する方法を説明します。

6.8.1. プライベートレジストリーからのイメージおよびイメージストリームのインポート

イメージストリームは、プライベートレジストリーからタグおよびイメージメタデータをインポートするように設定できます。 これには認証が必要です。この手順は、Cluster Samples Operator が registry.redhat.io 以外からコンテンツをプルするために使用するレジストリーを変更する場合に適用されます。

注記

セキュアでないレジストリーからインポートする場合には、シークレットに定義されたレジストリーの URL に :80 ポートの接尾辞を追加するようにしてください。 追加していない場合にレジストリーからインポートしようとすると、このシークレットは使用されません。

手順

  1. 以下のコマンドを入力して、認証情報を保存するために使用する secret オブジェクトを作成する必要があります。

    $ oc create secret generic <secret_name> --from-file=.dockerconfigjson=<file_absolute_path> --type=kubernetes.io/dockerconfigjson
  2. シークレットが設定されたら、新規イメージストリームを作成するか、oc import-image コマンドを入力します。

    $ oc import-image <imagestreamtag> --from=<image> --confirm

    インポートプロセスで OpenShift Container Platform はシークレットを取得してリモートパーティーに提供します。

6.8.1.1. Pod が他のセキュリティー保護されたレジストリーからイメージを参照できるようにする設定

他のプライベートレジストリーレジストリーまたは保護されたレジストリーから保護されたコンテナーをプルするには、Docker や Podman などのコンテナークライアント認証情報からプルシークレットを作成し、それをサービスアカウントに追加する必要があります。

Docker と Podman は設定ファイルを使用して、保護されたレジストリーまたは保護されていないレジストリーへのログインに使用する認証の詳細を保存します。

  • Docker: Docker は、デフォルトで $HOME/.docker/config.json を使用します。
  • Podman: Podman は、デフォルトで $HOME/.config/containers/auth.json を使用します。

以前に保護されたレジストリーまたは保護されていないレジストリーにログインしたことがある場合、これらのファイルには認証情報が保存されます。

注記

quay.ioquay.io/<example_repository> のような一意のパスがある場合、Docker と Podman の認証情報ファイルおよび関連するプルシークレットには、同一レジストリーへの複数の参照を含めることができます。ただし、Docker および Podman のいずれも、まったく同じレジストリーパスの複数エントリーはサポートしていません。

config.json ファイルのサンプル

{
   "auths":{
      "cloud.openshift.com":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      },
      "quay.io":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      },
      "quay.io/repository-main":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      }
   }
}

プルシークレットの例

apiVersion: v1
data:
  .dockerconfigjson: ewogICAiYXV0aHMiOnsKICAgICAgIm0iOnsKICAgICAgIsKICAgICAgICAgImF1dGgiOiJiM0JsYj0iLAogICAgICAgICAiZW1haWwiOiJ5b3VAZXhhbXBsZS5jb20iCiAgICAgIH0KICAgfQp9Cg==
kind: Secret
metadata:
  creationTimestamp: "2021-09-09T19:10:11Z"
  name: pull-secret
  namespace: default
  resourceVersion: "37676"
  uid: e2851531-01bc-48ba-878c-de96cfe31020
type: Opaque

手順

  • 既存の認証ファイルからシークレットを作成します。

    • .docker/config.json を使用する Docker クライアントの場合は、次のコマンドを入力します。

      $ oc create secret generic <pull_secret_name> \
          --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
          --type=kubernetes.io/dockerconfigjson
    • .config/containers/auth.json を使用する Podman クライアントの場合は、次のコマンドを入力します。

      $ oc create secret generic <pull_secret_name> \
           --from-file=<path/to/.config/containers/auth.json> \
           --type=kubernetes.io/podmanconfigjson
  • セキュアなレジストリーに関する Docker 認証情報ファイルがまだない場合には、以下のコマンドを実行してシークレットを作成することができます。

    $ oc create secret docker-registry <pull_secret_name> \
        --docker-server=<registry_server> \
        --docker-username=<user_name> \
        --docker-password=<password> \
        --docker-email=<email>
  • Pod のイメージをプルするためのシークレットを使用するには、そのシークレットをサービスアカウントに追加する必要があります。この例では、サービスアカウントの名前は、Pod が使用するサービスアカウントの名前に一致している必要があります。デフォルトのサービスアカウントは default です。

    $ oc secrets link default <pull_secret_name> --for=pull

6.8.2. マニフェストリストの操作

--import-mode フラグを追加することにより、oc import-image または oc tag CLI コマンドを使用するときに、マニフェストリストの 1 つのサブマニフェストまたはすべてのマニフェストをインポートできます。

単一のサブマニフェストまたはマルチアーキテクチャーイメージを含むイメージストリームを作成するには、以下のコマンドを参照してください。

手順

  • 次のコマンドを入力して、マルチアーキテクチャーイメージを含むイメージストリームを作成し、インポートモードを PreserveOriginal に設定します。

    $ oc import-image <multiarch-image-stream-tag>  --from=<registry>/<project_name>/<image-name> \
    --import-mode='PreserveOriginal' --reference-policy=local --confirm

    出力例

    ---
    Arch:           <none>
    Manifests:      linux/amd64     sha256:6e325b86566fafd3c4683a05a219c30c421fbccbf8d87ab9d20d4ec1131c3451
                    linux/arm64     sha256:d8fad562ffa75b96212c4a6dc81faf327d67714ed85475bf642729703a2b5bf6
                    linux/ppc64le   sha256:7b7e25338e40d8bdeb1b28e37fef5e64f0afd412530b257f5b02b30851f416e1
    ---

  • または、次のコマンドを入力して、マニフェストリストを破棄し、単一のサブマニフェストをインポートする Legacy インポートモードでイメージをインポートします。

    $ oc import-image <multiarch-image-stream-tag>  --from=<registry>/<project_name>/<image-name> \
    --import-mode='Legacy' --confirm
    注記

    --import-mode= のデフォルト値は Legacy です。この値を除外するか、Legacy または PreserveOriginal のいずれかを指定しないと、単一のサブマニフェストがインポートされます。無効なインポートモードは次のエラーを返します: error: valid ImportMode values are Legacy or PreserveOriginal

制限

マニフェストリストの操作には、次の制限があります。

  • 場合によっては、ユーザーがサブマニフェストを直接使用したい場合があります。oc adm prune images が実行されている場合、または CronJob プルーナーが実行されている場合、サブマニフェストリストが使用されていることを検出できません。その結果、oc adm prune images または CronJob プルーナーを使用する管理者は、サブマニフェストを含むマニフェストリスト全体を削除する可能性があります。

    この制限を回避するには、代わりにタグ別またはダイジェスト別のマニフェストリストを使用できます。

6.8.2.1. マニフェストリストの定期的なインポートの設定

マニフェストリストを定期的に再インポートするには、--scheduled フラグを使用できます。

手順

  • 次のコマンドを入力して、マニフェストリストを定期的に更新するようにイメージストリームを設定します。

    $ oc import-image <multiarch-image-stream-tag>  --from=<registry>/<project_name>/<image-name> \
    --import-mode='PreserveOriginal' --scheduled=true

6.8.2.2. マニフェストリストのインポート時の SSL/TSL の設定

マニフェストリストをインポートするときに SSL/TSL を設定するには、--insecure フラグを使用できます。

手順

  • --insecure=true を設定すると、マニフェストリストのインポートで SSL/TSL 検証がスキップされます。以下に例を示します。

    $ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \
    --import-mode='PreserveOriginal' --insecure=true

6.8.3. --import-mode のアーキテクチャーの指定

--import-mode= フラグを除外または含めることで、インポートしたイメージストリームをマルチアーキテクチャーとシングルアーキテクチャーの間で入れ替えることができます。

手順

  • 次のコマンドを実行して、--import-mode= フラグを除外して、イメージストリームをマルチアーキテクチャーからシングルアーキテクチャーに更新します。

    $ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name>
  • 次のコマンドを実行して、イメージストリームをシングルアーキテクチャーからマルチアーキテクチャーに更新します。

    $ oc import-image <multiarch-image-stream-tag>  --from=<registry>/<project_name>/<image-name> \
    --import-mode='PreserveOriginal'

6.8.4. --import-mode の設定フィールド

次の表に、--import-mode= フラグで使用できるオプションを示します。

パラメーター説明

レガシー

--import-mode のデフォルトオプション。指定すると、マニフェストリストが破棄され、単一のサブマニフェストがインポートされます。プラットフォームは、以下の優先順位で選択されます。

  1. タグのアノテーション
  2. コントロールプレーンアーキテクチャー
  3. Linux/AMD64
  4. 一覧の最初のマニフェスト

PreserveOriginal

指定すると、元のマニフェストが保持されます。マニフェスト一覧の場合は、マニフェストの一覧とそのすべてのサブマニフェストがインポートされます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.