2.2.5. 配置容器镜像 registry 设置

用于定义 OpenShift Container Platform 用来获取容器镜像的 registry 的设置默认包括在 /etc/containers/registries.conf 文件中。在该文件中,您可以将 registry 设置为不需要身份验证(不安全),指向镜像的 registry,或设置搜索哪些 registry 以获取非全限定容器镜像请求。

不直接更改 registry.conf,您可以将配置文件放到 /etc/containers/registries.conf.d 目录中,然后自动附加到系统的现有 registry.conf 设置中。

此流程描述了如何创建 registry.d 文件(/etc/containers/registries/99-worker-unqualified-search-registries.conf),该文件会添加 quay.io 作为非全限定的搜索 registry(在 OpenShift Container Platform 试图拉取不包括 registry 名称的镜像名称时进行搜索)。它包含您可以检查的 base64 编码内容,如下所示:

$ echo dW5xdWFsaWZpZWQtc2VhcmNoLXJlZ2lzdHJpZXMgPSBbJ3JlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tJywgJ2RvY2tlci5pbycsICdxdWF5LmlvJ10K | base64 -d
unqualified-search-registries = ['registry.access.redhat.com', 'docker.io', 'quay.io']

如需 registries.confregistries.d 目录文件的格式,请参阅 containers-registries.conf man page。

先决条件

  • 有一个正在运行的 OpenShift Container Platform 集群(版本 4.4 或更高版本)。
  • 以具有管理特权的用户身份登录集群。

流程

  1. 创建一个 YAML 文件(myregistry.yaml)来保存 /etc/containers/registries.conf.d/99-worker-unqualified-search-registries.conf 文件的内容,包括该文件的 base64 内容。例如:

    $ cat > /tmp/myregistry.yaml <<EOF
    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 99-worker-unqualified-search-registries
    spec:
      config:
        ignition:
          version: 3.1.0
        storage:
          files:
          - contents:
              source: data:text/plain;charset=utf-8;base64,dW5xdWFsaWZpZWQtc2VhcmNoLXJlZ2lzdHJpZXMgPSBbJ3JlZ2lzdHJ5LmFjY2Vzcy5yZWRoYXQuY29tJywgJ2RvY2tlci5pbycsICdxdWF5LmlvJ10K
            filesystem: root
            mode: 0644
            path: /etc/containers/registries.conf.d/99-worker-unqualified-search-registries.conf
    EOF
  2. 将机器配置应用到池:

    $ oc apply -f /tmp/myregistry.yaml
  3. 检查是否应用了新的机器配置,并且节点是否处于降级状态。它可能需要几分钟时间。worker 池将显示更新进行中,每台机器都成功应用了新机器配置:

    $ oc get machineconfigpool

    输出示例

    NAME   CONFIG             UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE
    master rendered-master-35 True    False    False    3            3                 3                   0                    34m
    worker rendered-worker-d8 False   True     False    3            1                 1                   0                    34m

  4. 要检查是否应用了更改,您可以登录到 worker 节点:

    $ oc get node | grep worker

    输出示例

    ip-10-0-0-1.us-east-2.compute.internal   Ready    worker   39m   v0.0.0-master+$Format:%h$

    $ oc debug node/ip-10-0-0-1.us-east-2.compute.internal

    输出示例

    Starting pod/ip-10-0-141-142us-east-2computeinternal-debug ...
    ...

    sh-4.2# chroot /host
    sh-4.4# cat /etc/containers/registries.conf.d/99-worker-unqualified-search-registries.conf
    unqualified-search-registries = ['registry.access.redhat.com', 'docker.io', 'quay.io']
    sh-4.4# exit