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-operator为 AWS 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.json为 Operator 创建权限策略:
$ 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和订阅来安装 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}" EOF为 AWS 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.json为 Controller 创建权限策略:
$ 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 和 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