×

先决条件

OpenShift Container Platform 的互联网访问

在 OpenShift Container Platform 4.17 中,您需要访问互联网才能安装集群。

您必须具有互联网访问权限才能:

  • 访问OpenShift 集群管理器以下载安装程序并执行订阅管理。如果集群具有互联网访问权限并且您未禁用遥测,则该服务会自动授权您的集群。

  • 访问Quay.io获取安装集群所需的软件包。

  • 获取执行集群更新所需的软件包。

如果您的集群无法直接访问互联网,您可以在您配置的某些类型的基础设施上执行受限网络安装。在此过程中,您将下载所需内容并使用它来填充镜像注册表中的安装软件包。对于某些安装类型,安装集群的环境不需要访问互联网。在更新集群之前,请更新镜像注册表的内容。

生成集群节点SSH访问的密钥对

在OpenShift Container Platform安装过程中,您可以向安装程序提供SSH公钥。该密钥通过其Ignition配置文件传递给Red Hat Enterprise Linux CoreOS (RHCOS)节点,并用于验证对节点的SSH访问。该密钥将添加到每个节点上core用户的~/.ssh/authorized_keys列表中,从而启用无密码身份验证。

密钥传递到节点后,您可以使用密钥对以core用户身份SSH登录到RHCOS节点。要通过SSH访问节点,SSH必须管理本地用户的私钥身份。

如果您想SSH登录到集群节点以执行安装调试或灾难恢复,则必须在安装过程中提供SSH公钥。./openshift-install gather命令也需要集群节点上存在SSH公钥。

在需要灾难恢复和调试的生产环境中,请勿跳过此过程。

您必须使用本地密钥,而不是使用平台特定方法(例如AWS密钥对)配置的密钥。

步骤
  1. 如果您在本地计算机上没有现有的SSH密钥对用于身份验证到您的集群节点,请创建一个。例如,在使用Linux操作系统的计算机上,运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> (1)
    1 指定新SSH密钥的路径和文件名,例如~/.ssh/id_ed25519。如果您有现有的密钥对,请确保您的公钥位于~/.ssh目录中。

    如果您计划安装一个使用已提交给NIST进行FIPS 140-2/140-3验证的RHEL加密库的OpenShift Container Platform集群(仅限x86_64ppc64les390x架构),请不要创建使用ed25519算法的密钥。而是创建一个使用rsaecdsa算法的密钥。

  2. 查看SSH公钥

    $ cat <path>/<file_name>.pub

    例如,运行以下命令查看~/.ssh/id_ed25519.pub公钥:

    $ cat ~/.ssh/id_ed25519.pub
  3. 如果尚未添加,请将SSH私钥身份添加到本地用户的SSH代理。为了对集群节点进行无密码SSH身份验证,或者如果您想使用./openshift-install gather命令,都需要SSH代理管理密钥。

    在某些发行版上,默认的SSH私钥身份(例如~/.ssh/id_rsa~/.ssh/id_dsa)会自动管理。

    1. 如果本地用户的ssh-agent进程尚未运行,请将其作为后台任务启动:

      $ eval "$(ssh-agent -s)"
      示例输出
      Agent pid 31874

      如果您的集群处于FIPS模式,则只能使用符合FIPS的算法生成SSH密钥。密钥必须是RSA或ECDSA。

  4. 将您的SSH私钥添加到ssh-agent

    $ ssh-add <path>/<file_name> (1)
    1 指定SSH私钥的路径和文件名,例如~/.ssh/id_ed25519
    示例输出
    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
  • 安装OpenShift Container Platform时,请向安装程序提供SSH公钥。

获取安装程序

在安装OpenShift Container Platform之前,请在您用于安装的主机上下载安装文件。

先决条件
  • 您需要一台运行Linux或macOS的计算机,并具有500 MB的本地磁盘空间。

步骤
  1. 访问Red Hat混合云控制台上的集群类型页面。如果您有Red Hat帐户,请使用您的凭据登录。如果没有,请创建一个帐户。

  2. 从页面中的“自行运行”部分选择您的基础设施提供商。

  3. OpenShift安装程序下的下拉菜单中选择您的主机操作系统和架构,然后单击下载安装程序

  4. 将下载的文件放在您要存储安装配置文件的目录中。

    • 安装程序会在您用于安装集群的计算机上创建多个文件。安装集群完成后,您必须保留安装程序和安装程序创建的文件。这两个文件都是删除集群所必需的。

    • 即使集群在安装过程中失败,删除安装程序创建的文件也不会删除您的集群。要删除集群,请完成针对您的特定云提供商的OpenShift Container Platform卸载过程。

  5. 解压安装程序。例如,在使用Linux操作系统的计算机上,运行以下命令:

    $ tar -xvf openshift-install-linux.tar.gz
  6. 从Red Hat OpenShift集群管理器下载您的安装pull secret。此pull secret允许您对包含的授权机构(包括提供OpenShift Container Platform组件容器映像的Quay.io)提供的服务进行身份验证。

或者,您可以从Red Hat客户门户检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您必须拥有有效的订阅才能访问此页面。

创建安装配置文件

您可以自定义在Google Cloud Platform (GCP)上安装的OpenShift Container Platform集群。

先决条件
  • 您拥有OpenShift Container Platform安装程序和集群的pull secret。

步骤
  1. 创建install-config.yaml文件。

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

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

      指定目录时:

      • 验证该目录是否具有execute权限。此权限是运行安装目录下Terraform二进制文件所必需的。

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

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

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

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

      2. 选择gcp作为目标平台。

      3. 如果您尚未在您的计算机上为您的 GCP 帐户配置服务帐户密钥,则必须从 GCP 获取它并粘贴文件内容或输入文件的绝对路径。

      4. 选择要在其中预配集群的项目 ID。默认值由您配置的服务帐户指定。

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

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

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

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

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

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

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

集群安装的最低资源要求

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

表 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 对磁盘性能敏感,建议使用更快的存储,特别是对于控制平面节点上的 etcd,它需要 10 毫秒 p99 fsync 持续时间。请注意,在许多云平台上,存储大小和 IOPS 成正比,因此您可能需要过度分配存储卷才能获得足够的性能。

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

从 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 架构

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

其他资源

GCP 的已测试实例类型

以下 Google Cloud Platform 实例类型已通过 OpenShift Container Platform 测试。

机器系列
  • A2

  • A3

  • C2

  • C2D

  • C3

  • C3D

  • E2

  • M1

  • N1

  • N2

  • N2D

  • N4

  • Tau T2D

64 位 ARM 基础架构上 GCP 的已测试实例类型

以下 Google Cloud Platform (GCP) 64 位 ARM 实例类型已通过 OpenShift Container Platform 测试。

64 位 ARM 机器系列
  • Tau T2A

使用自定义机器类型

支持使用自定义机器类型安装 OpenShift Container Platform 集群。

使用自定义机器类型时,请考虑以下事项:

  • 与预定义的实例类型类似,自定义机器类型必须满足控制平面和计算机器的最低资源要求。有关更多信息,请参见“集群安装的最低资源要求”。

  • 自定义机器类型的名称必须符合以下语法:

    custom-<cpu数量>-<内存大小(MB)>

    例如,custom-6-20480

作为安装过程的一部分,您可以在install-config.yaml文件中指定自定义机器类型。

包含自定义机器类型的install-config.yaml文件示例
compute:
- architecture: amd64
  hyperthreading: Enabled
  name: worker
  platform:
    gcp:
      type: custom-6-20480
  replicas: 2
controlPlane:
  architecture: amd64
  hyperthreading: Enabled
  name: master
  platform:
    gcp:
      type: custom-6-20480
  replicas: 3

启用 Shielded VM

安装集群时可以使用 Shielded VM。Shielded VM 具有额外的安全功能,包括安全启动、固件和完整性监控以及 rootkit 检测。有关更多信息,请参见 Google 关于 Shielded VM 的文档。

目前,在具有 64 位 ARM 基础架构的集群上不支持 Shielded VM。

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

步骤
  • 在部署集群之前,使用文本编辑器编辑install-config.yaml文件,并添加以下片段之一:

    1. 仅对控制平面机器使用 Shielded VM

      controlPlane:
        platform:
          gcp:
             secureBoot: Enabled
    2. 仅对计算机器使用 Shielded VM

      compute:
      - platform:
          gcp:
             secureBoot: Enabled
    3. 对所有机器使用 Shielded VM

      platform:
        gcp:
          defaultMachinePlatform:
             secureBoot: Enabled

启用 Confidential VM

安装集群时可以使用 Confidential VM。Confidential VM 在处理数据时会对其进行加密。有关更多信息,请参见 Google 关于 Confidential Computing 的文档。您可以同时启用 Confidential VM 和 Shielded VM,尽管它们彼此之间并不依赖。

目前,在 64 位 ARM 架构上不支持 Confidential VM。

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

步骤
  • 在部署集群之前,使用文本编辑器编辑install-config.yaml文件,并添加以下片段之一:

    1. 仅对控制平面机器使用 Confidential VM

      controlPlane:
        platform:
          gcp:
             confidentialCompute: Enabled (1)
             type: n2d-standard-8 (2)
             onHostMaintenance: Terminate (3)
      1 启用 Confidential VM。
      2 指定支持 Confidential VM 的机器类型。Confidential VM 需要 N2D 或 C2D 系列的机器类型。有关受支持机器类型的更多信息,请参见 受支持的操作系统和机器类型
      3 指定主机维护事件(例如硬件或软件更新)期间 VM 的行为。对于使用 Confidential VM 的机器,此值必须设置为Terminate,这将停止 VM。Confidential VM 不支持实时 VM 迁移。
    2. 仅对计算机器使用 Confidential VM

      compute:
      - platform:
          gcp:
             confidentialCompute: Enabled
             type: n2d-standard-8
             onHostMaintenance: Terminate
    3. 对所有机器使用 Confidential VM

      platform:
        gcp:
          defaultMachinePlatform:
             confidentialCompute: Enabled
             type: n2d-standard-8
             onHostMaintenance: Terminate

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

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

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

apiVersion: v1
baseDomain: example.com (1)
credentialsMode: Mint (2)
controlPlane:  (3) (4)
  hyperthreading: Enabled (5)
  name: master
  platform:
    gcp:
      type: n2-standard-4
      zones:
      - us-central1-a
      - us-central1-c
      osDisk:
        diskType: pd-ssd
        diskSizeGB: 1024
        encryptionKey: (6)
          kmsKey:
            name: worker-key
            keyRing: test-machine-keys
            location: global
            projectID: project-id
      tags: (7)
      - control-plane-tag1
      - control-plane-tag2
      osImage: (8)
        project: example-project-name
        name: example-image-name
  replicas: 3
compute:  (3) (4)
- hyperthreading: Enabled (5)
  name: worker
  platform:
    gcp:
      type: n2-standard-4
      zones:
      - us-central1-a
      - us-central1-c
      osDisk:
        diskType: pd-standard
        diskSizeGB: 128
        encryptionKey: (6)
          kmsKey:
            name: worker-key
            keyRing: test-machine-keys
            location: global
            projectID: project-id
        tags: (7)
        - compute-tag1
        - compute-tag2
        osImage: (8)
          project: example-project-name
          name: example-image-name
  replicas: 3
metadata:
  name: test-cluster (1)
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.0.0.0/16
  networkType: OVNKubernetes (9)
  serviceNetwork:
  - 172.30.0.0/16
platform:
  gcp:
    projectID: openshift-production (1)
    region: us-central1 (1)
    defaultMachinePlatform:
      tags: (7)
      - global-tag1
      - global-tag2
      osImage: (8)
        project: example-project-name
        name: example-image-name
pullSecret: '{"auths": ...}' (1)
fips: false (10)
sshKey: ssh-ed25519 AAAA... (11)
1 必填。安装程序会提示您输入此值。
2 可选:添加此参数可强制云凭据操作符 (CCO) 使用指定的模式。默认情况下,CCO 使用kube-system命名空间中的 root 凭据来动态尝试确定凭据的功能。有关 CCO 模式的详细信息,请参阅《身份验证和授权》指南中的“关于云凭据操作符”部分。
3 如果您未提供这些参数和值,安装程序将提供默认值。
4 controlPlane部分是一个单映射,但compute部分是一系列映射。为了满足不同数据结构的要求,compute部分的第一行必须以连字符-开头,而controlPlane部分的第一行则不能。仅使用一个控制平面池。
5 是否启用或禁用多线程同步,或超线程。默认情况下,启用多线程同步以提高机器内核的性能。您可以将其设置为Disabled来禁用它。如果您在某些集群机器中禁用了多线程同步,则必须在所有集群机器中禁用它。

如果您禁用多线程同步,请确保您的容量规划考虑到了机器性能的大幅下降。如果您禁用了多线程同步,请为您的机器使用更大的机器类型,例如n1-standard-8

6 可选:用于加密虚拟机和持久卷的自定义加密密钥部分。您的默认计算服务帐户必须具有使用您的 KMS 密钥所需的权限,并分配正确的 IAM 角色。默认服务帐户名称遵循service-<project_number>@compute-system.iam.gserviceaccount.com模式。有关为您的服务帐户授予正确权限的更多信息,请参阅“机器管理”→“创建计算机器集”→“在 GCP 上创建计算机器集”。
7 可选:一组要应用于控制平面或计算机器集的网络标签。platform.gcp.defaultMachinePlatform.tags参数将同时应用于控制平面和计算机器。如果设置了compute.platform.gcp.tagscontrolPlane.platform.gcp.tags参数,则它们将覆盖platform.gcp.defaultMachinePlatform.tags参数。
8 可选:应用于引导控制平面和计算机器的自定义 Red Hat Enterprise Linux CoreOS (RHCOS)。platform.gcp.defaultMachinePlatform.osImage下的projectname参数同时应用于控制平面和计算机器。如果设置了controlPlane.platform.gcp.osImagecompute.platform.gcp.osImage下的projectname参数,则它们将覆盖platform.gcp.defaultMachinePlatform.osImage参数。
9 要安装的集群网络插件。默认值OVNKubernetes是唯一受支持的值。
10 是否启用或禁用 FIPS 模式。默认情况下,未启用 FIPS 模式。如果启用了 FIPS 模式,则运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS (RHCOS) 机器将绕过默认的 Kubernetes 加密套件,并改用 RHCOS 提供的加密模块。

在以 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 加密库。

11 您可以选择提供用于访问集群中机器的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 如果提供,安装程序将在openshift-config命名空间中生成一个名为user-ca-bundle的配置映射,其中包含代理 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对象,并且无法创建其他代理。

管理 GCP 的用户定义标签和标记

Google Cloud Platform (GCP) 提供标签和标记,用于标识和组织为特定 OpenShift Container Platform 集群创建的资源,从而简化管理。

您只能在 OpenShift Container Platform 集群安装期间为每个 GCP 资源定义标签和标记。

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

您无法更新已添加的标记。此外,如果配置的标记键或标记值被删除,则新的支持标记的资源创建将失败。

用户定义的标签

用户定义的标签和 OpenShift Container Platform 特定的标签仅应用于由 OpenShift Container Platform 安装程序及其核心组件创建的资源,例如:

  • GCP Filestore CSI Driver 运算符

  • GCP PD CSI 驱动程序操作员

  • 镜像注册表运算符

  • GCP 的 Machine API 提供程序

用户定义的标签不会附加到任何其他运算符或 Kubernetes 内置组件创建的资源。

用户定义的标签和 OpenShift Container Platform 标签可在以下 GCP 资源上使用:

  • 计算磁盘

  • 计算转发规则

  • 计算镜像

  • 计算实例

  • DNS 托管区域

  • Filestore 备份

  • Filestore 实例

  • 存储桶

用户定义标签的限制
  • ComputeAddress 的标签在 GCP 测试版中受支持。OpenShift Container Platform 不会向资源添加标签。

用户定义的标记

用户定义的标记仅应用于由 OpenShift Container Platform 安装程序及其核心组件创建的资源,例如:

  • GCP FileStore CSI Driver 运算符

  • GCP PD CSI 驱动程序操作员

  • 镜像注册表运算符

  • GCP 的 Machine API 提供程序

用户定义的标记不会附加到任何其他运算符或 Kubernetes 内置组件创建的资源。

用户定义的标记可在以下 GCP 资源上使用:

  • 计算磁盘

  • 计算实例

  • Filestore 备份

  • Filestore 实例

  • 存储桶

用户定义标记的限制
  • 标记不得限于特定服务帐户,因为运算符会创建和使用具有最小角色的服务帐户。

  • OpenShift Container Platform 不会创建标记的任何键和值资源。

  • OpenShift Container Platform 特定的标记不会添加到任何资源。

其他资源
  • 有关标识 OrganizationID 的更多信息,请参阅:OrganizationID

  • 有关标识 ProjectID 的更多信息,请参阅:ProjectID

  • 有关标签的更多信息,请参阅 标签概述

  • 有关标记的更多信息,请参阅 标记概述

为 GCP 配置用户定义的标签和标记

先决条件
  • 安装程序要求服务帐户包含 TagUser 角色,以便程序可以在组织和项目级别创建具有已定义标记的 OpenShift Container Platform 集群。

步骤
  • 更新 install-config.yaml 文件以定义所需标签和标记的列表。

    标签和标记在 install-config.yaml 创建阶段定义,集群创建后无法修改或使用新的标签和标记更新。

    install-config.yaml 文件示例
    apiVersion: v1
    featureSet: TechPreviewNoUpgrade
    platform:
     gcp:
       userLabels: (1)
       - key: <label_key>(2)
         value: <label_value>(3)
       userTags: (4)
       - parentID: <OrganizationID/ProjectID>(5)
         key: <tag_key_short_name>
         value: <tag_value_short_name>
    1 将键和值作为标签添加到在 GCP 上创建的资源。
    2 定义标签名称。
    3 定义标签内容。
    4 将键和值作为标记添加到在 GCP 上创建的资源。
    5 在组织或项目级别定义标记的分层资源的 ID。

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

  • 标签键和值至少必须包含 1 个字符,最多可以包含 63 个字符。

  • 标签键和值只能包含小写字母、数字字符、下划线 (_) 和短划线 (-)。

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

  • 每个资源最多可以配置 32 个标签。每个资源最多可以有 64 个标签,其中 32 个标签由 OpenShift Container Platform 保留用于内部使用。

以下是用户定义标记的要求:

  • 标记键和标记值必须已存在。OpenShift Container Platform 不会创建键和值。

  • 标记 parentID 可以是 OrganizationIDProjectID

    • OrganizationID 必须由不带前导零的十进制数字组成。

    • ProjectID 的长度必须为 6 到 30 个字符,其中只能包含小写字母、数字和连字符。

    • ProjectID 必须以字母开头,并且不能以连字符结尾。

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

  • 标记值只能包含大写和小写字母数字字符、连字符 (-)、下划线 (_)、句点 (.)、at 符号 (@)、百分号 (%)、等号 (=)、加号 (+)、冒号 (:)、逗号 (,)、星号 (*)、井号 ($)、与号 (&)、括号 (())、方括号 ([])、花括号 ({}) 和空格。

  • 标记键和值必须以字母数字字符开头和结尾。

  • 标记值必须是该键的预定义值之一。

  • 最多可以配置 50 个标记。

  • 定义的标记键的值不得与将从父资源继承的任何现有标记键的值相同。

查询 GCP 的用户定义标签和标记

创建 OpenShift Container Platform 集群后,您可以访问在 infrastructures.config.openshift.io/cluster 对象中为 GCP 资源定义的标签和标记列表,如下面的 infrastructure.yaml 文件示例所示。

infrastructure.yaml 文件示例
apiVersion: config.openshift.io/v1
kind: Infrastructure
metadata:
 name: cluster
spec:
 platformSpec:
   type: GCP
status:
 infrastructureName: <cluster_id>(1)
 platform: GCP
 platformStatus:
   gcp:
     resourceLabels:
     - key: <label_key>
       value: <label_value>
     resourceTags:
     - key: <tag_key_short_name>
       parentID: <OrganizationID/ProjectID>
       value: <tag_value_short_name>
   type: GCP
1 在集群安装期间生成的集群 ID。

除了用户定义的标签外,资源还具有由 OpenShift Container Platform 定义的标签。OpenShift Container Platform 标签的格式为 kubernetes-io-cluster-<cluster_id>:owned

安装 OpenShift CLI

您可以安装 OpenShift CLI (oc) 以通过命令行界面与 OpenShift Container Platform 交互。您可以在 Linux、Windows 或 macOS 上安装 oc

如果您安装了早期版本的 oc,则无法使用它来完成 OpenShift Container Platform 4.17 中的所有命令。下载并安装新版本的 oc

在 Linux 上安装 OpenShift CLI

您可以使用以下步骤在 Linux 上安装 OpenShift CLI (oc) 二进制文件。

步骤
  1. 在 Red Hat 客户门户网站上导航到OpenShift Container Platform 下载页面

  2. 从**产品变体**下拉列表中选择体系结构。

  3. 从**版本**下拉列表中选择相应的版本。

  4. 点击**OpenShift v4.17 Linux 客户端**条目的**立即下载**按钮,并保存文件。

  5. 解压归档文件。

    $ tar xvf <file>
  6. oc二进制文件放置到您的PATH环境变量包含的目录中。

    要检查您的PATH,请执行以下命令:

    $ echo $PATH
验证
  • 安装 OpenShift CLI 后,可以使用oc命令访问它。

    $ oc <command>

在 Windows 上安装 OpenShift CLI

您可以使用以下步骤在 Windows 上安装 OpenShift CLI (oc) 二进制文件。

步骤
  1. 在 Red Hat 客户门户网站上导航到OpenShift Container Platform 下载页面

  2. 从**版本**下拉列表中选择相应的版本。

  3. 点击**OpenShift v4.17 Windows 客户端**条目的**立即下载**按钮,并保存文件。

  4. 使用 ZIP 程序解压缩归档文件。

  5. oc二进制文件移动到PATH环境变量包含的目录中。

    要检查您的PATH,请打开命令提示符并执行以下命令:

    C:\> path
验证
  • 安装 OpenShift CLI 后,可以使用oc命令访问它。

    C:\> oc <command>

在 macOS 上安装 OpenShift CLI

您可以使用以下步骤在 macOS 上安装 OpenShift CLI (oc) 二进制文件。

步骤
  1. 在 Red Hat 客户门户网站上导航到OpenShift Container Platform 下载页面

  2. 从**版本**下拉列表中选择相应的版本。

  3. 点击**OpenShift v4.17 macOS 客户端**条目的**立即下载**按钮,并保存文件。

    对于 macOS arm64,请选择**OpenShift v4.17 macOS arm64 客户端**条目。

  4. 解压归档文件。

  5. oc二进制文件移动到PATH环境变量包含的目录中。

    要检查您的PATH,请打开终端并执行以下命令:

    $ echo $PATH
验证
  • 使用oc命令验证您的安装。

    $ oc <command>

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

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

手动创建长期凭据

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

步骤
  1. 将以下细粒度权限添加到安装程序使用的 GCP 帐户:

    必需的 GCP 权限
    • compute.machineTypes.list

    • compute.regions.list

    • compute.zones.list

    • dns.changes.create

    • dns.changes.get

    • dns.managedZones.create

    • dns.managedZones.delete

    • dns.managedZones.get

    • dns.managedZones.list

    • dns.networks.bindPrivateDNSZone

    • dns.resourceRecordSets.create

    • dns.resourceRecordSets.delete

    • dns.resourceRecordSets.list

  2. 如果您未在install-config.yaml配置文件中将credentialsMode参数设置为Manual,请按如下所示修改其值:

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

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

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

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

    $ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
  5. 通过运行以下命令,从 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: GCPProviderSpec
        predefinedRoles:
        - roles/storage.admin
        - roles/iam.serviceAccountUser
        skipServiceCheck: true
      ...
  6. 在您之前生成的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
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    Secret对象示例
    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      service_account.json: <base64_encoded_gcp_service_account_file>

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

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

要安装配置为使用 GCP Workload Identity 的集群,必须配置 CCO 实用程序并为集群创建必需的 GCP 资源。

配置云凭据操作员实用程序

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

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

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

  • 您已安装 OpenShift CLI (oc)。

  • 您已将以下身份验证选项之一添加到安装程序使用的 GCP 帐户:

    • **IAM 工作负载身份池管理员**角色。

    • 以下细粒度权限:

      必需的 GCP 权限
      • compute.projects.get

      • iam.googleapis.com/workloadIdentityPoolProviders.create

      • iam.googleapis.com/workloadIdentityPoolProviders.get

      • iam.googleapis.com/workloadIdentityPools.create

      • iam.googleapis.com/workloadIdentityPools.delete

      • iam.googleapis.com/workloadIdentityPools.get

      • iam.googleapis.com/workloadIdentityPools.undelete

      • iam.roles.create

      • iam.roles.delete

      • iam.roles.list

      • iam.roles.undelete

      • iam.roles.update

      • iam.serviceAccounts.create

      • iam.serviceAccounts.delete

      • iam.serviceAccounts.getIamPolicy

      • iam.serviceAccounts.list

      • iam.serviceAccounts.setIamPolicy

      • iam.workloadIdentityPoolProviders.get

      • iam.workloadIdentityPools.delete

      • resourcemanager.projects.get

      • resourcemanager.projects.getIamPolicy

      • resourcemanager.projects.setIamPolicy

      • storage.buckets.create

      • storage.buckets.delete

      • storage.buckets.get

      • storage.buckets.getIamPolicy

      • storage.buckets.setIamPolicy

      • storage.objects.create

      • storage.objects.delete

      • storage.objects.list

步骤
  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实用程序创建GCP资源

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

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

先决条件

您必须:

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

步骤
  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工具处理所有CredentialsRequest对象,运行以下命令:

    $ ccoctl gcp create-all \
      --name=<name> \(1)
      --region=<gcp_region> \(2)
      --project=<gcp_project_id> \(3)
      --credentials-requests-dir=<path_to_credentials_requests_directory> (4)
    1 指定所有创建的GCP资源的用户定义名称,用于跟踪。
    2 指定将创建云资源的GCP区域。
    3 指定将创建云资源的GCP项目ID。
    4 指定包含用于创建GCP服务帐户的CredentialsRequest清单文件的目录。

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

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

    $ ls <path_to_ccoctl_output_dir>/manifests
    示例输出
    cluster-authentication-02-config.yaml
    openshift-cloud-controller-manager-gcp-ccm-cloud-credentials-credentials.yaml
    openshift-cloud-credential-operator-cloud-credential-operator-gcp-ro-creds-credentials.yaml
    openshift-cloud-network-config-controller-cloud-credentials-credentials.yaml
    openshift-cluster-api-capg-manager-bootstrap-credentials-credentials.yaml
    openshift-cluster-csi-drivers-gcp-pd-cloud-credentials-credentials.yaml
    openshift-image-registry-installer-cloud-credentials-credentials.yaml
    openshift-ingress-operator-cloud-credentials-credentials.yaml
    openshift-machine-api-gcp-cloud-credentials-credentials.yaml

    您可以通过查询GCP来验证IAM服务帐户是否已创建。有关更多信息,请参阅有关列出IAM服务帐户的GCP文档。

合并Cloud Credential Operator实用程序清单

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

先决条件
  • 您已配置了一个帐户,该帐户与托管您集群的云平台相关联。

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

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

步骤
  1. 将以下细粒度权限添加到安装程序使用的 GCP 帐户:

    必需的 GCP 权限
    • compute.machineTypes.list

    • compute.regions.list

    • compute.zones.list

    • dns.changes.create

    • dns.changes.get

    • dns.managedZones.create

    • dns.managedZones.delete

    • dns.managedZones.get

    • dns.managedZones.list

    • dns.networks.bindPrivateDNSZone

    • dns.resourceRecordSets.create

    • dns.resourceRecordSets.delete

    • dns.resourceRecordSets.list

  2. 如果您未在install-config.yaml配置文件中将credentialsMode参数设置为Manual,请按如下所示修改其值:

    配置文件片段示例
    apiVersion: v1
    baseDomain: example.com
    credentialsMode: Manual
    # ...
  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 .

使用GCP Marketplace产品

使用GCP Marketplace产品,您可以部署一个OpenShift Container Platform集群,该集群通过GCP按使用付费(按小时/按核心计费),同时仍然直接由Red Hat支持。

默认情况下,安装程序会下载并安装用于部署计算机的Red Hat Enterprise Linux CoreOS (RHCOS)镜像。要使用来自GCP Marketplace的RHCOS镜像部署OpenShift Container Platform集群,请修改install-config.yaml文件以引用GCP Marketplace产品的地址,从而覆盖默认行为。

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

步骤
  1. 编辑compute.platform.gcp.osImage参数以指定GCP Marketplace镜像的地址

    • project参数设置为redhat-marketplace-public

    • name参数设置为以下产品之一:

      OpenShift Container Platform

      redhat-coreos-ocp-413-x86-64-202305021736

      OpenShift Platform Plus

      redhat-coreos-opp-413-x86-64-202305021736

      OpenShift Kubernetes Engine

      redhat-coreos-oke-413-x86-64-202305021736

  2. 保存文件并在部署集群时引用它。

指定GCP Marketplace计算机器镜像的示例install-config.yaml文件
apiVersion: v1
baseDomain: example.com
controlPlane:
# ...
compute:
  platform:
    gcp:
      osImage:
        project: redhat-marketplace-public
        name: redhat-coreos-ocp-413-x86-64-202305021736
# ...

部署集群

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

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

先决条件
  • 您已配置了一个帐户,该帐户与托管您集群的云平台相关联。

  • 您拥有OpenShift Container Platform安装程序和集群的pull secret。

  • 您已验证主机上的云提供商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示一条错误消息,其中显示缺少的权限。

步骤
  1. 删除任何现有的GCP凭据,这些凭据不使用您为集群配置的GCP帐户的服务帐户密钥,并且存储在以下位置:

    • GOOGLE_CREDENTIALSGOOGLE_CLOUD_KEYFILE_JSONGCLOUD_KEYFILE_JSON环境变量

    • ~/.gcp/osServiceAccount.json文件

    • gcloud cli默认凭据

  2. 切换到包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ (1)
        --log-level=info (2)
    
    1 对于<installation_directory>,请指定您自定义的./install-config.yaml文件的地址。
    2 要查看不同的安装详细信息,请指定warndebugerror代替info
  3. 可选:您可以减少用于安装集群的服务帐户的权限数量。

    • 如果您为服务帐户分配了Owner角色,则可以删除该角色并将其替换为Viewer角色。

    • 如果您包含了Service Account Key Admin角色,则可以将其删除。

验证

集群部署成功完成时:

  • 终端将显示访问集群的方向,包括指向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 小时内使用,因为集群安装后 16 到 22 小时会进行 24 小时证书轮换。在 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 控制台

OpenShift Container Platform 的遥测访问

在 OpenShift Container Platform 4.17 中,默认运行的遥测服务用于提供有关集群运行状况和更新成功情况的指标,需要访问互联网。如果您的集群连接到互联网,则遥测会自动运行,并且您的集群会注册到OpenShift 集群管理器

确认您的OpenShift 集群管理器清单正确后(由遥测自动维护或使用 OpenShift 集群管理器手动维护),使用订阅监控来跟踪您在帐户或多集群级别的 OpenShift Container Platform 订阅。

其他资源

后续步骤