搜索

7.3.7. 从外部 registry 导入镜像

download PDF

应用程序开发人员可以使用 oc import-image 命令导入镜像来创建镜像流,并且可以配置 OpenShift Container Platform 来允许或拒绝来自外部 registry 的镜像导入。

流程
  1. 要配置可以导入镜像的允许的 registry,请将以下内容添加到 /etc/origin/master/master-config.yaml 文件中:

    imagePolicyConfig:
      allowedRegistriesForImport:
      - domainName: docker.io
      - domainName: '\*.docker.io'
      - domainName: '*.redhat.com'
      - domainName: 'my.registry.example.com'
  2. 要从外部经过身份验证的用户导入镜像,请在所需项目中创建一个 secret。
  3. 即使不建议使用外部身份验证的 registry,或者无法信任证书,oc import-image 命令可以与 --insecure=true 选项一起使用。

    如果外部经过身份验证的用户的 registry 是安全的,则 registry 证书应该在 master 主机中运行 registry 导入控制器时被信任:

    /etc/pki/ca-trust/source/anchors/ 中复制证书:

    $ sudo cp <my.registry.example.com.crt> /etc/pki/ca-trust/source/anchors/<my.registry.example.com.crt>
  4. 运行 update-ca-trust 命令:

    $ sudo update-ca-trust
  5. 重启所有 master 主机上的 master 服务:

    $ sudo master-restart api
    $ sudo master-restart controllers
  6. 外部 registry 的证书应该在 OpenShift Container Platform registry 中信任:

    $ 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
    警告

    目前,没有将证书添加到 registry pod 的官方流程,但可以使用上述临时解决方案。

    这个临时解决方案是,在运行这些命令的系统中使用所有可信证书创建 configmap,因此建议是从只信任所需证书的干净系统中运行它。

  7. 或者,修改 registry 镜像,以信任使用 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
  8. 重建镜像,将其推送到 docker registry,并将该镜像用作 registry 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 变量可用于 json 格式的字符串,包括所有 imagePolicyConfig 配置,如下所示:

openshift_master_image_policy_config={"imagePolicyConfig":{"allowedRegistriesForImport":[{"domainName":"docker.io"},{"domainName":"\*.docker.io"},{"domainName":"*.redhat.com"},{"domainName":"*my.registry.example.com*"}]}}

有关 ImagePolicy 的更多信息,请参阅 ImagePolicy 准入插件 部分。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.