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.json컨트롤러에 대한 권한 정책을 생성합니다.
$ aws iam create-policy \ --region ${REGION} \ --policy-name aws-load-balancer-controller-policy \ --policy-document file://${SCRATCH}/controller-permission-policy.json출력에서 컨트롤러 정책 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이라고 합니다.컨트롤러 역할 및 정책을 연결합니다.
$ aws iam attach-role-policy \ --role-name "${CLUSTER_NAME}-albo-controller" \ --policy-arn ${CONTROLLER_POLICY_ARN}
AWS Load Balancer 컨트롤러 인스턴스를 배포합니다.
$ cat << EOF | oc apply -f - apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController metadata: name: cluster spec: credentialsRequestConfig: stsIAMRoleARN: ${CONTROLLER_ROLE_ARN} EOF참고여기에서 오류가 발생하면 1분 정도 기다린 후 다시 시도하면 Operator가 아직 설치를 완료하지 않은 것입니다.
Operator 및 컨트롤러 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
추가 리소스