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>
    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: "*"

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

    $ oc create namespace <component_namespace>
  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

    其中:

    • <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 {}

验证

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.