11.2. 配置 registry 允许导入
您可以在 imagePolicyConfig:allowedRegistriesForImport
部分下配置允许导入 master-config.yaml 中的 registry,如下例所示。如果没有设置,则允许所有镜像,这是默认设置。
例 11.1. Registries 允许导入的配置示例
每个规则由以下属性组成:
-
domainName
:主机名是可选用:<port>
后缀终止的,该后缀可以识别特殊通配符 (?
,*
)。前者匹配包含任何长度的字符序列,而后面的字符恰好匹配一个字符。通配符字符可以在前后都存在:
分隔符。通配符仅适用于分隔符之前或之后的部分,而不考虑分隔符的存在。 -
insecure
: 是一个布尔值,用于决定在domainName
中缺少:<port>
部分时匹配哪些端口。如果为 true,domainName
将会匹配带有:80
后缀或未指定端口的 registry,只要导入过程中使用了不安全的标志。如果为 false,则匹配带有:443
后缀或未指定端口的 registry。
如果规则应当同时与同一域的安全和不安全端口匹配,则必须列出规则两次(安装后为 insecure=true
,一次具有 insecure=false
)。
在进行任何规则评估之前,非限定镜像引用是 docker.io
限定的。要将它们列入白名单,请使用 domainName: docker.io
。
domainname:*
规则与任何 registry 主机名匹配,但端口仍限制为 443
。要在任意端口上匹配任意 registry 服务,请使用 domainName: *:*
。
根据 Registries 配置示例中为导入而 创建的规则:
-
oc tag --insecure reg.mydomain.com/app:v1 app:v1
会因为mydomain.com
规则而列入白名单 -
oc import-image --from reg1.mydomain.com:80/foo foo:latest
也会列入白名单 -
oc tag local.registry.corp/bar bar:latest
将被拒绝,因为端口与第三个规则中的5000
不匹配
被拒绝的镜像导入将生成类似以下文本的错误消息:
The ImageStream "bar" is invalid: * spec.tags[latest].from.name: Forbidden: registry "local.registry.corp" not allowed by whitelist: "local.registry.corp:5000", "*.mydomain.com:80", "registry.redhat.io:443" * status.tags[latest].items[0].dockerImageReference: Forbidden: registry "local.registry.corp" not allowed by whitelist: "local.registry.corp:5000", "*.mydomain.com:80", "registry.redhat.io:443"