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

创建 Azure Red Hat OpenShift 4 群集

Azure Red Hat OpenShift 是一项托管式 OpenShift 服务,可用于快速部署和管理群集。 本文介绍如何使用 Azure CLI 或 Azure 门户部署 Azure Red Hat OpenShift 群集。

开始之前

确保使用 Azure CLI 2.67.0 或更高版本。 使用 az --version 查找已安装的 Azure CLI 版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

Azure Red Hat OpenShift 至少需要 40 个核心才能创建和运行 OpenShift 群集。 新 Azure 订阅的默认 Azure 资源配额不满足此要求。 若要请求提高资源上限,请参阅标准配额:按 VM 系列提高上限中所述。

  • 例如,如果要查看最小的受支持虚拟机系列 SKU“标准 DSv3”的当前订阅配额,请:

    LOCATION=eastus
    az vm list-usage -l $LOCATION \
    --query "[?contains(name.value, 'standardDSv3Family')]" \
    -o table
    

验证你的权限

在本文中,你将创建一个资源组,其中包含该群集的虚拟网络。 为此,你必须直接在虚拟网络或包含该网络的资源组或订阅上具有参与者和用户访问管理员权限,或所有者权限。

还需要拥有足够的 Microsoft Entra 权限(可以是租户的成员用户,也可以是分配有角色应用程序管理员的来宾),以便工具代表你为群集创建应用程序和服务主体。 有关详细信息,请参阅《成员和来宾》以及《向具有 Microsoft Entra ID 的用户分配管理员和非管理员角色》。

注册资源提供程序

  1. 如果有多个 Azure 订阅,请指定相关订阅 ID:

    az account set --subscription <SUBSCRIPTION ID>
    
  2. 注册 Microsoft.RedHatOpenShift 资源提供程序:

    az provider register -n Microsoft.RedHatOpenShift --wait
    
  3. 注册 Microsoft.Compute 资源提供程序:

    az provider register -n Microsoft.Compute --wait
    
  4. 注册 Microsoft.Storage 资源提供程序:

    az provider register -n Microsoft.Storage --wait
    
  5. 注册 Microsoft.Authorization 资源提供程序:

    az provider register -n Microsoft.Authorization --wait
    

获取 Red Hat 拉取机密(可选)

注意

ARO 拉取机密不会改变 ARO 的 RH OpenShift 许可证的成本。

Red Hat 拉取机密使群集能够访问 Red Hat 容器注册表和 OperatorHub 中的其他内容(例如运算符)。 此步骤是可选的,但建议执行。 如果决定稍后添加拉取机密,请按照本指南操作。 即使拉取机密包含该字段,也会从你的机密中移除字段 cloud.openshift.com。 此字段会启用一个额外的监视功能,该功能会将数据发送到 RedHat,因此默认情况下已禁用。 若要启用此功能,请参阅 https://docs.openshift.com/container-platform/4.11/support/remote_health_monitoring/enabling-remote-health-reporting.html

  1. 导航到 Red Hat OpenShift 群集管理器门户并登录。

    你将需要使用企业电子邮件登录 Red Hat 帐户或创建新的 Red Hat 帐户,并接受条款和条件。

  2. 选择“下载拉取机密”,并下载要用于 ARO 群集的拉取机密。

    将已保存的 pull-secret.txt 文件保存在安全的位置。 如果需要创建包含 Red Hat 或认证合作伙伴的示例或运算符的群集,则该文件将用于每个群集创建。

    运行 az aro create 命令时,可以使用 --pull-secret @pull-secret.txt 参数引用拉取机密。 从存储 pull-secret.txt 文件的目录执行 az aro create。 否则,将 @pull-secret.txt 替换为 @/path/to/my/pull-secret.txt

    如果要复制拉取机密或在其他脚本中引用它,则应将拉取机密的格式设置为有效的 JSON 字符串。

为群集准备自定义域(可选)

运行 az aro create 命令时,可以使用 --domain foo.example.com 参数为群集指定自定义域。

注意

虽然通过 Azure CLI 创建群集时,添加域名是可选的,但通过门户添加群集时需要使用域名(或用作 OpenShift 控制台和 API 服务器的自动生成 DNS 名称的一部分的前缀)。 有关详细信息,请参阅快速入门:使用 Azure 门户部署 Azure Red Hat OpenShift 群集

如果为群集提供自定义域,请注意以下几点:

  • 创建群集后,必须在 DNS 服务器中为指定的 --domain 创建 2 个 DNS A 记录:

    • api - 指向 API 服务器 IP 地址
    • *.apps - 指向入口 IP 地址
    • 创建群集后,通过执行 az aro show -n -g --query '{api:apiserverProfile.ip, ingress:ingressProfiles[0].ip}' 命令检索这些值。
  • OpenShift 控制台将在 URL(如 https://console-openshift-console.apps.example.com)上可用,而在内置域 https://console-openshift-console.apps.<random>.<location>.aroapp.io 中不可用。

  • 默认情况下,OpenShift 对自定义域 *.apps.example.com 上创建的所有路由使用自签名证书。 如果在连接到群集后选择使用自定义 DNS,则需按照 OpenShift 文档为入口控制器配置自定义 CA,并为 API 服务器配置自定义 CA

创建包含两个空子网的虚拟网络

接下来,你将创建一个包含两个空子网的虚拟网络。 如果现有虚拟网络满足你的需求,则可以跳过此步骤。

有关网络和要求的信息,请参阅 Azure Red Hat Openshift 的网络

  1. 在将执行 az 命令的 shell 环境中设置以下变量。

    LOCATION=eastus                 # the location of your cluster
    RESOURCEGROUP=aro-rg            # the name of the resource group where you want to create your cluster
    CLUSTER=cluster                 # the name of your cluster
    
  2. 创建资源组。

    Azure 资源组是一个逻辑组,用于部署和管理 Azure 资源。 创建资源组时,系统会要求你指定一个位置。 此位置是资源组元数据的存储位置,如果你在创建资源期间未指定另一个区域,则它还是你的资源在 Azure 中的运行位置。 使用 az group create 命令创建资源组。

    注意

    Azure Red Hat OpenShift 并非在可以创建 Azure 资源组的所有区域中可用。 有关支持 Azure Red Hat OpenShift 的位置的信息,请参阅可用区域

    az group create \
      --name $RESOURCEGROUP \
      --location $LOCATION
    

    以下示例输出显示已成功创建资源组:

    {
      "id": "/subscriptions/<guid>/resourceGroups/aro-rg",
      "location": "eastus",
      "name": "aro-rg",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.Resources/resourceGroups"
    }
    
  3. 创建虚拟网络。

    运行 OpenShift 4 的 Azure Red Hat OpenShift 群集需要一个包含两个空子网(用于主节点和工作器节点)的虚拟网络。 可以为此创建新的虚拟网络,也可以使用现有虚拟网络。

    在之前创建的同一资源组中创建新的虚拟网络:

    az network vnet create \
       --resource-group $RESOURCEGROUP \
       --name aro-vnet \
       --address-prefixes 10.0.0.0/22
    

    以下示例输出显示已成功创建了虚拟网络:

    {
      "newVNet": {
        "addressSpace": {
          "addressPrefixes": [
            "10.0.0.0/22"
          ]
        },
        "dhcpOptions": {
          "dnsServers": []
        },
        "id": "/subscriptions/<guid>/resourceGroups/aro-rg/providers/Microsoft.Network/virtualNetworks/aro-vnet",
        "location": "eastus",
        "name": "aro-vnet",
        "provisioningState": "Succeeded",
        "resourceGroup": "aro-rg",
        "type": "Microsoft.Network/virtualNetworks"
      }
    }
    
  4. 为主节点添加一个空子网。

    az network vnet subnet create \
      --resource-group $RESOURCEGROUP \
      --vnet-name aro-vnet \
      --name master-subnet \
      --address-prefixes 10.0.0.0/23
    
  5. 为工作器节点添加一个空子网。

    az network vnet subnet create \
      --resource-group $RESOURCEGROUP \
      --vnet-name aro-vnet \
      --name worker-subnet \
      --address-prefixes 10.0.2.0/23
    

创建群集

运行以下命令以创建群集。 如果选择使用以下任一选项,请相应地修改命令:

  • (可选)可以传递 Red Hat 拉取机密,这会支持群集访问 Red Hat 容器注册表以及其他内容。 将 --pull-secret @pull-secret.txt 参数添加到命令中。
  • 或者,也可选择使用自定义域。 将 --domain foo.example.com 参数添加到命令中,将 foo.example.com 替换为你自己的自定义域。

注意

创建时可定义的最大工作器节点数为 50。 创建群集后,最多可以横向扩展到 250 个节点。

az aro create \
  --resource-group $RESOURCEGROUP \
  --name $CLUSTER \
  --vnet aro-vnet \
  --master-subnet master-subnet \
  --worker-subnet worker-subnet

执行 az aro create 命令之后,创建群集通常需要大约 45 分钟。

大规模 ARO 群集

如果要部署具有 100 多个工作器节点的 Azure Red Hat OpenShift 群集,请参阅“部署大型 Azure Red Hat OpenShift 群集

选择其他 ARO 版本

创建群集时,可以选择使用特定版本的 ARO。 首先,使用 CLI 查询可用的 ARO 版本:

az aro get-versions --location <region>

选择版本后,使用 --version 命令中的 az aro create 参数指定:

az aro create \
  --resource-group $RESOURCEGROUP \
  --name $CLUSTER \
  --vnet aro-vnet \
  --master-subnet master-subnet \
  --worker-subnet worker-subnet \
  --version <x.y.z>