18.5.3.2. 使用 Cloud Credential Operator 实用程序升级 AWS 资源


升级带有 AWS 安全令牌服务 (STS )手动模式配置的 OpenShift Container Platform 集群的过程,与单独为其创建 AWS 资源的集群上进行安装相似。

注意

默认情况下,ccoctl 在运行命令的目录中创建对象。要在其他目录中创建对象,请使用 --output-dir 标志。此流程使用 &lt ;path_to_ccoctl_output_dir > 来引用此目录。

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

先决条件

  • 获取您要升级到的版本的 OpenShift Container Platform 发行镜像。
  • 从发行镜像中提取并准备 ccoctl 二进制文件。

流程

  1. 从 OpenShift Container Platform 发行镜像中提取 CredentialsRequest 自定义资源 (CR) 列表:

    $ oc adm release extract \
    --credentials-requests \
    --cloud=aws \
    --to=<path_to_directory_with_list_of_credentials_requests>/credrequests \ 
    1
    
    --quay.io/<path_to>/ocp-release:<version>
    Copy to Clipboard Toggle word wrap
    1
    credrequests 是存储 CredentialsRequest 对象列表的目录。如果该目录不存在,此命令就会创建该目录。
  2. 对于发行镜像中的每个 CredentialsRequest CR,请确保集群中存在与 spec.secretRef.namespace 字段中的文本匹配的命名空间。此字段是保存凭证配置的生成的 secret 的位置。

    AWS CredentialsRequest 对象示例

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cloud-credential-operator-iam-ro
      namespace: openshift-cloud-credential-operator
    spec:
      secretRef:
        name: cloud-credential-operator-iam-ro-creds
        namespace: openshift-cloud-credential-operator 
    1
    
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - iam:GetUser
          - iam:GetUserPolicy
          - iam:ListAccessKeys
          resource: "*"
    Copy to Clipboard Toggle word wrap

    1
    此字段指示需要存在的命名空间来存放生成的 secret。
  3. 对于集群没有在 spec.secretRef.namespace 中指定的名称的命名空间的 CredentialsRequest CR,请创建命名空间:

    $ oc create namespace <component_namespace>
    Copy to Clipboard Toggle word wrap
  4. 使用 ccoctl 工具处理 credrequests 目录中的所有 CredentialsRequest 对象:

    $ ccoctl aws create-iam-roles \
    --name <name> \
    --region=<aws_region> \
    --credentials-requests-dir=<path_to_directory_with_list_of_credentials_requests>/credrequests \
    --identity-provider-arn arn:aws:iam::<aws_account_id>:oidc-provider/<name>-oidc.s3.<aws_region>.amazonaws.com
    Copy to Clipboard Toggle word wrap

    其中:

    • <name> 是用于标记为跟踪而创建的云资源的名称。对于升级,请使用与初始安装相同的值。
    • <aws_account_id& gt; 是 AWS 帐户 ID。
    • <aws_region > 是将要在其中创建云资源的 AWS 区域。
    注意

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

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

  5. 将 secret 应用到集群:

    $ ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
    Copy to Clipboard Toggle word wrap

验证

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat