10.4. 在 Red Hat OpenShift Service on AWS 上配置 Red Hat Quay 以使用 AWS STS


使用以下步骤将 Red Hat Quay 配置为在 Red Hat OpenShift Service on AWS 平台上使用 AWS STS。

先决条件

  • 您已创建了 IAM 用户。
  • 您已创建了 s3 角色 ARN。
  • 您已创建了使用 Role ARN 的自定义 信任策略。

流程

  1. 输入以下命令来获取 serviceAccountIssuer 资源:

    $ oc get authentication.config.openshift.io cluster -o json | jq -r .spec.serviceAccountIssuer | sed -e "s/^https:\/\///"
    Copy to Clipboard Toggle word wrap

    输出示例

    oidc.op1.openshiftapps.com/123456
    Copy to Clipboard Toggle word wrap

  2. 在 Amazon Web Services (AWS)控制台的 Identity and Access Management (IAM)控制台中:

    1. 单击 Roles
    2. 点要用于 AWS STS 的 Role 名称,如 example-role
    3. 单击 Trust relationships 选项卡,其中显示"创建 S3 角色"期间创建的 JSON 策略。更新 JSON 策略,如下所示:

      {
      	"Version": "2012-10-17",
      	"Statement": [
          	{
              	"Sid": "Statement1",
              	"Effect": "Allow",
              	"Principal": {
                  	"Federated": "arn:aws:iam::123456:oidc-provider/oidc.op1.openshiftapps.com/123456" 
      1
      
              	},
              	"Action": "sts:AssumeRoleWithWebIdentity", 
      2
      
              	"Condition": {
                  	"StringEquals": {
                      	"oidc.op1.openshiftapps.com/123456:sub": "system:serviceaccount:quay:registry-quay-app" 
      3
      
                  	}
              	}
          	}
      	]
      }
      Copy to Clipboard Toggle word wrap
      1
      将 JSON 策略的 Principal 参数更新为 Federated:<your_user_ARN>:<serviceAccountIssuer_domain_path>
      2
      将 JSON 策略的 Action 参数更新为 sts:AssumeRoleWithWebIdentity
      3
      将 JSON 策略的 Condition 参数更新为 StringEquals": "<serviceAccountIssuer>:sub": "system:serviceAccount:<quay_namespace>:<quay_registry_using_serviceAccount>
    4. 验证您的用户 ARN 是否已正确配置,然后点 Next
    5. Add permissions 页面中,选择 AmazonS3FullAccess,然后单击 Next
    6. Name, review, and create 页面上,为您的角色提供一个名称、描述、验证您的配置,添加任何可选标签。然后,单击 Create Role
  3. Roles 页面中,点新角色并存储 Role ARN 资源。例如:

    arn:aws:iam::123456:role/test_s3_access
    Copy to Clipboard Toggle word wrap
  4. 在 Red Hat Quay web 控制台中:

    1. Operators Installed Operators
    2. Red Hat Quay
    3. 单击 Quay Registry,然后单击 Red Hat Quay registry 的名称。
    4. Config Bundle Secret 下,单击 registry 配置捆绑包的名称,例如 quay-registry-config-bundle-12345
    5. 在配置捆绑包页面中,单击 Actions 以显示下拉菜单。然后点 Edit Secret
    6. 使用以下信息更新 config.yaml 文件的 DISTRIBUTED_STORAGE_CONFIG 字段:

      # ...
      DISTRIBUTED_STORAGE_CONFIG:
         default:
          - STSS3Storage
            s3_bucket: <s3_bucket_name> 
      1
      
            storage_path: <storage_path> 
      2
      
            s3_region: <region> 
      3
      
      # ...
      Copy to Clipboard Toggle word wrap
      1
      s3 存储桶的名称。
      2
      数据的存储路径。通常 /datastorage
      3
      Amazon Web Services 区域。默认为 us-east-1
  5. 点击 Save。您的 QuayRegistry 自定义资源(CR)会自动重启。
  6. 注解执行使用 EKS 配置值的 pod 的服务帐户(SA)。例如:

    $ oc annotate sa registry-quay-app "eks.amazonaws.com/role-arn"="arn:aws:iam::123456:role/test_s3_access" "eks.amazonaws.com/audience"="sts.amazonaws.com" "eks.amazonaws.com/sts-regional-endpoints"="true"
    Copy to Clipboard Toggle word wrap

验证

  1. 标记示例镜像,如 busybox,它将推送到存储库。例如:

    $ podman tag docker.io/library/busybox <quay-server.example.com>/<organization_name>/busybox:test
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来推送示例镜像:

    $ podman push <quay-server.example.com>/<organization_name>/busybox:test
    Copy to Clipboard Toggle word wrap
  3. 导航到您在 Red Hat Quay registry Tags 中将镜像推送到的 Organization,以验证推送是否成功。
  4. 进入到 Amazon Web Services (AWS)控制台,找到您的 s3 存储桶。
  5. 点 s3 存储桶的名称。
  6. Objects 页面上,单击 datastorage/
  7. datastorage/ 页面中,应该看到以下资源:

    • sha256/
    • 上传/

      这些资源表示推送成功,并且 AWS STS 已被正确配置。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat