20.4. AWS Security Token Service を使用したクラスター上の AWS Load Balancer Operator の準備


STS を使用するクラスターに AWS Load Balancer Operator をインストールできます。Operator をインストールする前に、次の手順に従ってクラスターを準備します。

AWS Load Balancer Operator は、CredentialsRequest オブジェクトに依存して Operator と AWS Load Balancer Controller をブートストラップします。AWS Load Balancer Operator は、必要なシークレットが作成されて利用可能になるまで待機します。Cloud Credential Operator は、STS クラスターでシークレットを自動的にプロビジョニングしません。ccoctl バイナリーを使用して、クレデンシャルシークレットを手動で設定する必要があります。

Cloud Credential Operator を使用して認証情報シークレットをプロビジョニングしたくない場合は、AWS ロードバランサーコントローラーのカスタムリソース (CR) で認証情報シークレットを指定することにより、STS クラスターで AWSLoadBalancerController インスタンスを設定できます。

20.4.1. Security Token Service クラスターでの AWS Load Balancer Operator のブートストラップ

前提条件

  • ccoctl バイナリーを抽出して準備する必要があります。

手順

  1. 次のコマンドを実行して、aws-load-balancer-operator namespace を作成します。

    $ oc create namespace aws-load-balancer-operator
  2. AWS Load Balancer Operator の CredentialsRequest カスタムリソース (CR) をダウンロードし、次のコマンドを実行して格納するディレクトリーを作成します。

    $ curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
  3. 次のコマンドを実行して、ccoctl ツールを使用して AWS Load Balancer Operator の CredentialsRequest オブジェクトを処理します。

    $ ccoctl aws create-iam-roles \
        --name <name> --region=<aws_region> \
        --credentials-requests-dir=<path-to-credrequests-dir> \
        --identity-provider-arn <oidc-arn>
  4. 次のコマンドを実行して、クラスターのマニフェストディレクトリーに生成されたシークレットを適用します。

    $ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
  5. 次のコマンドを実行して、AWS Load Balancer Operator の認証情報シークレットが作成されていることを確認します。

    $ oc -n aws-load-balancer-operator get secret aws-load-balancer-operator --template='{{index .data "credentials"}}' | base64 -d

    出力例

    [default]
    sts_regional_endpoints = regional
    role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-operator
    web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token

20.4.2. 管理された CredentialsRequest オブジェクトを使用して、Security Token Service クラスターで AWS Load Balancer Operator を設定する

前提条件

  • ccoctl バイナリーを抽出して準備する必要があります。

手順

  1. AWS Load Balancer Operator は、各 AWSLoadBalancerController カスタムリソース (CR) の openshift-cloud-credential-operator namespaceに CredentialsRequest オブジェクトを作成します。次のコマンドを実行すると、作成された CredentialsRequest オブジェクトを抽出してディレクトリーに保存できます。

    $ oc get credentialsrequest -n openshift-cloud-credential-operator  \
        aws-load-balancer-controller-<cr-name> -o yaml > <path-to-credrequests-dir>/cr.yaml 1
    1
    aws-load-balancer-controller-<cr-name> パラメーターは、AWS Load Balancer Operator によって作成された認証情報リクエスト名を指定します。cr-name は、AWS Load Balancer Controller インスタンスの名前を指定します。
  2. 次のコマンドを実行し、ccoctl ツールを使用して credrequests ディレクトリー内のすべての CredentialsRequest オブジェクトを処理します。

    $ ccoctl aws create-iam-roles \
        --name <name> --region=<aws_region> \
        --credentials-requests-dir=<path-to-credrequests-dir> \
        --identity-provider-arn <oidc-arn>
  3. 次のコマンドを実行して、マニフェストディレクトリーで生成されたシークレットをクラスターに適用します。

    $ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
  4. aws-load-balancer-controller Pod が作成されたことを確認します。

    $ oc -n aws-load-balancer-operator get pods
    NAME                                                            READY   STATUS    RESTARTS   AGE
    aws-load-balancer-controller-cluster-9b766d6-gg82c              1/1     Running   0          137m
    aws-load-balancer-operator-controller-manager-b55ff68cc-85jzg   2/2     Running   0          3h26m

20.4.3. 特定の認証情報を使用して Security Token Service クラスターで AWS Load Balancer Operator を設定する

認証情報シークレットは、AWS Load Balancer Controller カスタムリソース (CR) の spec.credentials フィールドを使用して指定できます。コントローラーの定義済みの CredentialsRequest オブジェクトを使用して、必要なロールを知ることができます。

前提条件

  • ccoctl バイナリーを抽出して準備する必要があります。

手順

  1. AWS Load Balancer Controller の CredentialsRequest カスタムリソース (CR) をダウンロードし、次のコマンドを実行して格納するディレクトリーを作成します。

    $ curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
  2. ccoctl ツールを使用して、コントローラーの CredentialsRequest オブジェクトを処理します。

    $ ccoctl aws create-iam-roles \
            --name <name> --region=<aws_region> \
            --credentials-requests-dir=<path-to-credrequests-dir> \
            --identity-provider-arn <oidc-arn>
  3. クラスターにシークレットを適用します。

    $ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
  4. コントローラーで使用するためにクレデンシャルシークレットが作成されていることを確認します。

    $ oc -n aws-load-balancer-operator get secret aws-load-balancer-controller-manual-cluster --template='{{index .data "credentials"}}' | base64 -d

    出力例

    [default]
        sts_regional_endpoints = regional
        role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-controller
        web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token

  5. AWSLoadBalancerController リソース YAML ファイル (例: sample-aws-lb-manual-creds.yaml) を次のように作成します。

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController 1
    metadata:
      name: cluster 2
    spec:
      credentials:
        name: <secret-name> 3
    1
    AWSLoadBalancerController リソースを定義します。
    2
    AWS Load Balancer コントローラーインスタンスの名前を定義します。このインスタンス名は、関連するすべてのリソースの接尾辞として追加されます。
    3
    コントローラーが使用する AWS 認証情報を含むシークレット名を指定します。

20.4.4. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.