如何在OpenShift/OKD 4.x群集中允许不安全的注册表

时间:2020-02-23 14:30:14  来源:igfitidea点击:

对于OpenShift/OKD群集4.x上的任何部署,要成功,都必须有容器镜像的源。 OpenShift允许我们将私人注册表用作图像源。诸如Docker Hub,Quay,gcr,等之类的公共注册表以及集成的OpenShift注册表始终运行良好。但是,当我们要使用没有有效SSL证书或者HTTP的私有注册表时,就会出现问题。

有两种方法可以在OpenShift/OKD群集上使用私有不安全注册表;如果使用自签名SSL证书,请导入证书OpenShift CA信任;将注册表添加到不安全注册表列表中,机器配置操作员(MCO)将推送更新到所有节点在群集中,然后重新启动它们。

OpenShift/Kubernetes的私有镜像注册表:

使用Helm Chart在Kubernetes/OpenShift上安装Harbor Image Registry

在CentOS/Debian/Ubuntu上安装Harbor Container Image Registry

使用操作员在OpenShift上安装Project Quay Registry

如何在CentOS/RHEL/Ubuntu上设置Red Hat Quay注册表

添加其他信任库以访问镜像注册表

假设注册表URL是ocr.example.com,位于默认的HTTPS端口(443)上,证书文件是ocr.example.com.crt。

这是我们将如何配置在镜像导入,Pod镜像提取和构建期间应信任的其他CA。请注意,CA必须为PEM编码格式。

--- syntax --
$oc create configmap registry-config \
  --from-file=<external_registry_address>=ca.crt \
  -n openshift-config

--- Example --
$oc create configmap registry-config \
  --from-file=ocr.example.com=ocr.example.com.crt \
  -n openshift-config

然后编辑镜像注册表群集配置,并指定AdditionalTrustedCA。

$oc edit image.config.openshift.io cluster
spec:
  additionalTrustedCA:
    name: registry-config

将不安全的图像注册表列入白名单

我们还可以通过编辑image.config.openshift.io/cluster自定义资源(CR)来添加不安全的注册表。这对于仅支持HTTP连接或者具有无效证书的注册表很常见。

编辑image.config.openshift.io/cluster自定义资源:

$oc edit image.config.openshift.io/cluster

在allowedRegistries部分下指定允许图像拉入和推送操作的注册表。

....
spec:
  additionalTrustedCA:
    name: registry-config
  registrySources:
    insecureRegistries:
    - ocr.example.com

如果有多个行,则可以为不安全的注册表添加更多行。要阻止注册表,请添加如下内容。

....
spec:
  additionalTrustedCA:
    name: registry-config
  registrySources:
    insecureRegistries:
    - ocr.example.com
    blockedRegistries:
    - untrusted.com

机器配置操作员(MCO)在image.config.openshift.io/cluster中监视注册表的任何更改,并在检测到更改时重新启动节点。

新的注册表配置将写入每个节点上的/etc/containers/registries.conf文件中。