×

在 OpenShift Container Platform 4.17 版本中,您可以安装一个自定义集群,该集群安装程序会在 Amazon Web Services (AWS) 上配置基础架构。要自定义安装,请在安装集群之前修改install-config.yaml文件中的参数。

OpenShift Container Platform 安装配置的范围故意很窄。它旨在简化操作并确保成功。安装完成后,您可以完成更多 OpenShift Container Platform 配置任务。

先决条件

获取 AWS Marketplace 镜像

如果您使用 AWS Marketplace 镜像部署 OpenShift Container Platform 集群,则必须首先通过 AWS 订阅。订阅优惠将为您提供安装程序用于部署计算节点的 AMI ID。

先决条件
  • 您拥有一个 AWS 账户来购买优惠。此账户不必与用于安装集群的账户相同。

步骤
  1. 完成来自AWS Marketplace的 OpenShift Container Platform 订阅。

  2. 记录您特定 AWS 区域的 AMI ID。作为安装过程的一部分,您必须在此 AMI ID 值部署集群之前使用此值更新install-config.yaml文件。

    包含 AWS Marketplace 计算节点的install-config.yaml文件示例
    apiVersion: v1
    baseDomain: example.com
    compute:
    - hyperthreading: Enabled
      name: worker
      platform:
        aws:
          amiID: ami-06c4d345f7c207239 (1)
          type: m5.4xlarge
      replicas: 3
    metadata:
      name: test-cluster
    platform:
      aws:
        region: us-east-2 (2)
    sshKey: ssh-ed25519 AAAA...
    pullSecret: '{"auths": ...}'
    1 来自 AWS Marketplace 订阅的 AMI ID。
    2 您的 AMI ID 与特定的 AWS 区域相关联。创建安装配置文件时,请确保选择与配置订阅时指定的 AWS 区域相同的区域。

创建安装配置文件

您可以自定义在 Amazon Web Services (AWS) 上安装的 OpenShift Container Platform 集群。

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

步骤
  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. 选择**AWS**作为目标平台。

      3. 如果您计算机上没有存储 Amazon Web Services (AWS) 配置文件,请输入您配置为运行安装程序的用户 的 AWS 访问密钥 ID 和秘密访问密钥。

      4. 选择要部署集群的 AWS 区域。

      5. 选择您为集群配置的 Route 53 服务的基础域名。

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

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

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

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

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

其他资源

集群安装的最低资源要求

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

表 1. 最低资源要求
机器 操作系统 vCPU [1] 虚拟 RAM 存储 每秒输入/输出次数 (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 计算机器,则您负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁以及完成所有其他必需的任务。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 架构

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

其他资源

AWS 的测试实例类型

以下 Amazon Web Services (AWS) 实例类型已通过 OpenShift Container Platform 测试。

将以下图表中包含的机器类型用于您的 AWS 实例。如果您使用图表中未列出的实例类型,请确保您使用的实例大小与“集群安装的最低资源要求”部分中列出的最低资源要求相匹配。

基于 64 位 x86 架构的机器类型
  • c4.*

  • c5.*

  • c5a.*

  • i3.*

  • m4.*

  • m5.*

  • m5a.*

  • m6a.*

  • m6i.*

  • r4.*

  • r5.*

  • r5a.*

  • r6i.*

  • t3.*

  • t3a.*

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

以下 Amazon Web Services (AWS) 64 位 ARM 实例类型已通过 OpenShift Container Platform 测试。

将以下图表中包含的机器类型用于您的 AWS ARM 实例。如果您使用图表中未列出的实例类型,请确保您使用的实例大小与“集群安装的最低资源要求”中列出的最低资源要求相匹配。

基于 64 位 ARM 架构的机器类型
  • c6g.*

  • c7g.*

  • m6g.*

  • m7g.*

  • r8g.*

AWS 的自定义 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:
    aws:
      zones:
      - us-west-2a
      - us-west-2b
      rootVolume:
        iops: 4000
        size: 500
        type: io1 (6)
      metadataService:
        authentication: Optional (7)
      type: m6i.xlarge
  replicas: 3
compute: (3)
- hyperthreading: Enabled (5)
  name: worker
  platform:
    aws:
      rootVolume:
        iops: 2000
        size: 500
        type: io1 (6)
      metadataService:
        authentication: Optional (7)
      type: c5.4xlarge
      zones:
      - us-west-2c
  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 (8)
  serviceNetwork:
  - 172.30.0.0/16
platform:
  aws:
    region: us-west-2 (1)
    propagateUserTags: true (3)
    userTags:
      adminContact: jdoe
      costCenter: 7536
    amiID: ami-0c5d3e03c0ab9b19a (9)
    serviceEndpoints: (10)
      - name: ec2
        url: https://vpce-id.ec2.us-west-2.vpce.amazonaws.com
fips: false (11)
sshKey: ssh-ed25519 AAAA... (12)
pullSecret: '{"auths": ...}' (1)
1 必需。安装程序会提示您输入此值。
2 可选:添加此参数以强制云凭据操作员 (CCO) 使用指定的模式。默认情况下,CCO 使用kube-system命名空间中的 root 凭据来动态尝试确定凭据的功能。有关 CCO 模式的详细信息,请参阅《身份验证和授权》指南中的“关于云凭据操作员”部分。
3 如果您不提供这些参数和值,安装程序将提供默认值。
4 controlPlane部分是单个映射,但compute部分是一系列映射。为了满足不同数据结构的要求,compute部分的第一行必须以连字符-开头,而controlPlane部分的第一行则不能。仅使用一个控制平面池。
5 是否启用或禁用同时多线程或超线程。默认情况下,启用同时多线程以提高机器内核的性能。您可以通过将参数值设置为Disabled来禁用它。如果您在某些集群机器中禁用同时多线程,则必须在所有集群机器中禁用它。

如果您禁用同时多线程,请确保您的容量规划考虑了机器性能的大幅下降。如果您禁用同时多线程,请为您的机器使用更大的实例类型,例如m4.2xlargem5.2xlarge

6 要为 etcd 配置更快的存储,特别是对于大型集群,请将存储类型设置为io1并将iops设置为2000
7 是否需要Amazon EC2 实例元数据服务 v2 (IMDSv2)。要需要 IMDSv2,请将参数值设置为Required。要允许使用 IMDSv1 和 IMDSv2,请将参数值设置为Optional。如果未指定值,则允许使用 IMDSv1 和 IMDSv2。

集群安装期间为控制平面机器设置的 IMDS 配置只能使用 AWS CLI 修改。计算机器的 IMDS 配置可以使用计算机器集修改。

8 要安装的集群网络插件。默认值OVNKubernetes 是唯一支持的值。
9 用于引导集群机器的 AMI ID。如果设置,AMI 必须属于与集群相同的区域。
10 AWS 服务端点。安装到未知 AWS 区域时需要自定义端点。端点 URL 必须使用https协议,并且主机必须信任证书。
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: ec2.<aws_region>.amazonaws.com,elasticloadbalancing.<aws_region>.amazonaws.com,s3.<aws_region>.amazonaws.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。使用*绕过所有目标的代理。如果您已将 Amazon EC2Elastic Load BalancingS3 VPC 端点添加到您的 VPC,则必须将这些端点添加到noProxy字段。
    4 如果提供,安装程序将生成一个名为user-ca-bundle的 config map,位于openshift-config命名空间中,其中包含代理 HTTPS 连接所需的一个或多个附加 CA 证书。然后,集群网络操作员将创建一个trusted-ca-bundle config map,将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,并且此 config map 在Proxy对象的trustedCA字段中引用。除非代理的身份证书由 RHCOS 信任捆绑包中的授权机构签名,否则需要additionalTrustBundle字段。
    5 可选:确定Proxy对象的配置以在trustedCA字段中引用user-ca-bundle config map 的策略。允许的值为ProxyonlyAlways。使用Proxyonly仅在配置http/https代理时引用user-ca-bundle config map。使用Always始终引用user-ca-bundle config map。默认值为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对象,并且无法创建其他代理。

存储 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: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - iam:GetUser
          - iam:GetUserPolicy
          - iam:ListAccessKeys
          resource: "*"
      ...
  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: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - s3:CreateBucket
          - s3:DeleteBucket
          resource: "*"
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    Secret 对象示例
    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      aws_access_key_id: <base64_encoded_aws_access_key_id>
      aws_secret_access_key: <base64_encoded_aws_secret_access_key>

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

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

要安装配置为使用 AWS 安全令牌服务 (STS) 的集群,必须配置 CCO 实用程序并为集群创建所需的 AWS 资源。

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

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

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

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

  • 您已安装 OpenShift CLI (oc)。

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

    所需的 AWS 权限

    所需的 iam 权限

    • iam:CreateOpenIDConnectProvider

    • iam:CreateRole

    • iam:DeleteOpenIDConnectProvider

    • iam:DeleteRole

    • iam:DeleteRolePolicy

    • iam:GetOpenIDConnectProvider

    • iam:GetRole

    • iam:GetUser

    • iam:ListOpenIDConnectProviders

    • iam:ListRolePolicies

    • iam:ListRoles

    • iam:PutRolePolicy

    • iam:TagOpenIDConnectProvider

    • iam:TagRole

    所需的 s3 权限

    • s3:CreateBucket

    • s3:DeleteBucket

    • s3:DeleteObject

    • s3:GetBucketAcl

    • s3:GetBucketTagging

    • s3:GetObject

    • s3:GetObjectAcl

    • s3:GetObjectTagging

    • s3:ListBucket

    • s3:PutBucketAcl

    • s3:PutBucketPolicy

    • s3:PutBucketPublicAccessBlock

    • s3:PutBucketTagging

    • s3:PutObject

    • s3:PutObjectAcl

    • s3:PutObjectTagging

    所需的 cloudfront 权限

    • cloudfront:ListCloudFrontOriginAccessIdentities

    • cloudfront:ListDistributions

    • cloudfront:ListTagsForResource

    如果您计划将 OIDC 配置存储在通过公共 CloudFront 分发 URL 由 IAM 身份提供商访问的私有 S3 存储桶中,则运行 ccoctl 实用程序的 AWS 帐户需要以下附加权限:

    使用 CloudFront 的私有 S3 存储桶的其他权限
    • cloudfront:CreateCloudFrontOriginAccessIdentity

    • cloudfront:CreateDistribution

    • cloudfront:DeleteCloudFrontOriginAccessIdentity

    • cloudfront:DeleteDistribution

    • cloudfront:GetCloudFrontOriginAccessIdentity

    • cloudfront:GetCloudFrontOriginAccessIdentityConfig

    • cloudfront:GetDistribution

    • cloudfront:TagResource

    • cloudfront:UpdateDistribution

    这些附加权限支持在使用 ccoctl aws create-all 命令处理凭据请求时使用 --create-private-s3-bucket 选项。

步骤
  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.

使用云凭据操作员实用程序创建 AWS 资源

创建 AWS 资源时,您可以选择以下选项:

  • 您可以使用 ccoctl aws create-all 命令自动创建 AWS 资源。这是创建资源最快的方法。请参阅 使用单个命令创建 AWS 资源

  • 如果您需要在修改 AWS 资源之前查看 ccoctl 工具创建的 JSON 文件,或者 ccoctl 工具用于自动创建 AWS 资源的过程不符合您组织的要求,则可以分别创建 AWS 资源。请参阅 分别创建 AWS 资源

使用单个命令创建 AWS 资源

如果 ccoctl 工具用于自动创建 AWS 资源的过程符合您组织的要求,则可以使用 ccoctl aws create-all 命令自动创建 AWS 资源。

否则,您可以分别创建 AWS 资源。有关更多信息,请参阅“分别创建 AWS 资源”。

默认情况下,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 aws create-all \
      --name=<name> \(1)
      --region=<aws_region> \(2)
      --credentials-requests-dir=<path_to_credentials_requests_directory> \(3)
      --output-dir=<path_to_ccoctl_output_dir> \(4)
      --create-private-s3-bucket (5)
    1 指定用于标记为跟踪而创建的任何云资源的名称。
    2 指定将创建云资源的 AWS 区域。
    3 指定包含组件 CredentialsRequest 对象文件的目录。
    4 可选:指定您希望ccoctl实用程序创建对象的目录。默认情况下,该实用程序在运行命令的目录中创建对象。
    5 可选:默认情况下,ccoctl实用程序将OpenID Connect (OIDC) 配置文件存储在公共S3存储桶中,并使用S3 URL作为公共OIDC端点。要将OIDC配置存储在私有S3存储桶中,并通过公共CloudFront分发URL由IAM身份提供程序访问,请使用--create-private-s3-bucket参数。

    如果您的集群使用由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-credential-operator-cloud-credential-operator-iam-ro-creds-credentials.yaml
    openshift-cloud-network-config-controller-cloud-credentials-credentials.yaml
    openshift-cluster-api-capa-manager-bootstrap-credentials-credentials.yaml
    openshift-cluster-csi-drivers-ebs-cloud-credentials-credentials.yaml
    openshift-image-registry-installer-cloud-credentials-credentials.yaml
    openshift-ingress-operator-cloud-credentials-credentials.yaml
    openshift-machine-api-aws-cloud-credentials-credentials.yaml

    您可以通过查询AWS来验证IAM角色是否已创建。有关更多信息,请参阅AWS关于列出IAM角色的文档。

单独创建AWS资源

您可以使用ccoctl工具单独创建AWS资源。对于在不同用户或部门之间共享创建这些资源责任的组织,此选项可能很有用。

否则,您可以使用ccoctl aws create-all命令自动创建AWS资源。有关更多信息,请参阅“使用单个命令创建AWS资源”。

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

一些ccoctl命令会进行AWS API调用以创建或修改AWS资源。您可以使用--dry-run标志来避免进行API调用。使用此标志会在本地文件系统上创建JSON文件。您可以查看和修改JSON文件,然后使用--cli-input-json参数使用AWS CLI工具应用它们。

先决条件
  • 解压并准备ccoctl二进制文件。

步骤
  1. 运行以下命令生成用于为集群设置OpenID Connect提供程序的公钥和私钥文件:

    $ ccoctl aws create-key-pair
    示例输出
    2021/04/13 11:01:02 Generating RSA keypair
    2021/04/13 11:01:03 Writing private key to /<path_to_ccoctl_output_dir>/serviceaccount-signer.private
    2021/04/13 11:01:03 Writing public key to /<path_to_ccoctl_output_dir>/serviceaccount-signer.public
    2021/04/13 11:01:03 Copying signing key for use by installer

    其中serviceaccount-signer.privateserviceaccount-signer.public是生成的密钥文件。

    此命令还会在/<path_to_ccoctl_output_dir>/tls/bound-service-account-signing-key.key中创建一个集群在安装过程中需要的私钥。

  2. 运行以下命令在AWS上创建一个OpenID Connect身份提供程序和S3存储桶:

    $ ccoctl aws create-identity-provider \
      --name=<name> \(1)
      --region=<aws_region> \(2)
      --public-key-file=<path_to_ccoctl_output_dir>/serviceaccount-signer.public (3)
    1 <name>是用于标记为跟踪而创建的任何云资源的名称。
    2 <aws-region>是将创建云资源的AWS区域。
    3 <path_to_ccoctl_output_dir>ccoctl aws create-key-pair命令生成的公钥文件的路径。
    示例输出
    2021/04/13 11:16:09 Bucket <name>-oidc created
    2021/04/13 11:16:10 OpenID Connect discovery document in the S3 bucket <name>-oidc at .well-known/openid-configuration updated
    2021/04/13 11:16:10 Reading public key
    2021/04/13 11:16:10 JSON web key set (JWKS) in the S3 bucket <name>-oidc at keys.json updated
    2021/04/13 11:16:18 Identity Provider created with ARN: arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com

    其中openid-configuration是发现文档,keys.json是JSON Web密钥集文件。

    此命令还会在/<path_to_ccoctl_output_dir>/manifests/cluster-authentication-02-config.yaml中创建一个YAML配置文件。此文件设置集群生成的Service Account令牌的发行者URL字段,以便AWS IAM身份提供程序信任这些令牌。

  3. 为集群中的每个组件创建IAM角色。

    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 aws create-iam-roles \
        --name=<name> \
        --region=<aws_region> \
        --credentials-requests-dir=<path_to_credentials_requests_directory> \
        --identity-provider-arn=arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com

      对于使用替代IAM API端点(例如GovCloud)的AWS环境,您还必须使用--region参数指定您的区域。

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

      对于每个CredentialsRequest对象,ccoctl都会创建一个IAM角色,该角色具有与指定的OIDC身份提供程序绑定的信任策略,以及OpenShift Container Platform发行版镜像中每个CredentialsRequest对象中定义的权限策略。

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

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

    您可以通过查询AWS来验证IAM角色是否已创建。有关更多信息,请参阅AWS关于列出IAM角色的文档。

整合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. 如果您以前没有创建安装清单文件,请运行以下命令创建:

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

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

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

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

    $ cp -a /<path_to_ccoctl_output_dir>/tls .

部署集群

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

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

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

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

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

步骤
  1. 更改到包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ (1)
        --log-level=info (2)
    
    1 对于<installation_directory>,请指定您自定义的./install-config.yaml文件的位置。
    2 要查看不同的安装详细信息,请指定warndebugerror代替info
  2. 可选:从用于安装集群的IAM帐户中删除或禁用AdministratorAccess策略。

    只有在安装过程中才需要AdministratorAccess策略提供的提升的权限。

验证

当集群部署成功完成时:

  • 终端将显示访问集群的方向,包括指向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

使用 Web 控制台登录集群

OpenShift Container Platform 安装完成后,默认情况下会存在kubeadmin用户。您可以使用 OpenShift Container Platform Web 控制台以kubeadmin用户身份登录到您的集群。

先决条件
  • 您可以访问安装主机。

  • 您已完成集群安装,并且所有集群操作符都可用。

步骤
  1. 从安装主机上的kubeadmin-password文件中获取kubeadmin用户的密码

    $ cat <installation_directory>/auth/kubeadmin-password

    或者,您可以从安装主机上的<installation_directory>/.openshift_install.log日志文件中获取kubeadmin密码。

  2. 列出 OpenShift Container Platform Web 控制台路由

    $ oc get routes -n openshift-console | grep 'console-openshift'

    或者,您可以从安装主机上的<installation_directory>/.openshift_install.log日志文件中获取 OpenShift Container Platform 路由。

    示例输出
    console     console-openshift-console.apps.<cluster_name>.<base_domain>            console     https   reencrypt/Redirect   None
  3. 在 Web 浏览器中导航到前面命令输出中详细说明的路由,并以kubeadmin用户身份登录。

其他资源
  • 有关访问和了解 OpenShift Container Platform Web 控制台的更多详细信息,请参阅访问 Web 控制台

后续步骤