1.2. AWS Load Balancer Operator のインストール
OpenShift CLI (oc) を使用して AWS Load Balancer Operator をインストールできます。環境変数を活用するため、環境のセットアップで AWS Load Balancer Operator をインストール した際と同じターミナルセッションを使用します。
手順
AWS Load Balancer Operator 用にクラスター内に新しいプロジェクトを作成します。
$ oc new-project aws-load-balancer-operatorAWS Load Balancer Operator 用の AWS IAM ポリシーを作成します。
適切な IAM ポリシーをダウンロードします。
$ curl -o ${SCRATCH}/operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/refs/heads/main/hack/operator-permission-policy.jsonOperator の権限ポリシーを作成します。
$ aws iam create-policy \ --policy-name aws-load-balancer-operator-policy \ --policy-document file://${SCRATCH}/operator-permission-policy.json \ --region ${REGION}出力内の Operator ポリシー ARN をメモします。このプロセスの残りの部分では、これを
$OPERATOR_POLICY_ARNと呼びます。
AWS Load Balancer Operator の AWS IAM ロールを作成します。
Operator ロールの信頼ポリシーを作成します。
$ cat <<EOF > "${SCRATCH}/operator-trust-policy.json" { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "StringEquals" : { "${OIDC_ENDPOINT}:sub": ["system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager", "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-cluster"] } }, "Principal": { "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_ENDPOINT}" }, "Action": "sts:AssumeRoleWithWebIdentity" } ] } EOF信頼ポリシーを使用して Operator ロールを作成します。
$ aws iam create-role --role-name "${CLUSTER_NAME}-alb-operator" \ --assume-role-policy-document "file://${SCRATCH}/operator-trust-policy.json"出力内の Operator ロール ARN をメモします。このプロセスの残りの部分では、これを
$OPERATOR_ROLE_ARNと呼びます。Operator ロールとポリシーを関連付けます。
$ aws iam attach-role-policy --role-name "${CLUSTER_NAME}-alb-operator" \ --policy-arn $OPERATOR_POLICY_ARN
OperatorGroupとSubscriptionを作成して、AWS Load Balancer Operator をインストールします。$ 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: [] --- 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: "${OPERATOR_ROLE_ARN}" EOFAWS Load Balancer Controller の AWS IAM ポリシーを作成します。
適切な IAM ポリシーをダウンロードします。
$ curl -o ${SCRATCH}/controller-permission-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.12.0/docs/install/iam_policy.jsonController の権限ポリシーを作成します。
$ aws iam create-policy \ --region ${REGION} \ --policy-name aws-load-balancer-controller-policy \ --policy-document file://${SCRATCH}/controller-permission-policy.json出力内の Controller ポリシー ARN をメモします。このプロセスの残りの部分では、これを
$CONTROLLER_POLICY_ARNと呼びます。
AWS Load Balancer Controller 用の AWS IAM ロールを作成します。
Controller ロールの信頼ポリシーを作成します。
$ cat <<EOF > ${SCRATCH}/controller-trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_ENDPOINT}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_ENDPOINT}:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-cluster" } } } ] } EOF信頼ポリシーを使用して Controller ロールを作成します。
CONTROLLER_ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER_NAME}-albo-controller" \ --assume-role-policy-document "file://${SCRATCH}/controller-trust-policy.json" \ --query Role.Arn --output text) echo ${CONTROLLER_ROLE_ARN}出力内の Controller ロール ARN をメモします。このプロセスの残りの部分では、これを
$CONTROLLER_ROLE_ARNと呼びます。Controller のロールとポリシーを関連付けます。
$ aws iam attach-role-policy \ --role-name "${CLUSTER_NAME}-albo-controller" \ --policy-arn ${CONTROLLER_POLICY_ARN}
AWS Load Balancer Controller のインスタンスをデプロイします。
$ cat << EOF | oc apply -f - apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController metadata: name: cluster spec: credentialsRequestConfig: stsIAMRoleARN: ${CONTROLLER_ROLE_ARN} EOF注記ここでエラーが発生した場合は、少し待ってから再試行してください。エラーが発生するのは、Operator がまだインストールを完了していないためです。
Operator Pod と Controller Pod の両方が実行されていることを確認します。
$ oc -n aws-load-balancer-operator get pods次のような出力が表示されない場合は、しばらく待ってから再試行してください。
出力例
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s