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

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

本指南介绍了如何为现有的 Azure Red Hat OpenShift 4 群集添加或更新 Red Hat 拉取密钥。

对于新的群集部署,可以在创建群集时添加拉取密钥。 有关如何使用 Red Hat 拉取机密创建群集的详细信息,请参阅“获取 Red Hat 拉取机密”(可选)。

先决条件

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

准备拉取机密

在不添加 Red Hat 拉取机密的情况下创建群集时,群集上仍会自动创建拉取机密。 但是此拉取机密未完整填充。

本节概述如何使用来自您 Red Hat 拉取密钥的其他值来更新该拉取密钥。

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

    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": "violet@contoso.com"
        },
        "quay.io": {
          "auth": "<my-quayio-secret>",
          "email": "violet@contoso.com"
        },
        "registry.connect.redhat.com": {
          "auth": "<my-registry.connect.redhat.com-secret>",
          "email": "violet@contoso.com"
        },
        "registry.redhat.io": {
          "auth": "<my-registry.redhat.io-secret>",
          "email": "violet@contoso.com"
        }
      }
    }
    
  3. 通过添加 Red Hat 拉取机密中的条目,编辑从群集获取的拉取机密文件。

    重要

    如果您在 Red Hat 拉取密钥中包含 cloud.openshift.com 条目,您的群集会将遥测数据发送给 Red Hat。 仅在要发送遥测数据时包含此部分。 否则,请排除以下部分。

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

    谨慎

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

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

    最终文件应如以下示例所示,并删除了实际机密值。

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

    cat pull-secret.json | jq
    

    如果文件中存在错误,它将显示为 parse error.

将拉取机密添加到群集中

运行以下命令来更新拉取密钥。 在版本 4.9 或更高版本中,运行此命令会导致群集节点在更新时逐个重启。 在版本 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 操作员。

修改 Samples 运算符配置文件。 然后可以运行以下命令来编辑配置文件:

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 容器存储操作员是否可用,并查看是否具有安装权限。

后续步骤