7.3.7. イメージの外部レジストリーからのインポート
アプリケーション開発者は oc import-image
コマンドでイメージをインポートして imagestreams
を作成でき、OpenShift Container Platform は外部レジストリーからのイメージインポートを許可または拒否するように設定できます。
手順
ユーザーがイメージをインポートできる許可されたレジストリーを設定するには、以下を
/etc/origin/master/master-config.yaml
ファイルに追加します。imagePolicyConfig: allowedRegistriesForImport: - domainName: docker.io - domainName: '\*.docker.io' - domainName: '*.redhat.com' - domainName: 'my.registry.example.com'
- イメージを外部認証レジストリーからインポートするには、必要なプロジェクト内にシークレットを作成します。
推奨されていない場合でも、外部の認証済みレジストリーが非セキュアであるか、または証明書が信頼できない場合には、
oc import-image
コマンドを--insecure=true
オプションを指定して使用できます。外部の認証済みレジストリーがセキュアな場合、レジストリー証明書は、以下のようにレジストリーのインポートコントローラーを実行する際にマスターホストで信頼される必要があります。
/etc/pki/ca-trust/source/anchors/
の証明書をコピーします。$ sudo cp <my.registry.example.com.crt> /etc/pki/ca-trust/source/anchors/<my.registry.example.com.crt>
update-ca-trust
コマンドを実行します。$ sudo update-ca-trust
すべてのマスターホストでマスターサービスを再起動します。
$ sudo master-restart api $ sudo master-restart controllers
外部レジストリーの証明書は OpenShift Container Platform レジストリーで信頼されます。
$ for i in pem openssl java; do oc create configmap ca-trust-extracted-${i} --from-file /etc/pki/ca-trust/extracted/${i} oc set volume dc/docker-registry --add -m /etc/pki/ca-trust/extracted/${i} --configmap-name=ca-trust-extracted-${i} --name ca-trust-extracted-${i} done
警告現時点で、証明書をレジストリー Pod に追加するための正式な手順はありませんが、上記の回避策を使用できます。
この回避策では、これらのコマンドを実行するシステムですべての信頼される証明書を使って
configmaps
を作成するため、必要な証明書のみが信頼されるクリーンなシステムからこれを実行することが推奨されます。または、以下のように
Dockerfile
を使用して、イメージを再ビルドするために適切な証明書を信頼できるようレジストリーイメージを変更します。FROM registry.redhat.io/openshift3/ose-docker-registry:v3.6 ADD <my.registry.example.com.crt> /etc/pki/ca-trust/source/anchors/ USER 0 RUN update-ca-trust extract USER 1001
イメージを再ビルドし、これを
docker
レジストリーにプッシュし、そのイメージをレジストリーdeploymentconfig
のspec.template.spec.containers["name":"registry"].image
として使用します。$ oc patch dc docker-registry -p '{"spec":{"template":{"spec":{"containers":[{"name":"registry","image":"*myregistry.example.com/openshift3/ose-docker-registry:latest*"}]}}}}'
imagePolicyConfig
設定をインストールに追加するには、openshift_master_image_policy_config
変数を、以下のようにすべての imagePolicyConfig
設定を含む json
でフォーマットされた文字列で使用できます。
openshift_master_image_policy_config={"imagePolicyConfig":{"allowedRegistriesForImport":[{"domainName":"docker.io"},{"domainName":"\*.docker.io"},{"domainName":"*.redhat.com"},{"domainName":"*my.registry.example.com*"}]}}
ImagePolicy
についての詳細は、ImagePolicy
受付プラグイン のセクションを参照してください。