你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Red Hat OpenShift 4 群集上添加或更新 Red Hat 拉取机密

本指南介绍如何为现有 Azure Red Hat OpenShift (ARO) 4.x 群集添加或更新 Red Hat 拉取机密。

如果是首次创建群集,可以在创建群集时添加拉取机密。 有关使用 Red Hat 拉取机密创建 ARO 群集的详细信息,请参阅创建 Azure Red Hat OpenShift 4 群集

准备阶段

本指南假定你有一个现有的 Azure Red Hat OpenShift 4 群集。 确保对群集具有管理员访问权限。

准备拉取机密

如果在创建 ARO 群集时未添加 Red Hat 拉取机密,系统会在群集上自动创建拉取机密。 但是此拉取机密未完整填充。

本部分逐步介绍如何使用 Red Hat 拉取机密中的其他值更新该拉取机密。

  1. 运行以下命令,提取 openshift-config 命名空间中名为 pull-secret 的机密,并将其保存到单独的文件中:

    oc get secrets pull-secret -n openshift-config -o template='{{index .data ".dockerconfigjson"}}' | base64 -d > pull-secret.json
    

    输出结果应类似于以下所示: (请注意,实际的机密值已删除。)

    {
        "auths": {
            "arosvc.azurecr.io": {
                "auth": "<my-aroscv.azurecr.io-secret>"
            }
        }
    }
    
  2. 转到 Red Hat OpenShift 群集管理员门户,然后选择“下载拉取机密”。 Red Hat 拉取机密将类似于以下所示。 (请注意,实际的机密值已删除。)

    {
        "auths": {
            "cloud.openshift.com": {
                "auth": "<my-crc-secret>",
                "email": "klamenzo@redhat.com"
            },
            "quay.io": {
                "auth": "<my-quayio-secret>",
                "email": "klamenzo@redhat.com"
            },
            "registry.connect.redhat.com": {
                "auth": "<my-registry.connect.redhat.com-secret>",
                "email": "klamenzo@redhat.com"
            },
            "registry.redhat.io": {
                "auth": "<my-registry.redhat.io-secret>",
                "email": "klamenzo@redhat.com"
            }
        }
    }
    
  3. 通过添加 Red Hat 拉取机密中的条目,编辑从群集获取的拉取机密文件。

    重要

    包含 Red Hat 拉取机密中的 cloud.openshift.com 条目会使群集开始向 Red Hat 发送遥测数据。 仅在要发送遥测数据时包含此部分。 否则请勿包含以下部分。

    {
            "cloud.openshift.com": {
                "auth": "<my-crc-secret>",
                "email": "klamenzo@redhat.com"
            }
    

    注意

    请勿删除或更改拉取机密中的 arosvc.azurecr.io 条目。 此部分是群集正常运行所必需的。

    "arosvc.azurecr.io": {
                "auth": "<my-aroscv.azurecr.io-secret>"
            }
    

    最终文件应类似于以下所示。 (请注意,实际的机密值已删除。)

    {
        "auths": {
            "cloud.openshift.com": {
                "auth": "<my-crc-secret>",
                "email": "klamenzo@redhat.com"
            },
            "quay.io": {
                "auth": "<my-quayio-secret>",
                "email": "klamenzo@redhat.com"
            },
            "registry.connect.redhat.com": {
                "auth": "<my-registry.connect.redhat.com-secret>",
                "email": "klamenzo@redhat.com"
            },
            "registry.redhat.io": {
                "auth": "<my-registry.redhat.io-secret>",
                "email": "klamenzo@redhat.com"
            },
            "arosvc.azurecr.io": {
                "auth": "<my-aroscv.azurecr.io-secret>"
            }
        }
    }
    
  4. 确保文件是有效的 JSON。 有很多方法可以验证 JSON。 下面的示例使用 jq:

    cat pull-secret.json | jq
    

    注意

    如果文件中有错误,会显示 parse error

将拉取机密添加到群集中

运行以下命令来更新拉取密钥。

注意

在 ARO 4.9 或更高版本中,运行此命令将导致群集节点在更新时逐个重启。 在 ARO 4.10 或更高版本中,不会触发重启。

oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=./pull-secret.json

验证拉取机密是否已到位

oc exec -n openshift-apiserver $(oc get pod -n openshift-apiserver -o jsonpath="{.items[0].metadata.name}") -- cat /var/lib/kubelet/config.json

设置机密后,即可启用经过 Red Hat 认证的操作员。

修改配置文件

修改下列对象以启用 Red Hat 操作员。

首先,修改“示例操作员”配置文件。 然后可以运行以下命令来编辑配置文件:

oc edit configs.samples.operator.openshift.io/cluster -o yaml

spec.managementState 的值从 Removed 更改为 Managed

以下 YAML 代码片段只显示经过编辑的 YAML 文件的相关部分:

apiVersion: samples.operator.openshift.io/v1
kind: Config
metadata:
  
  ...
  
spec:
  architectures:
  - x86_64
  managementState: Managed

然后,运行以下命令来编辑“操作员中心”配置文件:

oc edit operatorhub cluster -o yaml

对于要启用的任何源,请将 Spec.Sources.Disabled 值从 true 更改为 false

以下 YAML 代码片段只显示经过编辑的 YAML 文件的相关部分:

Name:         cluster

...
                 dd3310b9-e520-4a85-98e5-8b4779ee0f61
Spec:
  Sources:
    Disabled:  false
    Name:      certified-operators
    Disabled:  false
    Name:      redhat-operators

保存文件以应用所做的编辑。

验证机密是否有效

添加拉取机密并修改正确的配置文件后,群集可能会花几分钟来进行更新。 若要检查群集是否已更新,可运行以下命令来显示可用的“认证操作员”和“Red Hat 操作员”源:

$ oc get catalogsource -A
NAMESPACE               NAME                  DISPLAY               TYPE   PUBLISHER   AGE
openshift-marketplace   certified-operators   Certified Operators   grpc   Red Hat     10s
openshift-marketplace   community-operators   Community Operators   grpc   Red Hat     18h
openshift-marketplace   redhat-operators      Red Hat Operators     grpc   Red Hat     11s

如果未显示“认证操作员”和“Red Hat 操作员”,请等待几分钟,然后重试。

若要确保拉取机密已更新且正常运行,可打开 OperatorHub 并检查是否有经过 Red Hat 验证的操作员。 例如,检查 OpenShift 容器存储操作员是否可用,并查看是否具有安装权限。

后续步骤

若要详细了解 Red Hat 拉取机密,请参阅使用映像拉取机密

若要详细了解 Red Hat OpenShift 4,请参阅 Red Hat OpenShift 容器平台文档