11.3. 配置 Azure 项目


在安装 OpenShift Container Platform 之前,您必须配置 Azure 项目来托管它。

重要

所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误

11.3.1. Azure 帐户限值

OpenShift Container Platform 集群使用诸多 Microsoft Azure 组件,默认的 Azure 订阅和服务限值、配额和约束会影响您安装 OpenShift Container Platform 集群的能力。

重要

默认的限制因服务类别的不同(如 Free Trial 或 Pay-As-You-Go)以及系列的不同(如 Dv2 、F 或 G)而有所不同。例如,对于 Enterprise Agreement 订阅的默认限制是 350 个内核。

在 Azure 上安装默认集群前,请检查您的订阅类型的限制,如有必要,请提高帐户的配额限制。

下表总结了 Azure 组件,它们的限值会影响您安装和运行 OpenShift Container Platform 集群的能力。

组件默认所需的组件数默认 Azure 限值描述

vCPU

40

每个区域 20 个

默认集群需要 40 个 vCPU,因此您必须提高帐户限值。

默认情况下,每个集群创建以下实例:

  • 一台 Bootstrap 机器,在安装后删除
  • 三个 control plane 机器
  • 三个计算(compute)机器

由于 Bootstrap 机器使用 Standard_D4s_v3 机器(使用 4 个 vCPU),control plane 机器使用 Standard_D8s_v3 虚拟机(8 个 vCPU),并且 worker 机器使用 Standard_D4s_v3 虚拟机(4 个 vCPU),因此默认集群需要 40 个 vCPU。bootstrap 节点 VM(使用 4 个 vCPU)只在安装过程中使用。

若要部署更多 worker 节点、启用自动扩展、部署大型工作负载或使用不同的实例类型,您必须进一步提高帐户的 vCPU 限值,以确保集群可以部署您需要的机器。

OS Disk

7

 

每个集群机器必须至少有 100 GB 存储和 300 IOPS。虽然这些值是最低支持的值,但对于具有密集型工作负载的生产环境集群和集群,建议使用更快的存储。有关优化性能存储的更多信息,请参阅"扩展和性能"部分中的页面标题为"优化存储"。

VNet

1

每个区域 1000 个

每个默认集群都需要一个虚拟网络 (VNet),此网络包括两个子网。

网络接口

7

每个区域 65,536 个

每个默认集群都需要 7 个网络接口。如果您要创建更多机器或者您部署的工作负载要创建负载均衡器,则集群会使用更多的网络接口。

网络安全组

2

5000

每个集群为 VNet 中的每个子网创建网络安全组。默认集群为 control plane 和计算节点子网创建网络安全组:

controlplane

允许从任何位置通过端口 6443 访问 control plane 机器

node

允许从互联网通过端口 80 和 443 访问 worker 节点

网络负载均衡器

3

每个区域 1000 个

每个集群都会创建以下负载均衡器

default

用于在 worker 机器之间对端口 80 和 443 的请求进行负载均衡的公共 IP 地址

internal

用于在 control plane 机器之间对端口 6443 和 22623 的请求进行负载均衡的专用 IP 地址

external

用于在 control plane 机器之间对端口 6443 的请求进行负载均衡的公共 IP 地址

如果您的应用程序创建了更多的 Kubernetes LoadBalancer 服务对象,您的集群会使用更多的负载均衡器。

公共 IP 地址

3

 

两个公共负载均衡器各自使用一个公共 IP 地址。bootstrap 机器也使用一个公共 IP 地址,以便您可以在安装期间通过 SSH 连接到该机器来进行故障排除。bootstrap 节点的 IP 地址仅在安装过程中使用。

专用 IP 地址

7

 

内部负载均衡器、三台 control plane 机器中的每一台以及三台 worker 机器中的每一台各自使用一个专用 IP 地址。

Spot VM vCPU(可选)

0

如果配置 spot 虚拟机,您的集群必须为每个计算节点有两个 spot VM vCPU。

每个区域 20 个

这是可选组件。要使用 spot 虚拟机,您必须将 Azure 默认限值增加到集群中至少有两倍的计算节点数量。

注意

不建议将 spot 虚拟机用于 control plane 节点。

其他资源

11.3.2. 在 Azure 中配置公共 DNS 区

要安装 OpenShift Container Platform,您使用的 Microsoft Azure 帐户必须在帐户中具有一个专用的公共托管 DNS 区。此区域必须对域具有权威。此服务为集群外部连接提供集群 DNS 解析和名称查询。

流程

  1. 标识您的域或子域,以及注册商(registrar)。您可以转移现有的域和注册商,或通过 Azure 或其他来源获取新的域和注册商。

    注意

    如需通过 Azure 购买域的更多信息,请参阅 Azure 文档中的购买 Azure 应用服务的自定义域名

  2. 如果您使用现有的域和注册商,请将其 DNS 迁移到 Azure。请参阅 Azure 文档中的将活动 DNS 名称迁移到 Azure 应用服务
  3. 为您的域配置 DNS。按照 Azure 文档中教程:在 Azure DNS 中托管域部分里的步骤,为您的域或子域创建一个公共托管区,提取新的权威名称服务器,并更新您的域使用的名称服务器的注册商记录。

    使用合适的根域(如 openshiftcorp.com)或子域(如 clusters.openshiftcorp.com)。

  4. 如果您使用子域,请按照您公司的流程将其委派记录添加到父域。

您可以通过访问此 示例来创建 DNS 区域来查看 Azure 的 DNS 解决方案

11.3.3. 提高 Azure 帐户限值

要提高帐户限值,请在 Azure 门户上提交支持请求。

注意

每一支持请求只能提高一种类型的配额。

流程

  1. 从 Azure 门户,点击左下角的 Help + suport
  2. 点击 New support request,然后选择所需的值:

    1. Issue type 列表中,选择 Service and subscription limits (quotas)
    2. Subscription 列表中,选择要修改的订阅。
    3. Quota type 列表中,选择要提高的配额。例如,选择 Compute-VM (cores-vCPUs) subscription limit increases 以增加 vCPU 的数量,这是安装集群所必须的。
    4. 点击 Next: Solutions
  3. Problem Details 页面中,提供您要提高配额所需的信息:

    1. 点击 Provide details,然后在 Quota details 窗口中提供所需的详情。
    2. 在 SUPPORT METHOD 和 CONTACT INFO 部分中,提供问题严重性和您的联系详情。
  4. 点击 Next: Review + create,然后点击 Create

11.3.4. 证书签名请求管理

在使用您置备的基础架构时,集群只能有限地访问自动机器管理,因此您必须提供一种在安装后批准集群证书签名请求 (CSR) 的机制。kube-controller-manager 只能批准 kubelet 客户端 CSR。machine-approver 无法保证使用 kubelet 凭证请求的提供证书的有效性,因为它不能确认是正确的机器发出了该请求。您必须决定并实施一种方法,以验证 kubelet 提供证书请求的有效性并进行批准。

11.3.5. 记录下订阅和租户 ID

安装程序需要与 Azure 帐户关联的订阅和租户 ID。您可以使用 Azure CLI 收集此信息。

先决条件

流程

  1. 运行以下命令登录到 Azure CLI:

    $ az login
  2. 确保您使用正确的订阅:

    1. 运行以下命令,查看可用订阅列表:

      $ az account list --refresh

      输出示例

      [
        {
          "cloudName": "AzureCloud",
          "id": "8xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "isDefault": true,
          "name": "Subscription Name 1",
          "state": "Enabled",
          "tenantId": "6xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "user": {
            "name": "you@example.com",
            "type": "user"
          }
        },
        {
          "cloudName": "AzureCloud",
          "id": "9xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "isDefault": false,
          "name": "Subscription Name 2",
          "state": "Enabled",
          "tenantId": "7xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "user": {
            "name": "you2@example.com",
            "type": "user"
          }
        }
      ]

    2. 运行以下命令,查看活跃帐户的详情,并确认这是您要使用的订阅:

      $ az account show

      输出示例

      {
        "environmentName": "AzureCloud",
        "id": "8xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "isDefault": true,
        "name": "Subscription Name 1",
        "state": "Enabled",
        "tenantId": "6xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "user": {
          "name": "you@example.com",
          "type": "user"
        }
      }

  3. 如果您没有使用正确的订阅:

    1. 运行以下命令来更改活跃订阅:

      $ az account set -s <subscription_id>
    2. 运行以下命令验证您是否正在使用所需的订阅:

      $ az account show

      输出示例

      {
        "environmentName": "AzureCloud",
        "id": "9xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "isDefault": true,
        "name": "Subscription Name 2",
        "state": "Enabled",
        "tenantId": "7xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "user": {
          "name": "you2@example.com",
          "type": "user"
        }
      }

  4. 记录输出中的 idtenantId 参数值。您需要这些值来安装 OpenShift Container Platform 集群。

11.3.6. 支持访问 Azure 资源的身份

OpenShift Container Platform 集群需要一个 Azure 身份来创建和管理 Azure 资源。因此,您需要以下身份之一来完成安装:

  • 服务主体
  • 系统分配的管理身份
  • 用户分配的受管身份

11.3.7. 用户置备的基础架构所需的 Azure 权限

安装程序需要访问具有所需权限的 Azure 服务主体或受管身份,以部署集群并维护其每日操作。这些权限必须授予与身份关联的 Azure 订阅。

以下选项可供您使用:

  • 您可以为身份分配 ContributorUser Access Administrator 角色。分配这些角色是授予所有所需权限的最快速方法。

    有关分配角色的更多信息,请参阅 Azure 文档,使用 Azure 门户管理 Azure 资源的访问

  • 如果机构的安全策略需要更严格的权限集,您可以创建具有所需权限的自定义角色

在 Microsoft Azure 上创建 OpenShift Container Platform 集群需要以下权限。

例 11.1. 创建授权资源所需的权限

  • Microsoft.Authorization/policies/audit/action
  • Microsoft.Authorization/policies/auditIfNotExists/action
  • Microsoft.Authorization/roleAssignments/read
  • Microsoft.Authorization/roleAssignments/write

例 11.2. 创建计算资源所需的权限

  • Microsoft.Compute/images/read
  • Microsoft.Compute/images/write
  • Microsoft.Compute/images/delete
  • Microsoft.Compute/availabilitySets/read
  • Microsoft.Compute/disks/beginGetAccess/action
  • Microsoft.Compute/disks/delete
  • Microsoft.Compute/disks/read
  • Microsoft.Compute/disks/write
  • Microsoft.Compute/galleries/images/read
  • Microsoft.Compute/galleries/images/versions/read
  • Microsoft.Compute/galleries/images/versions/write
  • Microsoft.Compute/galleries/images/write
  • Microsoft.Compute/galleries/read
  • Microsoft.Compute/galleries/write
  • Microsoft.Compute/snapshots/read
  • Microsoft.Compute/snapshots/write
  • Microsoft.Compute/snapshots/delete
  • Microsoft.Compute/virtualMachines/delete
  • Microsoft.Compute/virtualMachines/powerOff/action
  • Microsoft.Compute/virtualMachines/read
  • Microsoft.Compute/virtualMachines/write
  • Microsoft.Compute/virtualMachines/deallocate/action

例 11.3. 创建身份管理资源所需的权限

  • Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
  • Microsoft.ManagedIdentity/userAssignedIdentities/read
  • Microsoft.ManagedIdentity/userAssignedIdentities/write

例 11.4. 创建网络资源所需的权限

  • Microsoft.Network/dnsZones/A/write
  • Microsoft.Network/dnsZones/CNAME/write
  • Microsoft.Network/dnszones/CNAME/read
  • Microsoft.Network/dnszones/read
  • Microsoft.Network/loadBalancers/backendAddressPools/join/action
  • Microsoft.Network/loadBalancers/backendAddressPools/read
  • Microsoft.Network/loadBalancers/backendAddressPools/write
  • Microsoft.Network/loadBalancers/read
  • Microsoft.Network/loadBalancers/write
  • Microsoft.Network/networkInterfaces/delete
  • Microsoft.Network/networkInterfaces/join/action
  • Microsoft.Network/networkInterfaces/read
  • Microsoft.Network/networkInterfaces/write
  • Microsoft.Network/networkSecurityGroups/join/action
  • Microsoft.Network/networkSecurityGroups/read
  • Microsoft.Network/networkSecurityGroups/securityRules/delete
  • Microsoft.Network/networkSecurityGroups/securityRules/read
  • Microsoft.Network/networkSecurityGroups/securityRules/write
  • Microsoft.Network/networkSecurityGroups/write
  • Microsoft.Network/privateDnsZones/A/read
  • Microsoft.Network/privateDnsZones/A/write
  • Microsoft.Network/privateDnsZones/A/delete
  • Microsoft.Network/privateDnsZones/SOA/read
  • Microsoft.Network/privateDnsZones/read
  • Microsoft.Network/privateDnsZones/virtualNetworkLinks/read
  • Microsoft.Network/privateDnsZones/virtualNetworkLinks/write
  • Microsoft.Network/privateDnsZones/write
  • Microsoft.Network/publicIPAddresses/delete
  • Microsoft.Network/publicIPAddresses/join/action
  • Microsoft.Network/publicIPAddresses/read
  • Microsoft.Network/publicIPAddresses/write
  • Microsoft.Network/virtualNetworks/join/action
  • Microsoft.Network/virtualNetworks/read
  • Microsoft.Network/virtualNetworks/subnets/join/action
  • Microsoft.Network/virtualNetworks/subnets/read
  • Microsoft.Network/virtualNetworks/subnets/write
  • Microsoft.Network/virtualNetworks/write

例 11.5. 检查资源健康状况所需的权限

  • Microsoft.Resourcehealth/healthevent/Activated/action
  • Microsoft.Resourcehealth/healthevent/InProgress/action
  • Microsoft.Resourcehealth/healthevent/Pending/action
  • Microsoft.Resourcehealth/healthevent/Resolved/action
  • Microsoft.Resourcehealth/healthevent/Updated/action

例 11.6. 创建资源组所需的权限

  • Microsoft.Resources/subscriptions/resourceGroups/read
  • Microsoft.Resources/subscriptions/resourcegroups/write

例 11.7. 创建资源标签所需的权限

  • Microsoft.Resources/tags/write

例 11.8. 创建存储资源所需的权限

  • Microsoft.Storage/storageAccounts/blobServices/read
  • Microsoft.Storage/storageAccounts/blobServices/containers/write
  • Microsoft.Storage/storageAccounts/fileServices/read
  • Microsoft.Storage/storageAccounts/fileServices/shares/read
  • Microsoft.Storage/storageAccounts/fileServices/shares/write
  • Microsoft.Storage/storageAccounts/fileServices/shares/delete
  • Microsoft.Storage/storageAccounts/listKeys/action
  • Microsoft.Storage/storageAccounts/read
  • Microsoft.Storage/storageAccounts/write

例 11.9. 创建部署所需的权限

  • Microsoft.Resources/deployments/read
  • Microsoft.Resources/deployments/write
  • Microsoft.Resources/deployments/validate/action
  • Microsoft.Resources/deployments/operationstatuses/read

例 11.10. 创建计算资源的可选权限

  • Microsoft.Compute/availabilitySets/delete
  • Microsoft.Compute/availabilitySets/write

例 11.11. 创建 marketplace 虚拟机资源的可选权限

  • Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read
  • Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write

例 11.12. 启用用户管理加密的可选权限

  • Microsoft.Compute/diskEncryptionSets/read
  • Microsoft.Compute/diskEncryptionSets/write
  • Microsoft.Compute/diskEncryptionSets/delete
  • Microsoft.KeyVault/vaults/read
  • Microsoft.KeyVault/vaults/write
  • Microsoft.KeyVault/vaults/delete
  • Microsoft.KeyVault/vaults/deploy/action
  • Microsoft.KeyVault/vaults/keys/read
  • Microsoft.KeyVault/vaults/keys/write
  • Microsoft.Features/providers/features/register/action

删除 Microsoft Azure 上的 OpenShift Container Platform 集群需要以下权限。

例 11.13. 删除授权资源所需的权限

  • Microsoft.Authorization/roleAssignments/delete

例 11.14. 删除计算资源所需的权限

  • Microsoft.Compute/disks/delete
  • Microsoft.Compute/galleries/delete
  • Microsoft.Compute/galleries/images/delete
  • Microsoft.Compute/galleries/images/versions/delete
  • Microsoft.Compute/virtualMachines/delete
  • Microsoft.Compute/images/delete

例 11.15. 删除身份管理资源所需的权限

  • Microsoft.ManagedIdentity/userAssignedIdentities/delete

例 11.16. 删除网络资源所需的权限

  • Microsoft.Network/dnszones/read
  • Microsoft.Network/dnsZones/A/read
  • Microsoft.Network/dnsZones/A/delete
  • Microsoft.Network/dnsZones/CNAME/read
  • Microsoft.Network/dnsZones/CNAME/delete
  • Microsoft.Network/loadBalancers/delete
  • Microsoft.Network/networkInterfaces/delete
  • Microsoft.Network/networkSecurityGroups/delete
  • Microsoft.Network/privateDnsZones/read
  • Microsoft.Network/privateDnsZones/A/read
  • Microsoft.Network/privateDnsZones/delete
  • Microsoft.Network/privateDnsZones/virtualNetworkLinks/delete
  • Microsoft.Network/publicIPAddresses/delete
  • Microsoft.Network/virtualNetworks/delete

例 11.17. 检查资源健康状况所需的权限

  • Microsoft.Resourcehealth/healthevent/Activated/action
  • Microsoft.Resourcehealth/healthevent/Resolved/action
  • Microsoft.Resourcehealth/healthevent/Updated/action

例 11.18. 删除资源组所需的权限

  • Microsoft.Resources/subscriptions/resourcegroups/delete

例 11.19. 删除存储资源所需的权限

  • Microsoft.Storage/storageAccounts/delete
  • Microsoft.Storage/storageAccounts/listKeys/action
注意

要在 Azure 上安装 OpenShift Container Platform,您必须将资源组创建的权限范围到您的订阅。创建资源组后,您可以将剩余权限的范围限定到所创建的资源组。如果其他资源组中存在公共 DNS 区域,则必须始终将网络 DNS 区域相关权限应用到您的订阅。

在删除 OpenShift Container Platform 集群时,您可以将订阅的所有权限限定到您的订阅。

11.3.8. 使用 Azure 管理的身份

安装程序需要一个 Azure 身份来完成安装。您可以使用系统分配或用户分配的受管身份。

如果无法使用受管身份,您可以使用服务主体。

流程

  1. 如果您使用系统分配的受管身份,请在您要从其运行安装程序的虚拟机上启用它。
  2. 如果您使用用户分配的受管身份:

    1. 将它分配给您要从中运行安装程序的虚拟机。
    2. 记录其客户端 ID。安装集群时需要这个值。

      有关查看用户分配受管身份的详情的更多信息,请参阅 Microsoft Azure 文档来列出用户分配的管理身份

  3. 验证是否为受管身份分配了所需的权限。

11.3.9. 创建服务主体

安装程序需要一个 Azure 身份来完成安装。您可以使用服务主体。

如果无法使用服务主体,您可以使用受管身份。

先决条件

  • 已安装或更新 Azure CLI
  • 您有一个 Azure 订阅 ID。
  • 如果您没有将 ContributorUser Administrator Access 角色分配给服务主体,您已创建了具有所需 Azure 权限的自定义角色。

流程

  1. 运行以下命令,为您的帐户创建服务主体:

    $ az ad sp create-for-rbac --role <role_name> \1
         --name <service_principal> \2
         --scopes /subscriptions/<subscription_id> 3
    1
    定义角色名称。您可以使用 Contributor 角色,或者指定包含所需权限的自定义角色。
    2
    定义服务主体名称。
    3
    指定订阅 ID。

    输出示例

    Creating 'Contributor' role assignment under scope '/subscriptions/<subscription_id>'
    The output includes credentials that you must protect. Be sure that you do not
    include these credentials in your code or check the credentials into your source
    control. For more information, see https://aka.ms/azadsp-cli
    {
      "appId": "axxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "displayName": <service_principal>",
      "password": "00000000-0000-0000-0000-000000000000",
      "tenantId": "8xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }

  2. 记录输出中的 appIdpassword 参数的值。安装集群时需要这些值。
  3. 如果您将 Contributor 角色应用到服务主体,请运行以下命令来分配 User Administrator Access 角色:

    $ az role assignment create --role "User Access Administrator" \
      --assignee-object-id $(az ad sp show --id <appId> --query id -o tsv) 1
      --scope /subscriptions/<subscription_id> 2
    1
    为您的服务主体指定 appId 参数值。
    2
    指定订阅 ID。

其他资源

11.3.10. 支持的 Azure 区域

安装程序会根据您的订阅动态地生成可用的 Microsoft Azure 区域列表。

支持的 Azure 公共区域
  • australiacentral (Australia Central)
  • australiaeast (Australia East)
  • australiasoutheast (Australia South East)
  • brazilsouth (Brazil South)
  • canadacentral (Canada Central)
  • canadaeast (Canada East)
  • centralindia (Central India)
  • centralus (Central US)
  • eastasia (East Asia)
  • eastus (East US)
  • eastus2 (East US 2)
  • francecentral (France Central)
  • germanywestcentral (Germany West Central)
  • israelcentral (Israel Central)
  • italynorth (Italy North)
  • japaneast (Japan East)
  • japanwest (Japan West)
  • koreacentral (Korea Central)
  • koreasouth (Korea South)
  • mexicocentral (Mexico Central)
  • northcentralus (North Central US)
  • northeurope (North Europe)
  • norwayeast (Norway East)
  • polandcentral (Poland Central)
  • qatarcentral (Qatar Central)
  • southafricanorth (South Africa North)
  • southcentralus (South Central US)
  • southeastasia (Southeast Asia)
  • southindia (South India)
  • spaincentral (Spain Central)
  • swedencentral (Sweden Central)
  • switzerlandnorth (Switzerland North)
  • uaenorth (UAE North)
  • uksouth (UK South)
  • ukwest (UK West)
  • westcentralus (West Central US)
  • westeurope (West Europe)
  • westindia (West India)
  • westus (West US)
  • westus2 (West US 2)
  • westus3 (West US 3)
支持的 Azure 政府区域

OpenShift Container Platform 4.6 添加了对以下 Microsoft Azure Government(MAG)区域的支持:

  • usgovtexas (US Gov Texas)
  • usgovvirginia (US Gov Virginia)

您可以参阅 Azure 文档来了解与所有可用 MAG 区域的信息。其他 MAG 区域应该可以与 OpenShift Container Platform 一起工作,但并没有经过测试。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.