18.5.3.2. 使用 Cloud Credential Operator 实用程序升级 AWS 资源
升级带有 AWS 安全令牌服务 (STS )手动模式配置的 OpenShift Container Platform 集群的过程,与单独为其创建 AWS 资源的集群上进行安装相似。
默认情况下,ccoctl
在运行命令的目录中创建对象。要在其他目录中创建对象,请使用 --output-dir
标志。此流程使用 < ;path_to_ccoctl_output_dir
> 来引用此目录。
有些 ccoctl
命令会发出 AWS API 调用来创建或修改 AWS 资源。您可以使用 --dry-run
标志来避免发出 API 调用。使用此标志在本地文件系统中创建 JSON 文件。您可以检查和修改 JSON 文件,然后使用 --cli-input-json
参数通过 AWS CLI 工具应用它们。
先决条件
- 获取您要升级到的版本的 OpenShift Container Platform 发行镜像。
-
从发行镜像中提取并准备
ccoctl
二进制文件。
流程
从 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
对象列表的目录。如果该目录不存在,此命令就会创建该目录。
对于发行镜像中的每个
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。
对于集群没有在
spec.secretRef.namespace
中指定的名称的命名空间的CredentialsRequest
CR,请创建命名空间:$ oc create namespace <component_namespace>
使用
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
对象中定义的权限策略。-
将 secret 应用到集群:
$ ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
验证
您可以通过查询 AWS 来验证是否已创建 IAM 角色。如需更多信息,请参阅有关列出 IAM 角色的 AWS 文档。