検索

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

download PDF

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

AWS Load Balancer Operator は、CredentialsRequest オブジェクトに依存して Operator と AWS Load Balancer Controller をブートストラップします。AWS Load Balancer Operator は、必要なシークレットが作成されて利用可能になるまで待機します。

21.4.1. AWS Load Balancer Operator 用の IAM ロールの作成

STS を使用するクラスターに AWS Load Balancer Operator を正常にインストールするには、追加の AWS アイデンティティーおよびアクセス管理 (IAM) ロールが必要です。この IAM ロールは、サブネットおよび Virtual Private Cloud (VPC) と対話するために必要です。AWS Load Balancer Operator は、自身をブートストラップするために IAM ロールを持つ CredentialsRequest オブジェクトを生成します。

IAM ロールは次の方法で作成できます。

環境が ccoctl コマンドをサポートしていない場合は、AWS CLI を使用します。

21.4.1.1. Cloud Credential Operator ユーティリティーを使用して AWS IAM ロールを作成する

Cloud Credential Operator ユーティリティー (ccoctl) を使用して、AWS Load Balancer Operator 用の AWS IAM ロールを作成できます。AWS IAM ロールは、サブネットおよび Virtual Private Cloud (VPC) と対話するために使用されます。

前提条件

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

手順

  1. 次のコマンドを実行して、CredentialsRequest カスタムリソース (CR) をダウンロードし、ディレクトリーに保存します。

    $ curl --create-dirs -o <credrequests-dir>/operator.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
  2. ccoctl ユーティリティーを使用して次のコマンドを実行し、AWS IAM ロールを作成します。

    $ ccoctl aws create-iam-roles \
        --name <name> \
        --region=<aws_region> \
        --credentials-requests-dir=<credrequests-dir> \
        --identity-provider-arn <oidc-arn>

    出力例

    2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator created 1
    2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credrequests-dir>/manifests/aws-load-balancer-operator-aws-load-balancer-operator-credentials.yaml
    2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-operator created

    1
    AWS IAM ロールの Amazon Resource Name (ARN) をメモします。
    注記

    AWS IAM ロール名の長さは 12 文字以下にする必要があります。

21.4.1.2. AWS CLI を使用して AWS IAM ロールを作成する

AWS コマンドラインインターフェイスを使用して、AWS Load Balancer Operator 用の IAM ロールを作成できます。IAM ロールは、サブネットおよび Virtual Private Cloud (VPC) と対話するために使用されます。

前提条件

  • AWS コマンドラインインターフェイス (aws) にアクセスできる。

手順

  1. 次のコマンドを実行して、アイデンティティープロバイダーを使用して信頼ポリシーファイルを生成します。

    $ cat <<EOF > albo-operator-trust-policy.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Federated": "arn:aws:iam::777777777777:oidc-provider/<oidc-provider-id>" 1
                },
                "Action": "sts:AssumeRoleWithWebIdentity",
                "Condition": {
                    "StringEquals": {
                        "<oidc-provider-id>:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager" 2
                    }
                }
            }
        ]
    }
    EOF
    1
    アイデンティティープロバイダーの Amazon Resource Name (ARN) を指定します。
    2
    AWS Load Balancer Operator のサービスアカウントを指定します。
  2. 次のコマンドを実行して、生成された信頼ポリシーを使用して IAM ロールを作成します。

    $ aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trust-policy.json

    出力例

    ROLE	arn:aws:iam::777777777777:role/albo-operator	2023-08-02T12:13:22Z 1
    ASSUMEROLEPOLICYDOCUMENT	2012-10-17
    STATEMENT	sts:AssumeRoleWithWebIdentity	Allow
    STRINGEQUALS	system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-manager
    PRINCIPAL	arn:aws:iam:777777777777:oidc-provider/<oidc-provider-id>

    1
    作成した IAM ロールの ARN をメモします。
  3. 次のコマンドを実行して、AWS Load Balancer Operator の権限ポリシーをダウンロードします。

    $ curl -o albo-operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-permission-policy.json
  4. 次のコマンドを実行して、AWS Load Balancer Controller の権限ポリシーを IAM ロールに割り当てます。

    $ aws iam put-role-policy --role-name albo-operator --policy-name perms-policy-albo-operator --policy-document file://albo-operator-permission-policy.json

21.4.2. AWS Load Balancer Operator 用の ARN ロールの設定

AWS Load Balancer Operator 用の Amazon Resource Name (ARN) ロールを環境変数として設定できます。CLI を使用して ARN ロールを設定できます。

前提条件

  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次のコマンドを実行して、aws-load-balancer-operator プロジェクトを作成します。

    $ oc new-project aws-load-balancer-operator
  2. 以下のコマンドを実行して OperatorGroup オブジェクトを作成します。

    $ cat <<EOF | oc apply -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: aws-load-balancer-operator
      namespace: aws-load-balancer-operator
    spec:
      targetNamespaces: []
    EOF
  3. 以下のコマンドを実行して Subscription オブジェクトを作成します。

    $ cat <<EOF | oc apply -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: aws-load-balancer-operator
      namespace: aws-load-balancer-operator
    spec:
      channel: stable-v1
      name: aws-load-balancer-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      config:
        env:
        - name: ROLEARN
          value: "<role-arn>" 1
    EOF
    1
    AWS Load Balancer Operator の AWS 認証情報をプロビジョニングするために CredentialsRequest で使用する ARN ロールを指定します。
    注記

    AWS Load Balancer Operator は、シークレットが作成されるまで待機してから、Available ステータスに移行します。

21.4.3. AWS Load Balancer Controller 用の IAM ロールの作成

AWS Load Balancer Controller の CredentialsRequest オブジェクトは、手動でプロビジョニングした IAM ロールを使用して設定する必要があります。

IAM ロールは次の方法で作成できます。

環境が ccoctl コマンドをサポートしていない場合は、AWS CLI を使用します。

21.4.3.1. Cloud Credential Operator ユーティリティーを使用してコントローラー用の AWS IAM ロールを作成する

Cloud Credential Operator ユーティリティー (ccoctl) を使用して、AWS Load Balancer Controller 用の AWS IAM ロールを作成できます。AWS IAM ロールは、サブネットおよび Virtual Private Cloud (VPC) と対話するために使用されます。

前提条件

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

手順

  1. 次のコマンドを実行して、CredentialsRequest カスタムリソース (CR) をダウンロードし、ディレクトリーに保存します。

    $ curl --create-dirs -o <credrequests-dir>/controller.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
  2. ccoctl ユーティリティーを使用して次のコマンドを実行し、AWS IAM ロールを作成します。

    $ ccoctl aws create-iam-roles \
        --name <name> \
        --region=<aws_region> \
        --credentials-requests-dir=<credrequests-dir> \
        --identity-provider-arn <oidc-arn>

    出力例

    2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller created 1
    2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credrequests-dir>/manifests/aws-load-balancer-operator-aws-load-balancer-controller-credentials.yaml
    2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-controller created

    1
    AWS IAM ロールの Amazon Resource Name (ARN) をメモします。
    注記

    AWS IAM ロール名の長さは 12 文字以下にする必要があります。

21.4.3.2. AWS CLI を使用してコントローラー用の AWS IAM ロールを作成する

AWS コマンドラインインターフェイスを使用して、AWS Load Balancer Controller 用の AWS IAM ロールを作成できます。AWS IAM ロールは、サブネットおよび Virtual Private Cloud (VPC) と対話するために使用されます。

前提条件

  • AWS コマンドラインインターフェイス (aws) にアクセスできる。

手順

  1. 次のコマンドを実行して、アイデンティティプロバイダーを使用して信頼ポリシーファイルを生成します。

    $ cat <<EOF > albo-controller-trust-policy.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Federated": "arn:aws:iam::777777777777:oidc-provider/<oidc-provider-id>" 1
                },
                "Action": "sts:AssumeRoleWithWebIdentity",
                "Condition": {
                    "StringEquals": {
                        "<oidc-provider-id>:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-cluster" 2
                    }
                }
            }
        ]
    }
    EOF
    1
    アイデンティティープロバイダーの Amazon Resource Name (ARN) を指定します。
    2
    AWS Load Balancer Controller のサービスアカウントを指定します。
  2. 次のコマンドを実行して、生成された信頼ポリシーを使用して AWS IAM ロールを作成します。

    $ aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trust-policy.json

    出力例

    ROLE	arn:aws:iam::777777777777:role/albo-controller	2023-08-02T12:13:22Z 1
    ASSUMEROLEPOLICYDOCUMENT	2012-10-17
    STATEMENT	sts:AssumeRoleWithWebIdentity	Allow
    STRINGEQUALS	system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-cluster
    PRINCIPAL	arn:aws:iam:777777777777:oidc-provider/<oidc-provider-id>

    1
    AWS IAM ロールの ARN をメモします。
  3. 次のコマンドを実行して、AWS Load Balancer Controller の権限ポリシーをダウンロードします。

    $ curl -o albo-controller-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/assets/iam-policy.json
  4. 次のコマンドを実行して、AWS Load Balancer Controller の権限ポリシーを AWS IAM ロールに割り当てます。

    $ aws iam put-role-policy --role-name albo-controller --policy-name perms-policy-albo-controller --policy-document file://albo-controller-permission-policy.json
  5. AWSLoadBalancerController オブジェクトを定義する YAML ファイルを作成します。

    sample-aws-lb-manual-creds.yaml ファイルの例:

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController 1
    metadata:
      name: cluster 2
    spec:
      credentialsRequestConfig:
        stsIAMRoleARN: <role-arn> 3

    1
    AWSLoadBalancerController オブジェクトを定義します。
    2
    AWS Load Balancer Controller 名を定義します。このインスタンス名は、関連するすべてのリソースの接尾辞として使用されます。
    3
    ARN ロールを指定します。CredentialsRequest オブジェクトは、この ARN ロールを使用して AWS 認証情報をプロビジョニングします。

21.4.4. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.