11.4. 镜像配置
了解并配置镜像 registry 设置。
11.4.1. 镜像控制器配置参数
Image.config.openshift.io/cluster
资源包含有关如何处理镜像的集群范围信息。规范且唯一有效的名称是 cluster
。它的 spec
提供以下配置参数。
参数,如 DisableScheduledImport
, MaxImagesBulkImportedPerRepository
, MaxScheduledImportsPerMinute
, ScheduledImageImportMinimumIntervalSeconds
, InternalRegistryHostname
不可配置。
参数 | 描述 |
---|---|
|
限制普通用户可从中导入镜像的容器镜像 registry。将此列表设置为您信任包含有效镜像且希望应用程序能够从中导入的 registry。有权从 API 创建镜像或 这个列表中的每个项包含由 registry 域名指定的 registry 的位置。
|
|
对包含
此配置映射的命名空间为 |
|
提供默认外部镜像 registry 的主机名。只有在镜像 registry 对外公开时才应设置外部主机名。第一个值用于镜像流中的 |
| 包含用于决定容器运行时在访问构建和 pod 的镜像时应如何处理个别 registry 的配置。例如,是否允许不安全的访问。它不包含内部集群 registry 的配置。
可以设置 |
当定义 allowedRegistries
参数时,除非明确列出,否则所有 registry (包括 registry.redhat.io
和 quay.io
registry 和默认的 OpenShift 镜像 registry)都会被阻断。当使用参数时,为了避免 pod 失败,将所有 registry(包括 registry.redhat.io
和 quay.io
registry)和 internalRegistryHostname
添加到 allowedRegistries
列表中,因为环境中有效负载镜像需要它们。对于断开连接的集群,还应添加镜像的 registry。
image.config.openshift.io/cluster
资源的 status
项包括了从集群观察到的值。
参数 | 描述 |
---|---|
|
由控制 |
|
由 Image Registry Operator 设置,在镜像 registry 通过外部公开时为它提供外部主机名。第一个值用于镜像流中的 |
11.4.2. 配置镜像 registry 设置
您可以通过编辑 image.config.openshift.io/cluster
自定义资源(CR)来配置镜像 registry 设置。当对 registry 的更改应用到 image.config.openshift.io/cluster
CR 时,Machine Config Operator (MCO) 执行以下顺序操作:
- 对节点进行 cordon 操作
- 通过重启 CRI-O 应用更改
取消记录节点
注意MCO 在检测到更改时不会重启节点。
流程
编辑
image.config.openshift.io/cluster
自定义资源:$ oc edit image.config.openshift.io/cluster
以下是
image.config.openshift.io/cluster
CR 示例:apiVersion: config.openshift.io/v1 kind: Image 1 metadata: annotations: release.openshift.io/create-only: "true" creationTimestamp: "2019-05-17T13:44:26Z" generation: 1 name: cluster resourceVersion: "8302" selfLink: /apis/config.openshift.io/v1/images/cluster uid: e34555da-78a9-11e9-b92b-06d6c7da38dc spec: allowedRegistriesForImport: 2 - domainName: quay.io insecure: false additionalTrustedCA: 3 name: myconfigmap registrySources: 4 allowedRegistries: - example.com - quay.io - registry.redhat.io - image-registry.openshift-image-registry.svc:5000 - reg1.io/myrepo/myapp:latest insecureRegistries: - insecure.com status: internalRegistryHostname: image-registry.openshift-image-registry.svc:5000
- 1
Image
:包含有关如何处理镜像的集群范围信息。规范且唯一有效的名称是cluster
。- 2
allowedRegistriesForImport
:限制普通用户可从中导入镜像的容器镜像 registry。将此列表设置为您信任包含有效镜像且希望应用程序能够从中导入的 registry。有权从 API 创建镜像或ImageStreamMappings
的用户不受此策略的影响。通常只有集群管理员具有适当权限。- 3
additionalTrustedCA
:引用包含镜像流导入、Pod 镜像拉取、openshift-image-registry
pullthrough 和构建期间受信任的额外证书颁发机构(CA)的配置映射。此配置映射的命名空间为openshift-config
。ConfigMap 的格式是使用 registry 主机名作为键,使用 PEM 证书作为值,用于每个要信任的额外 registry CA。- 4
registrySources
:包含用于决定容器运行时在访问构建和 pod 的镜像时是否允许或阻止个别 registry 的配置。可以设置allowedRegistries
参数或blockedRegistries
参数,但不能同时设置这两个参数。您还可以定义是否允许访问允许使用镜像短名称的不安全的 registry。本例使用allowedRegistries
参数,该参数定义允许使用的 registry。不安全 registryinsecure.com
也被允许。registrySources
参数不包含内部集群 registry 的配置。
注意当定义
allowedRegistries
参数时,除非明确列出,否则所有 registry (包括 registry.redhat.io 和 quay.io registry 和默认的 OpenShift 镜像 registry)都会被阻断。如果使用参数,为了避免 pod 失败,您必须将registry.redhat.io
和quay.io
registry 以及internalRegistryHostname
添加到allowedRegistries
列表中,因为环境中有效负载镜像需要它们。不要将registry.redhat.io
和quay.io
registry 添加到blockedRegistries
列表中。使用
allowedRegistries
、blockedRegistries
或insecureRegistries
参数时,您可以在 registry 中指定单独的存储库。例如:reg1.io/myrepo/myapp:latest
。应避免使用不安全的外部 registry,以减少可能的安全性风险。
要检查是否应用了更改,请列出您的节点:
$ oc get nodes
输出示例
NAME STATUS ROLES AGE VERSION ip-10-0-137-182.us-east-2.compute.internal Ready,SchedulingDisabled worker 65m v1.29.4 ip-10-0-139-120.us-east-2.compute.internal Ready,SchedulingDisabled control-plane 74m v1.29.4 ip-10-0-176-102.us-east-2.compute.internal Ready control-plane 75m v1.29.4 ip-10-0-188-96.us-east-2.compute.internal Ready worker 65m v1.29.4 ip-10-0-200-59.us-east-2.compute.internal Ready worker 63m v1.29.4 ip-10-0-223-123.us-east-2.compute.internal Ready control-plane 73m v1.29.4
如需有关允许、阻止和不安全的 registry 参数的更多信息,请参阅配置镜像 registry 设置。
11.4.3. 为镜像 registry 访问配置额外的信任存储
Image.config.openshift.io/cluster
自定资源可包含对配置映射的引用,该配置映射包含要在镜像 registry 访问期间被信任的额外证书颁发机构。
先决条件
- 证书颁发机构(CA)必须经过 PEM 编码。
流程
您可以在openshift-config
命名空间中创建配置映射,并在 image.config.openshift.io
子定义资源中的 AdditionalTrustedCA
中使用其名称,以提供与外部 registry 联系时可以被信任的额外CA。
对于每个要信任的额外 registry CA,配置映射键是带有要信任此 CA 的端口的 registry 的主机名,而 PEM 证书内容是要信任的每个额外 registry CA。
镜像 registry CA 配置映射示例
apiVersion: v1
kind: ConfigMap
metadata:
name: my-registry-ca
data:
registry.example.com: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
registry-with-port.example.com..5000: | 1
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
- 1
- 如果 registry 带有端口,如
registry-with-port.example.com:5000
,:
需要被..
替换。
您可以按照以下过程配置其他CA。
配置其他CA:
$ oc create configmap registry-config --from-file=<external_registry_address>=ca.crt -n openshift-config
$ oc edit image.config.openshift.io cluster
spec: additionalTrustedCA: name: registry-config