10.4. AWS STS を使用するための Red Hat OpenShift Service on AWS での Red Hat Quay の設定
OpenShift Service on AWS で AWS STS を使用するように Red Hat Quay を設定するには、以下の手順に従います。
前提条件
- IAM ユーザーを作成した。
- s3 Role ARN を作成した。
- Role ARN を使用する Custom Trust Policy を作成した。
手順
次のコマンドを入力して、
serviceAccountIssuer
リソースを取得します。oc get authentication.config.openshift.io cluster -o json | jq -r .spec.serviceAccountIssuer | sed -e "s/^https:\/\///"
$ oc get authentication.config.openshift.io cluster -o json | jq -r .spec.serviceAccountIssuer | sed -e "s/^https:\/\///"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
oidc.op1.openshiftapps.com/123456
oidc.op1.openshiftapps.com/123456
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Amazon Web Services (AWS) コンソールの Identity and Access Management (IAM) コンソールで、次の手順を実行します。
- Roles をクリックします。
-
AWS STS で使用するロールの名前 (例:
example-role
) をクリックします。 Trust relationships タブをクリックすると、「S3 ロールの作成」で作成された JSON ポリシーが表示されます。JSON ポリシーを次のように更新します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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>
に更新します。
- User ARN が正しく設定されていることを確認し、Next をクリックします。
- Add permissions ページで、AmazonS3FullAccess を選択し、Next をクリックします。
- Name, review, and create ページで、ロールの名前と説明を入力し、設定を確認し、必要に応じてタグを追加します。次に、Create Role をクリックします。
Roles ページで、新しいロールをクリックし、
Role ARN
リソースを保存します。以下に例を示します。arn:aws:iam::123456:role/test_s3_access
arn:aws:iam::123456:role/test_s3_access
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Quay Web コンソールで、以下を実行します。
-
Operators
Installed Operators をクリックします。 - Red Hat Quay をクリックします。
- Quay Registry をクリックし、Red Hat Quay レジストリーの名前をクリックします。
- Config Bundle Secret の下で、レジストリー設定バンドルの名前 (例: quay-registry-config-bundle-12345) をクリックします。
- 設定バンドルのページで、Actions をクリックしてドロップダウンメニューを表示します。次に、Edit Secret をクリックします。
config.yaml
ファイルのDISTRIBUTED_STORAGE_CONFIG
フィールドを次の情報で更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Operators
-
Save をクリックします。
QuayRegistry
カスタムリソース (CR) が自動的に再起動します。 Pod を実行するサービスアカウント (SA) に、EKS 設定値を使用してアノテーションを付けます。以下に例を示します。
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"
$ 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 Copied! Toggle word wrap Toggle overflow
検証
リポジトリーにプッシュされるサンプルイメージ (例:
busybox
) にタグを付けます。以下に例を示します。podman tag docker.io/library/busybox <quay-server.example.com>/<organization_name>/busybox:test
$ podman tag docker.io/library/busybox <quay-server.example.com>/<organization_name>/busybox:test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、サンプルイメージをプッシュします。
podman push <quay-server.example.com>/<organization_name>/busybox:test
$ podman push <quay-server.example.com>/<organization_name>/busybox:test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Red Hat Quay registry
Tags でイメージをプッシュした Organization に移動して、プッシュが成功したことを確認します。 - Amazon Web Services (AWS) コンソールに移動し、s3 バケットを探します。
- s3 バケットの名前をクリックします。
- Objects ページで、datastorage/ をクリックします。
datastorage/ ページには、次のリソースが表示されます。
- sha256/
uploads/
これらのリソースは、プッシュが成功し、AWS STS が適切に設定されていることを示しています。