9.9. AWS Security Token Service を使用した cert-manager Operator for Red Hat OpenShift の認証


AWS Security Token Service (STS )クラスター上で、cert-manager Operator for Red Hat OpenShift を認証できます。ccoctl バイナリーを使用して、cert-manager Operator for Red Hat OpenShift のクラウド認証情報を設定できます。

9.9.1. AWS Security Token Service クラスター用 Red Hat OpenShift cert-manager Operator のクラウド認証情報の設定

クラウド認証情報を使用して、AWS Security Token Service (STS) クラスター上にある cert-manager Operator for Red Hat OpenShift のクラウド認証情報を設定するには、クラウド認証情報を手動で生成し、ccoctl バイナリーを使用してクラスターに適用する必要があります。

前提条件

  • ccoctl バイナリーを抽出して準備している。
  • Cloud Credential Operator を手動モードで使用し、AWS STS で OpenShift Container Platform クラスターを設定している。

手順

  1. 次のコマンドを実行して、CredentialsRequest リソース YAML ファイルを保存するディレクトリーを作成します。

    $ mkdir credentials-request
  2. 次の yaml を適用して、sample-credential-request.yaml などの CredentialsRequest リソース YAML ファイルを credentials-request ディレクトリーの下に作成します。

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cert-manager
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - action:
          - "route53:GetChange"
          effect: Allow
          resource: "arn:aws:route53:::change/*"
        - action:
          - "route53:ChangeResourceRecordSets"
          - "route53:ListResourceRecordSets"
          effect: Allow
          resource: "arn:aws:route53:::hostedzone/*"
        - action:
          - "route53:ListHostedZonesByName"
          effect: Allow
          resource: "*"
      secretRef:
        name: aws-creds
        namespace: cert-manager
      serviceAccountNames:
      - cert-manager
  3. 次のコマンドを実行し、ccoctl ツールを使用して CredentialsRequest オブジェクトを処理します。

    $ ccoctl aws create-iam-roles \
        --name <user_defined_name> --region=<aws_region> \
        --credentials-requests-dir=<path_to_credrequests_dir> \
        --identity-provider-arn <oidc_provider_arn> --output-dir=<path_to_output_dir>

    出力例

    2023/05/15 18:10:34 Role arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds created
    2023/05/15 18:10:34 Saved credentials configuration to: <path_to_output_dir>/manifests/cert-manager-aws-creds-credentials.yaml
    2023/05/15 18:10:35 Updated Role policy for Role <user_defined_name>-cert-manager-aws-creds

    次のステップで使用するために、出力から <aws_role_arn> をコピーします。例: "arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds"

  4. 次のコマンドを実行して、サービスアカウントに eks.amazonaws.com/role-arn="<aws_role_arn>" アノテーションを追加します。

    $ oc -n cert-manager annotate serviceaccount cert-manager eks.amazonaws.com/role-arn="<aws_role_arn>"
  5. 新規 Pod を作成するには、以下のコマンドを実行して既存の cert-manager コントローラー Pod を削除します。

    $ oc delete pods -l app.kubernetes.io/name=cert-manager -n cert-manager

    AWS 認証情報は、1 分以内に新規 cert-manager コントローラー Pod に適用されます。

検証

  1. 次のコマンドを実行して、更新された cert-manager コントローラー Pod の名前を取得します。

    $ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager

    出力例

    NAME                          READY   STATUS    RESTARTS   AGE
    cert-manager-bd7fbb9fc-wvbbt  1/1     Running   0          39s

  2. 次のコマンドを実行して、AWS 認証情報が更新されていることを確認します。

    $ oc set env -n cert-manager po/<cert_manager_controller_pod_name> --list

    出力例

    # pods/cert-manager-57f9555c54-vbcpg, container cert-manager-controller
    # POD_NAMESPACE from field path metadata.namespace
    AWS_ROLE_ARN=XXXXXXXXXXXX
    AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

9.9.2. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.