×

使用 Azure 市场产品

使用 Azure 市场产品允许您部署 OpenShift Container Platform 集群,该集群通过 Azure 按使用付费(按小时、按核心)计费,同时仍直接由 Red Hat 支持。

要使用 Azure 市场产品部署 OpenShift Container Platform 集群,您必须首先获取 Azure 市场映像。安装程序使用此映像部署工作节点或控制平面节点。获取映像时,请考虑以下几点

  • 虽然映像相同,但 Azure 市场发布者因地区而异。如果您位于北美,请指定redhat作为发布者。如果您位于 EMEA,请指定redhat-limited作为发布者。

  • 此产品包含rh-ocp-worker SKU 和rh-ocp-worker-gen1 SKU。rh-ocp-worker SKU 代表 Hyper-V 第 2 代 VM 映像。OpenShift Container Platform 中使用的默认实例类型与第 2 代兼容。如果您计划使用仅与第 1 代兼容的实例类型,请使用与rh-ocp-worker-gen1 SKU 关联的映像。rh-ocp-worker-gen1 SKU 代表 Hyper-V 第 1 代 VM 映像。

在具有 64 位 ARM 实例的集群上不支持使用 Azure 市场安装映像。

先决条件
  • 您已安装 Azure CLI 客户端(az)

  • 您的 Azure 帐户有权使用此产品,并且您已使用 Azure CLI 客户端登录到此帐户。

步骤
  1. 通过运行以下命令之一来显示所有可用的 OpenShift Container Platform 映像

    • 北美

      $  az vm image list --all --offer rh-ocp-worker --publisher redhat -o table
      示例输出
      Offer          Publisher       Sku                 Urn                                                             Version
      -------------  --------------  ------------------  --------------------------------------------------------------  -----------------
      rh-ocp-worker  RedHat          rh-ocp-worker       RedHat:rh-ocp-worker:rh-ocp-worker:4.15.2024072409              4.15.2024072409
      rh-ocp-worker  RedHat          rh-ocp-worker-gen1  RedHat:rh-ocp-worker:rh-ocp-worker-gen1:4.15.2024072409         4.15.2024072409
    • EMEA

      $  az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o table
      示例输出
      Offer          Publisher       Sku                 Urn                                                                     Version
      -------------  --------------  ------------------  --------------------------------------------------------------          -----------------
      rh-ocp-worker  redhat-limited  rh-ocp-worker       redhat-limited:rh-ocp-worker:rh-ocp-worker:4.15.2024072409              4.15.2024072409
      rh-ocp-worker  redhat-limited  rh-ocp-worker-gen1  redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:4.15.2024072409         4.15.2024072409

    使用可用于计算和控制平面节点的最新映像。如果需要,您的 VM 将在安装过程中自动升级。

  2. 通过运行以下命令之一来检查您的产品的映像

    • 北美

      $ az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
    • EMEA

      $ az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
  3. 通过运行以下命令之一来查看产品的条款

    • 北美

      $ az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
    • EMEA

      $ az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
  4. 通过运行以下命令之一来接受产品的条款

    • 北美

      $ az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
    • EMEA

      $ az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
  5. 记录您的产品的映像详细信息。您必须使用publisherofferskuversion的值更新install-config.yaml文件中的compute部分,然后才能部署集群。您也可以更新controlPlane部分以使用指定的映像详细信息部署控制平面机器,或者更新defaultMachinePlatform部分以使用指定的映像详细信息部署控制平面和计算机器。请使用最新的可用映像用于控制平面和计算节点。

包含 Azure 市场计算节点的install-config.yaml文件示例
apiVersion: v1
baseDomain: example.com
compute:
- hyperthreading: Enabled
  name: worker
  platform:
    azure:
      type: Standard_D4s_v5
      osImage:
        publisher: redhat
        offer: rh-ocp-worker
        sku: rh-ocp-worker
        version: 413.92.2023101700
  replicas: 3

创建安装配置文件

您可以自定义您在 Microsoft Azure 上安装的 OpenShift Container Platform 集群。

先决条件
  • 您拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。

  • 您拥有 Azure 订阅 ID 和租户 ID。

  • 如果您使用服务主体安装集群,则您拥有其应用程序 ID 和密码。

  • 如果您使用系统分配的托管标识安装集群,则您已在将运行安装程序的虚拟机上启用它。

  • 如果您使用用户分配的托管标识安装集群,则您已满足以下先决条件

    • 您拥有其客户端 ID。

    • 您已将其分配给将运行安装程序的虚拟机。

步骤
  1. 可选:如果您之前在此计算机上运行过安装程序,并且想要使用替代服务主体或托管标识,请转到~/.azure/目录并删除osServicePrincipal.json配置文件。

    删除此文件可防止安装程序自动重用先前安装的订阅和身份验证值。

  2. 创建install-config.yaml文件。

    1. 更改到包含安装程序的目录并运行以下命令

      $ ./openshift-install create install-config --dir <installation_directory> (1)
      1 对于<installation_directory>,请指定安装程序创建的文件存储目录名称。

      指定目录时

      • 请验证该目录具有执行权限。此权限是运行安装目录下 Terraform 二进制文件的必要条件。

      • 请使用空目录。某些安装资源(例如引导 X.509 证书)的有效期较短,因此您不能重复使用安装目录。如果您想重复使用另一个集群安装中的单个文件,可以将它们复制到您的目录中。但是,安装资源的文件名可能会在不同版本之间发生变化。从较早版本的 OpenShift Container Platform 复制安装文件时,请务必小心。

    2. 在提示符下,提供您云的配置详细信息

      1. 可选:选择一个 SSH 密钥来访问您的集群机器。

        对于您想要执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定您的ssh-agent进程使用的 SSH 密钥。

      2. 选择**azure**作为目标平台。

        如果安装程序无法从之前的安装中找到osServicePrincipal.json配置文件,系统会提示您输入 Azure 订阅和身份验证值。

      3. 输入以下 Azure 参数值以用于您的订阅

        • azure subscription id:输入要用于集群的订阅 ID。

        • azure tenant id:输入租户 ID。

      4. 根据您用于部署集群的 Azure 身份,在提示输入azure service principal client id时执行以下操作之一

        • 如果您使用的是服务主体,请输入其应用程序 ID。

        • 如果您使用的是系统分配的托管身份,请将此值留空。

        • 如果您使用的是用户分配的托管身份,请指定其客户端 ID。

      5. 根据您用于部署集群的 Azure 身份,在提示输入azure service principal client secret时执行以下操作之一

        • 如果您使用的是服务主体,请输入其密码。

        • 如果您使用的是系统分配的托管身份,请将此值留空。

        • 如果您使用的是用户分配的托管身份,请将此值留空。

      6. 选择要将集群部署到的区域。

      7. 选择要将集群部署到的基础域。基础域对应于您为集群创建的 Azure DNS 区域。

      8. 输入集群的描述性名称。

        所有通过公共端点可用的 Azure 资源都受到资源名称限制,您不能创建使用某些术语的资源。有关 Azure 限制的术语列表,请参阅 Azure 文档中的解决保留的资源名称错误

  3. 修改install-config.yaml文件。您可以在“安装配置参数”部分找到有关可用参数的更多信息。

    如果您正在安装三节点集群,请确保将compute.replicas参数设置为0。这确保了集群的控制平面是可调度的。有关更多信息,请参阅“在 Azure 上安装三节点集群”。

  4. 备份install-config.yaml文件,以便您可以使用它来安装多个集群。

    install-config.yaml文件在安装过程中会被使用。如果您想重复使用该文件,则现在必须对其进行备份。

如果之前未检测到,安装程序会创建一个osServicePrincipal.json配置文件,并将此文件存储在您计算机上的~/.azure/目录中。这确保了安装程序在目标平台上创建 OpenShift Container Platform 集群时可以加载配置文件。

集群安装的最低资源要求

每台集群机器必须满足以下最低要求

表 1. 最低资源要求
机器 操作系统 vCPU [1] 虚拟内存 存储 每秒输入/输出次数 (IOPS)[2]

引导程序

RHCOS

4

16 GB

100 GB

300

控制平面

RHCOS

4

16 GB

100 GB

300

计算

RHCOS、RHEL 8.6 及更高版本 [3]

2

8 GB

100 GB

300

  1. 当未启用同时多线程 (SMT) 或超线程时,一个 vCPU 等于一个物理核心。启用后,请使用以下公式计算相应的比率:(每个核心的线程数 × 核心数) × 插槽数 = vCPU。

  2. OpenShift Container Platform 和 Kubernetes 对磁盘性能很敏感,建议使用更快的存储,特别是对于需要 10 毫秒 p99 fsync 时长的控制平面节点上的 etcd。请注意,在许多云平台上,存储大小和 IOPS 是成比例缩放的,因此您可能需要过度分配存储卷以获得足够的性能。

  3. 与所有用户配置的安装一样,如果您选择在集群中使用 RHEL 计算机器,则您需要负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁以及完成所有其他必需的任务。RHEL 7 计算机器的使用已弃用,并在 OpenShift Container Platform 4.10 及更高版本中已移除。

从 OpenShift Container Platform 4.13 版本开始,RHCOS 基于 RHEL 9.2 版本,更新了微架构要求。以下列表包含每个架构所需的最低指令集架构 (ISA):

  • x86-64 架构需要 x86-64-v2 ISA

  • ARM64 架构需要 ARMv8.0-A ISA

  • IBM Power 架构需要 Power 9 ISA

  • s390x 架构需要 z14 ISA

有关更多信息,请参阅RHEL 架构

您必须使用将premiumIO参数设置为true的 Azure 虚拟机。

如果平台的实例类型满足集群机器的最低要求,则支持在 OpenShift Container Platform 中使用它。

其他资源

Azure 的已测试实例类型

以下 Microsoft Azure 实例类型已通过 OpenShift Container Platform 测试。

基于 64 位 x86 架构的机器类型
  • standardBasv2Family

  • standardBSFamily

  • standardBsv2Family

  • standardDADSv5Family

  • standardDASv4Family

  • standardDASv5Family

  • standardDCACCV5Family

  • standardDCADCCV5Family

  • standardDCADSv5Family

  • standardDCASv5Family

  • standardDCSv3Family

  • standardDCSv2Family

  • standardDDCSv3Family

  • standardDDSv4Family

  • standardDDSv5Family

  • standardDLDSv5Family

  • standardDLSv5Family

  • standardDSFamily

  • standardDSv2Family

  • standardDSv2PromoFamily

  • standardDSv3Family

  • standardDSv4Family

  • standardDSv5Family

  • standardEADSv5Family

  • standardEASv4Family

  • standardEASv5Family

  • standardEBDSv5Family

  • standardEBSv5Family

  • standardECACCV5Family

  • standardECADCCV5Family

  • standardECADSv5Family

  • standardECASv5Family

  • standardEDSv4Family

  • standardEDSv5Family

  • standardEIADSv5Family

  • standardEIASv4Family

  • standardEIASv5Family

  • standardEIBDSv5Family

  • standardEIBSv5Family

  • standardEIDSv5Family

  • standardEISv3Family

  • standardEISv5Family

  • standardESv3Family

  • standardESv4Family

  • standardESv5Family

  • standardFXMDVSFamily

  • standardFSFamily

  • standardFSv2Family

  • standardGSFamily

  • standardHBrsv2Family

  • standardHBSFamily

  • standardHBv4Family

  • standardHCSFamily

  • standardHXFamily

  • standardLASv3Family

  • standardLSFamily

  • standardLSv2Family

  • standardLSv3Family

  • standardMDSHighMemoryv3Family

  • standardMDSMediumMemoryv2Family

  • standardMDSMediumMemoryv3Family

  • standardMIDSHighMemoryv3Family

  • standardMIDSMediumMemoryv2Family

  • standardMISHighMemoryv3Family

  • standardMISMediumMemoryv2Family

  • standardMSFamily

  • standardMSHighMemoryv3Family

  • standardMSMediumMemoryv2Family

  • standardMSMediumMemoryv3Family

  • StandardNCADSA100v4Family

  • Standard NCASv3_T4 Family

  • standardNCSv3Family

  • standardNDSv2Family

  • StandardNGADSV620v1Family

  • standardNPSFamily

  • StandardNVADSA10v5Family

  • standardNVSv3Family

  • standardXEISv4Family

在64位ARM架构上经过测试的Azure实例类型

以下Microsoft Azure ARM64实例类型已通过OpenShift Container Platform测试。

基于64位ARM架构的机器类型
  • standardBpsv2Family

  • standardDPSv5Family

  • standardDPDSv5Family

  • standardDPLDSv5Family

  • standardDPLSv5Family

  • standardEPSv5Family

  • standardEPDSv5Family

启用Azure VM的可信启动

在Azure上安装集群时,您可以启用两个可信启动功能:安全启动虚拟化可信平台模块

有关支持可信启动功能的虚拟机大小的更多信息,请参阅虚拟机大小

可信启动仅为技术预览功能。技术预览功能不受Red Hat生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关Red Hat技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

先决条件
  • 您已创建install-config.yaml文件。

步骤
  • 在部署集群之前,请编辑install-config.yaml文件。

    • 仅在控制平面启用可信启动,请添加以下部分

      controlPlane:
        platform:
          azure:
            settings:
              securityType: TrustedLaunch
              trustedLaunch:
                uefiSettings:
                  secureBoot: Enabled
                  virtualizedTrustedPlatformModule: Enabled
    • 仅在计算节点启用可信启动,请添加以下部分

      compute:
        platform:
          azure:
            settings:
              securityType: TrustedLaunch
              trustedLaunch:
                uefiSettings:
                  secureBoot: Enabled
                  virtualizedTrustedPlatformModule: Enabled
    • 在所有节点上启用可信启动,请添加以下部分

      platform:
        azure:
          settings:
            securityType: TrustedLaunch
            trustedLaunch:
              uefiSettings:
                secureBoot: Enabled
                virtualizedTrustedPlatformModule: Enabled

启用机密VM

安装集群时,您可以启用机密VM。您可以为计算节点、控制平面节点或所有节点启用机密VM。

使用机密VM仅为技术预览功能。技术预览功能不受Red Hat生产服务级别协议 (SLA) 支持,并且可能功能不完整。Red Hat不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关Red Hat技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围

您可以将机密VM与以下VM大小一起使用

  • DCasv5系列

  • DCadsv5系列

  • ECasv5系列

  • ECadsv5系列

目前在64位ARM架构上不支持机密VM。

先决条件
  • 您已创建install-config.yaml文件。

步骤
  • 在部署集群之前,请编辑install-config.yaml文件。

    • 仅在控制平面启用机密VM,请添加以下部分

      controlPlane:
        platform:
          azure:
            settings:
              securityType: ConfidentialVM
              confidentialVM:
                uefiSettings:
                  secureBoot: Enabled
                  virtualizedTrustedPlatformModule: Enabled
            osDisk:
              securityProfile:
                securityEncryptionType: VMGuestStateOnly
    • 仅在计算节点启用机密VM,请添加以下部分

      compute:
        platform:
          azure:
            settings:
              securityType: ConfidentialVM
              confidentialVM:
                uefiSettings:
                  secureBoot: Enabled
                  virtualizedTrustedPlatformModule: Enabled
            osDisk:
              securityProfile:
                securityEncryptionType: VMGuestStateOnly
    • 在所有节点上启用机密VM,请添加以下部分

      platform:
        azure:
          settings:
            securityType: ConfidentialVM
            confidentialVM:
              uefiSettings:
                secureBoot: Enabled
                virtualizedTrustedPlatformModule: Enabled
          osDisk:
            securityProfile:
              securityEncryptionType: VMGuestStateOnly

Azure自定义的install-config.yaml文件示例

您可以自定义install-config.yaml文件以指定有关OpenShift Container Platform集群平台的更多详细信息,或修改所需参数的值。

此YAML文件示例仅供参考。您必须使用安装程序获取您的install-config.yaml文件并进行修改。

apiVersion: v1
baseDomain: example.com (1)
controlPlane: (2)
  hyperthreading: Enabled  (3) (4)
  name: master
  platform:
    azure:
      encryptionAtHost: true
      ultraSSDCapability: Enabled
      osDisk:
        diskSizeGB: 1024 (5)
        diskType: Premium_LRS
        diskEncryptionSet:
          resourceGroup: disk_encryption_set_resource_group
          name: disk_encryption_set_name
          subscriptionId: secondary_subscription_id
      osImage:
        publisher: example_publisher_name
        offer: example_image_offer
        sku: example_offer_sku
        version: example_image_version
      type: Standard_D8s_v3
  replicas: 3
compute: (2)
- hyperthreading: Enabled  (3) (4)
  name: worker
  platform:
    azure:
      ultraSSDCapability: Enabled
      type: Standard_D2s_v3
      encryptionAtHost: true
      osDisk:
        diskSizeGB: 512 (5)
        diskType: Standard_LRS
        diskEncryptionSet:
          resourceGroup: disk_encryption_set_resource_group
          name: disk_encryption_set_name
          subscriptionId: secondary_subscription_id
      osImage:
        publisher: example_publisher_name
        offer: example_image_offer
        sku: example_offer_sku
        version: example_image_version
      zones: (6)
      - "1"
      - "2"
      - "3"
  replicas: 5
metadata:
  name: test-cluster (1)
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.0.0.0/16
  networkType: OVNKubernetes (7)
  serviceNetwork:
  - 172.30.0.0/16
platform:
  azure:
    defaultMachinePlatform:
      osImage: (8)
        publisher: example_publisher_name
        offer: example_image_offer
        sku: example_offer_sku
        version: example_image_version
      ultraSSDCapability: Enabled
    baseDomainResourceGroupName: resource_group (9)
    region: centralus (1)
    resourceGroupName: existing_resource_group (10)
    outboundType: Loadbalancer
    cloudName: AzurePublicCloud
pullSecret: '{"auths": ...}' (1)
fips: false (11)
sshKey: ssh-ed25519 AAAA... (12)
1 必需。安装程序会提示您输入此值。
2 如果您未提供这些参数和值,安装程序将提供默认值。
3 controlPlane部分是单个映射,但compute部分是映射序列。为了满足不同数据结构的要求,compute部分的第一行必须以连字符-开头,而controlPlane部分的第一行则不能。只使用一个控制平面池。
4 是否启用或禁用同时多线程处理或超线程。默认情况下,启用同时多线程处理以提高机器内核的性能。您可以将其参数值设置为Disabled来禁用它。如果您在某些集群机器中禁用了同时多线程处理,则必须在所有集群机器中禁用它。

如果您禁用同时多线程处理,请确保您的容量规划考虑了机器性能的大幅下降。如果您禁用同时多线程处理,请为您的机器使用更大的虚拟机类型,例如Standard_D8s_v3

5 您可以指定要使用的磁盘大小(以GB为单位)。控制平面节点的最低建议值为1024 GB。
6 指定要将机器部署到的区域列表。为了实现高可用性,请至少指定两个区域。
7 要安装的集群网络插件。默认值OVNKubernetes是唯一受支持的值。
8 可选:应用于启动控制平面和计算机的自定义Red Hat Enterprise Linux CoreOS (RHCOS)映像。platform.azure.defaultMachinePlatform.osImage下的publisherofferskuversion参数同时适用于控制平面和计算机器。如果设置了controlPlane.platform.azure.osImagecompute.platform.azure.osImage下的参数,则它们将覆盖platform.azure.defaultMachinePlatform.osImage参数。
9 指定包含您的基本域的DNS区域的资源组的名称。
10 指定要安装集群的现有资源组的名称。如果未定义,则会为集群创建一个新的资源组。
11 是否启用或禁用FIPS模式。默认情况下,未启用FIPS模式。如果启用FIPS模式,则运行OpenShift Container Platform的Red Hat Enterprise Linux CoreOS (RHCOS)机器将绕过默认的Kubernetes加密套件,并改用RHCOS提供的加密模块。

要为您的集群启用FIPS模式,您必须从配置为在FIPS模式下运行的Red Hat Enterprise Linux (RHEL)计算机运行安装程序。有关在RHEL上配置FIPS模式的更多信息,请参阅将RHEL切换到FIPS模式

在运行在FIPS模式下启动的Red Hat Enterprise Linux (RHEL)或Red Hat Enterprise Linux CoreOS (RHCOS)时,OpenShift Container Platform核心组件仅在x86_64、ppc64le和s390x架构上使用已提交给NIST以进行FIPS 140-2/140-3验证的RHEL加密库。

12 您可以选择提供用于访问集群中机器的sshKey值。

对于您想要执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定您的ssh-agent进程使用的 SSH 密钥。

在安装过程中配置集群范围的代理

生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过配置install-config.yaml文件中的代理设置来配置新的 OpenShift Container Platform 集群以使用代理。

先决条件
  • 您已拥有现有的install-config.yaml文件。

  • 您已检查了集群需要访问的站点,并确定其中任何站点是否需要绕过代理。默认情况下,所有集群出口流量都将被代理,包括对托管云提供商 API 的调用。如有必要,您可以将站点添加到Proxy对象的spec.noProxy字段中以绕过代理。

    Proxy对象的status.noProxy字段将填充安装配置中的networking.machineNetwork[].cidrnetworking.clusterNetwork[].cidrnetworking.serviceNetwork[]字段的值。

    对于在 Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure 和 Red Hat OpenStack Platform (RHOSP) 上的安装,Proxy对象的status.noProxy字段还将填充实例元数据端点 (169.254.169.254)。

步骤
  1. 编辑您的install-config.yaml文件并添加代理设置。例如:

    apiVersion: v1
    baseDomain: my.domain.com
    proxy:
      httpProxy: http://<username>:<pswd>@<ip>:<port> (1)
      httpsProxy: https://<username>:<pswd>@<ip>:<port> (2)
      noProxy: example.com (3)
    additionalTrustBundle: | (4)
        -----BEGIN CERTIFICATE-----
        <MY_TRUSTED_CA_CERT>
        -----END CERTIFICATE-----
    additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> (5)
    1 用于在集群外部创建 HTTP 连接的代理 URL。URL 方案必须为http
    2 用于在集群外部创建 HTTPS 连接的代理 URL。
    3 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。以.开头表示仅匹配子域名。例如,.y.com匹配x.y.com,但不匹配y.com。使用*绕过所有目标的代理。
    4 如果提供,安装程序将生成一个名为user-ca-bundle的配置映射,该映射位于openshift-config命名空间中,其中包含代理 HTTPS 连接所需的一个或多个附加 CA 证书。然后,集群网络操作员将创建一个trusted-ca-bundle配置映射,并将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,并在Proxy对象的trustedCA字段中引用此配置映射。除非代理的身份证书由 RHCOS 信任捆绑包中的授权机构签名,否则需要additionalTrustBundle字段。
    5 可选:确定Proxy对象的配置以在trustedCA字段中引用user-ca-bundle配置映射的策略。允许的值为ProxyonlyAlways。使用Proxyonly仅在配置http/https代理时引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly

    安装程序不支持代理readinessEndpoints字段。

    如果安装程序超时,请重新启动,然后使用安装程序的wait-for命令完成部署。例如:

    $ ./openshift-install wait-for install-complete --log-level debug
  2. 保存文件并在安装 OpenShift Container Platform 时引用它。

安装程序创建一个名为cluster的集群范围代理,该代理使用install-config.yaml文件中提供的代理设置。如果没有提供代理设置,仍然会创建cluster Proxy对象,但它将具有 nil spec

仅支持名为clusterProxy对象,不能创建其他代理。

其他资源

配置 Azure 的用户定义标签

在 OpenShift Container Platform 中,您可以使用标签对资源进行分组,以及管理资源访问和成本。标签仅应用于由 OpenShift Container Platform 安装程序及其核心操作员(如机器 API 操作员、集群入口操作员、集群镜像注册表操作员)创建的资源。OpenShift Container Platform 包含以下类型的标签:

OpenShift Container Platform 标签

默认情况下,OpenShift Container Platform 安装程序会将 OpenShift Container Platform 标签附加到 Azure 资源。用户无法访问这些 OpenShift Container Platform 标签。OpenShift Container Platform 标签的格式为kubernetes.io_cluster.<cluster_id>:owned,其中<cluster_id>是集群基础架构资源中.status.infrastructureName的值。

用户定义的标签

用户定义的标签是在安装期间在install-config.yaml文件中手动创建的。创建用户定义的标签时,必须考虑以下几点:

  • Azure 资源上的用户定义标签只能在创建 OpenShift Container Platform 集群期间定义,集群创建后无法修改。

  • 仅支持在 Azure 公有云中创建的资源的用户定义标签。

  • 不支持将 OpenShift Container Platform 集群升级到 OpenShift Container Platform 4.17 的用户定义标签。

创建 Azure 的用户定义标签

要定义用户定义标签列表,请编辑install-config.yaml文件中的.platform.azure.userTags字段。

步骤
  • 按以下install-config.yaml文件所示指定.platform.azure.userTags字段:

    apiVersion: v1
    baseDomain: example.com
    #...
    platform:
      azure:
        userTags: (1)
          <key>: <value> (2)
    #...
    1 定义安装程序将其作为标签添加到其创建的所有 Azure 资源的附加键和值。
    2 指定键和值。您可以为资源组和资源配置最多 10 个标签。标签键不区分大小写。有关指定用户定义标签的要求的更多信息,请参见“用户定义标签要求”部分。
    install-config.yaml文件示例
    apiVersion: v1
    baseDomain: example.com
    #...
    platform:
      azure:
        userTags:
          createdBy: user
          environment: dev
    #...
验证
  • 通过运行以下命令访问为 Azure 资源创建的用户定义标签列表:

    $ oc get infrastructures.config.openshift.io cluster -o=jsonpath-as-json='{.status.platformStatus.azure.resourceTags}'
    示例输出
    [
        [
            {
                "key": "createdBy",
                "value": "user"
            },
            {
                "key": "environment",
                "value": "dev"
            }
        ]
    ]

用户定义标签要求

用户定义的标签具有以下要求:

  • 标签键最多可包含 128 个字符。

  • 标签键必须以字母开头。

  • 标签键必须以字母、数字或下划线结尾。

  • 标签键只能包含字母、数字、下划线 (_)、句点 (.) 和连字符 (-)。

  • 标签键不能指定为name

  • 标签键不能具有以下前缀:

    • kubernetes.io

    • openshift.io

    • microsoft

    • azure

    • windows

  • 标签值最多可包含 256 个字符。

有关 Azure 标签的更多信息,请参见 Azure 用户定义标签

存储在 kube-system 项目中的管理员级密钥的替代方法

默认情况下,管理员密钥存储在kube-system项目中。如果您已将install-config.yaml文件中的credentialsMode参数配置为Manual,则必须使用以下替代方法之一:

手动创建长期凭据

在无法访问云身份和访问管理 (IAM) API 或管理员不想在集群kube-system命名空间中存储管理员级凭据密钥的环境中,可以在安装之前将云凭据操作员 (CCO) 置于手动模式。

步骤
  1. 如果您之前未将install-config.yaml配置文件中的credentialsMode参数设置为Manual,请修改该值,如下所示:

    配置文件片段示例
    apiVersion: v1
    baseDomain: example.com
    credentialsMode: Manual
    # ...
  2. 如果您之前没有创建安装清单文件,请运行以下命令来创建:

    $ openshift-install create manifests --dir <installation_directory>

    其中<installation_directory>是安装程序创建文件的目录。

  3. 运行以下命令,使用安装文件中的发行版镜像设置$RELEASE_IMAGE变量

    $ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
  4. 运行以下命令,从OpenShift Container Platform发行版镜像中提取CredentialsRequest自定义资源 (CR) 列表

    $ oc adm release extract \
      --from=$RELEASE_IMAGE \
      --credentials-requests \
      --included \(1)
      --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \(2)
      --to=<path_to_directory_for_credentials_requests> (3)
    1 --included参数仅包含您的特定集群配置所需的清单。
    2 指定install-config.yaml文件的位置。
    3 指定要存储CredentialsRequest对象的目录的路径。如果指定的目录不存在,此命令将创建它。

    此命令将为每个CredentialsRequest对象创建一个YAML文件。

    CredentialsRequest对象示例
    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AzureProviderSpec
        roleBindings:
        - role: Contributor
      ...
  5. 为之前生成的openshift-install清单目录中的密钥创建YAML文件。必须使用每个CredentialsRequest对象中spec.secretRef定义的命名空间和密钥名称来存储密钥。

    包含密钥的CredentialsRequest对象示例
    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AzureProviderSpec
        roleBindings:
        - role: Contributor
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    Secret对象示例
    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      azure_subscription_id: <base64_encoded_azure_subscription_id>
      azure_client_id: <base64_encoded_azure_client_id>
      azure_client_secret: <base64_encoded_azure_client_secret>
      azure_tenant_id: <base64_encoded_azure_tenant_id>
      azure_resource_prefix: <base64_encoded_azure_resource_prefix>
      azure_resourcegroup: <base64_encoded_azure_resourcegroup>
      azure_region: <base64_encoded_azure_region>

在升级使用手动维护凭据的集群之前,必须确保CCO处于可升级状态。

配置Azure集群以使用短期凭据

要安装使用Microsoft Entra工作负载ID的集群,必须配置Cloud Credential Operator实用程序并为集群创建所需的Azure资源。

配置Cloud Credential Operator实用程序

当Cloud Credential Operator (CCO)以手动模式运行时,要从集群外部创建和管理云凭据,请提取并准备CCO实用程序(ccoctl)二进制文件。

ccoctl实用程序是一个Linux二进制文件,必须在Linux环境中运行。

先决条件
  • 您可以访问具有集群管理员访问权限的OpenShift Container Platform帐户。

  • 您已安装OpenShift CLI (oc)。

  • 您已为ccoctl实用程序创建了一个全局Microsoft Azure帐户,并具有以下权限

    所需的Azure权限
    • Microsoft.Resources/subscriptions/resourceGroups/read

    • Microsoft.Resources/subscriptions/resourceGroups/write

    • Microsoft.Resources/subscriptions/resourceGroups/delete

    • Microsoft.Authorization/roleAssignments/read

    • Microsoft.Authorization/roleAssignments/delete

    • Microsoft.Authorization/roleAssignments/write

    • Microsoft.Authorization/roleDefinitions/read

    • Microsoft.Authorization/roleDefinitions/write

    • Microsoft.Authorization/roleDefinitions/delete

    • Microsoft.Storage/storageAccounts/listkeys/action

    • Microsoft.Storage/storageAccounts/delete

    • Microsoft.Storage/storageAccounts/read

    • Microsoft.Storage/storageAccounts/write

    • Microsoft.Storage/storageAccounts/blobServices/containers/write

    • Microsoft.Storage/storageAccounts/blobServices/containers/delete

    • Microsoft.Storage/storageAccounts/blobServices/containers/read

    • Microsoft.ManagedIdentity/userAssignedIdentities/delete

    • Microsoft.ManagedIdentity/userAssignedIdentities/read

    • Microsoft.ManagedIdentity/userAssignedIdentities/write

    • Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/read

    • Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write

    • Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/delete

    • Microsoft.Storage/register/action

    • Microsoft.ManagedIdentity/register/action

步骤
  1. 运行以下命令,设置OpenShift Container Platform发行版镜像的变量

    $ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
  2. 运行以下命令,从OpenShift Container Platform发行版镜像中获取CCO容器镜像

    $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)

    确保$RELEASE_IMAGE的架构与您将使用ccoctl工具的环境架构匹配。

  3. 运行以下命令,从OpenShift Container Platform发行版镜像中的CCO容器镜像中提取ccoctl二进制文件

    $ oc image extract $CCO_IMAGE \
      --file="/usr/bin/ccoctl.<rhel_version>" \(1)
      -a ~/.pull-secret
    1 对于<rhel_version>,请指定与主机使用的Red Hat Enterprise Linux (RHEL)版本相对应的值。如果未指定值,则默认使用ccoctl.rhel8。有效值为
    • rhel8:对于使用RHEL 8的主机,请指定此值。

    • rhel9:对于使用RHEL 9的主机,请指定此值。

  4. 运行以下命令更改权限,使ccoctl可执行

    $ chmod 775 ccoctl.<rhel_version>
验证
  • 要验证ccoctl是否已准备好使用,请显示帮助文件。运行命令时,请使用相对文件名,例如

    $ ./ccoctl.rhel9
    示例输出
    OpenShift credentials provisioning tool
    
    Usage:
      ccoctl [command]
    
    Available Commands:
      aws          Manage credentials objects for AWS cloud
      azure        Manage credentials objects for Azure
      gcp          Manage credentials objects for Google cloud
      help         Help about any command
      ibmcloud     Manage credentials objects for {ibm-cloud-title}
      nutanix      Manage credentials objects for Nutanix
    
    Flags:
      -h, --help   help for ccoctl
    
    Use "ccoctl [command] --help" for more information about a command.

使用Cloud Credential Operator实用程序创建Azure资源

您可以使用ccoctl azure create-all命令自动创建Azure资源。

默认情况下,ccoctl在运行命令的目录中创建对象。要在不同的目录中创建对象,请使用--output-dir标志。此过程使用<path_to_ccoctl_output_dir>来引用此目录。

先决条件

您必须拥有

  • 已提取并准备ccoctl二进制文件。

  • 通过Azure CLI访问您的Microsoft Azure帐户。

步骤
  1. 运行以下命令,使用安装文件中的发行版镜像设置$RELEASE_IMAGE变量

    $ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
  2. 运行以下命令,从OpenShift Container Platform发行版镜像中提取CredentialsRequest对象列表

    $ oc adm release extract \
      --from=$RELEASE_IMAGE \
      --credentials-requests \
      --included \(1)
      --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \(2)
      --to=<path_to_directory_for_credentials_requests> (3)
    1 --included参数仅包含您的特定集群配置所需的清单。
    2 指定install-config.yaml文件的位置。
    3 指定要存储CredentialsRequest对象的目录的路径。如果指定的目录不存在,此命令将创建它。

    此命令可能需要几分钟才能运行。

  3. 要使ccoctl实用程序能够自动检测您的Azure凭据,请运行以下命令登录到Azure CLI

    $ az login
  4. 使用ccoctl工具处理所有CredentialsRequest对象,运行以下命令

    $ ccoctl azure create-all \
      --name=<azure_infra_name> \(1)
      --output-dir=<ccoctl_output_dir> \(2)
      --region=<azure_region> \(3)
      --subscription-id=<azure_subscription_id> \(4)
      --credentials-requests-dir=<path_to_credentials_requests_directory> \(5)
      --dnszone-resource-group-name=<azure_dns_zone_resource_group_name> \(6)
      --tenant-id=<azure_tenant_id> (7)
    1 为用于跟踪的所有已创建的Azure资源指定用户定义的名称。
    2 可选:指定您希望ccoctl实用程序创建对象的目录。默认情况下,该实用程序在运行命令的目录中创建对象。
    3 指定将创建云资源的Azure区域。
    4 指定要使用的Azure订阅ID。
    5 指定包含组件CredentialsRequest对象的文件的目录。
    6 指定包含集群基本域Azure DNS区域的资源组的名称。
    7 指定要使用的Azure租户ID。

    如果您的集群使用由TechPreviewNoUpgrade功能集启用的技术预览功能,则必须包含--enable-tech-preview参数。

    要查看其他可选参数以及如何使用它们的说明,请运行azure create-all --help命令。

验证
  • 要验证OpenShift Container Platform密钥是否已创建,请列出<path_to_ccoctl_output_dir>/manifests目录中的文件

    $ ls <path_to_ccoctl_output_dir>/manifests
    示例输出
    azure-ad-pod-identity-webhook-config.yaml
    cluster-authentication-02-config.yaml
    openshift-cloud-controller-manager-azure-cloud-credentials-credentials.yaml
    openshift-cloud-network-config-controller-cloud-credentials-credentials.yaml
    openshift-cluster-api-capz-manager-bootstrap-credentials-credentials.yaml
    openshift-cluster-csi-drivers-azure-disk-credentials-credentials.yaml
    openshift-cluster-csi-drivers-azure-file-credentials-credentials.yaml
    openshift-image-registry-installer-cloud-credentials-credentials.yaml
    openshift-ingress-operator-cloud-credentials-credentials.yaml
    openshift-machine-api-azure-cloud-credentials-credentials.yaml

    您可以通过查询Azure来验证Microsoft Entra ID服务帐户是否已创建。有关更多信息,请参阅Azure文档中关于列出Entra ID服务帐户的内容。

合并Cloud Credential Operator实用程序清单

要实现为各个组件管理的集群外部的短期安全凭据,必须将Cloud Credential Operator实用程序(ccoctl)创建的清单文件移动到安装程序的正确目录。

先决条件
  • 您已配置了托管集群的云平台帐户。

  • 您已配置Cloud Credential Operator实用程序(ccoctl)。

  • 您已使用ccoctl实用程序创建了集群所需的云提供商资源。

步骤
  1. 如果您之前未将install-config.yaml配置文件中的credentialsMode参数设置为Manual,请修改该值,如下所示:

    配置文件片段示例
    apiVersion: v1
    baseDomain: example.com
    credentialsMode: Manual
    # ...
  2. 如果您使用ccoctl实用程序创建了一个新的Azure资源组而不是使用现有的资源组,请修改install-config.yaml中的resourceGroupName参数,如下所示

    配置文件片段示例
    apiVersion: v1
    baseDomain: example.com
    # ...
    platform:
      azure:
        resourceGroupName: <azure_infra_name> (1)
    # ...
    1 此值必须与使用ccoctl azure create-all命令的--name参数指定的Azure资源的用户定义名称匹配。
  3. 如果您之前没有创建安装清单文件,请运行以下命令来创建:

    $ openshift-install create manifests --dir <installation_directory>

    其中<installation_directory>是安装程序创建文件的目录。

  4. 运行以下命令,将ccoctl实用程序生成的清单复制到安装程序创建的manifests目录

    $ cp /<path_to_ccoctl_output_dir>/manifests/* ./manifests/
  5. 将包含私钥的tls目录复制到安装目录。

    $ cp -a /<path_to_ccoctl_output_dir>/tls .

部署集群

您可以在兼容的云平台上安装 OpenShift Container Platform。

您只能在初始安装期间运行安装程序的create cluster命令一次。

先决条件
  • 您已配置了托管集群的云平台帐户。

  • 您拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。

  • 您拥有 Azure 订阅 ID 和租户 ID。

步骤
  • 切换到包含安装程序的目录并初始化集群部署。

    $ ./openshift-install create cluster --dir <installation_directory> \ (1)
        --log-level=info (2)
    
    1 对于<installation_directory>,请指定您自定义的./install-config.yaml文件的位置。
    2 要查看不同的安装细节,请指定warndebugerror代替info
验证

当集群部署成功完成时

  • 终端会显示访问集群的说明,包括指向 Web 控制台的链接以及kubeadmin用户的凭据。

  • 凭据信息也会输出到<installation_directory>/.openshift_install.log

不要删除安装程序或安装程序创建的文件。两者都是删除集群所必需的。

示例输出
...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
INFO Login to the console with user: "kubeadmin", and password: "password"
INFO Time elapsed: 36m22s
  • 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,届时会自动更新。如果在证书更新前集群关闭,并在 24 小时后重新启动,集群会自动恢复过期的证书。例外情况是,您必须手动批准挂起的node-bootstrapper证书签名请求 (CSR) 以恢复 kubelet 证书。有关更多信息,请参阅从过期的控制平面证书中恢复文档。

  • 建议您在生成 Ignition 配置文件后 12 小时内使用它们,因为 24 小时证书会在集群安装后 16 到 22 小时之间轮换。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装期间证书更新运行时安装失败。

使用 CLI 登录集群

您可以通过导出集群kubeconfig文件以默认系统用户身份登录集群。kubeconfig文件包含集群信息,CLI 使用这些信息将客户端连接到正确的集群和 API 服务器。该文件特定于一个集群,并在 OpenShift Container Platform 安装期间创建。

先决条件
  • 您已部署了一个 OpenShift Container Platform 集群。

  • 您已安装了oc CLI。

步骤
  1. 导出kubeadmin凭据

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig (1)
    1 对于<installation_directory>,请指定您存储安装文件的目录的路径。
  2. 验证您可以使用导出的配置成功运行oc命令。

    $ oc whoami
    示例输出
    system:admin
其他资源
  • 有关访问和了解 OpenShift Container Platform Web 控制台的更多详细信息,请参阅访问 Web 控制台

后续步骤