23.4. AWS Security Token Service를 사용하여 클러스터에서 AWS Load Balancer Operator 준비
STS를 사용하는 클러스터에 AWS Load Balancer Operator를 설치할 수 있습니다. 다음 단계에 따라 Operator를 설치하기 전에 클러스터를 준비합니다.
AWS Load Balancer Operator는 CredentialsRequest
오브젝트를 사용하여 Operator 및 AWS Load Balancer 컨트롤러를 부트스트랩합니다. AWS Load Balancer Operator는 필요한 시크릿을 생성하고 사용할 수 있을 때까지 기다립니다.
23.4.1. AWS Load Balancer Operator에 대한 IAM 역할 생성
STS를 사용하는 클러스터에 AWS Load Balancer Operator를 성공적으로 설치하려면 추가 AWS Identity and Access Management(IAM) 역할이 필요합니다. 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하려면 IAM 역할이 필요합니다. AWS Load Balancer Operator는 부트스트랩 자체를 위해 IAM 역할로 CredentialsRequest
오브젝트를 생성합니다.
다음 옵션을 사용하여 IAM 역할을 생성할 수 있습니다.
-
Cloud Credential Operator 유틸리티(
ccoctl
) 및 사전 정의된CredentialsRequest
오브젝트 사용 - AWS CLI 및 사전 정의된 AWS 매니페스트 사용
환경에서 ccoctl
명령을 지원하지 않는 경우 AWS CLI를 사용합니다.
23.4.1.1. Cloud Credential Operator 유틸리티를 사용하여 AWS IAM 역할 생성
Cloud Credential Operator 유틸리티(ccoctl
)를 사용하여 AWS Load Balancer Operator에 대한 AWS IAM 역할을 생성할 수 있습니다. AWS IAM 역할은 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하는 데 사용됩니다.
사전 요구 사항
-
ccoctl
바이너리를 추출하고 준비해야 합니다.
프로세스
다음 명령을 실행하여
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
다음 명령을 실행하여 AWS IAM 역할을 생성하려면
ccoctl
유틸리티를 사용합니다.$ 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 리소스 이름(ARN)을 기록해 둡니다.
참고AWS IAM 역할 이름의 길이는 12자 미만이어야 합니다.
23.4.1.2. AWS CLI를 사용하여 AWS IAM 역할 생성
AWS 명령줄 인터페이스를 사용하여 AWS Load Balancer Operator에 대한 IAM 역할을 생성할 수 있습니다. IAM 역할은 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하는 데 사용됩니다.
사전 요구 사항
-
AWS 명령줄 인터페이스(
aws
)에 액세스할 수 있어야 합니다.
프로세스
다음 명령을 실행하여 ID 공급자를 사용하여 신뢰 정책 파일을 생성합니다.
$ 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
다음 명령을 실행하여 생성된 신뢰 정책으로 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을 확인합니다.
다음 명령을 실행하여 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
다음 명령을 실행하여 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
23.4.2. AWS Load Balancer Operator의 ARN 역할 구성
AWS Load Balancer Operator에 대한 Amazon 리소스 이름(ARN) 역할을 환경 변수로 구성할 수 있습니다. CLI를 사용하여 ARN 역할을 구성할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
다음 명령을 실행하여
aws-load-balancer-operator
프로젝트를 생성합니다.$ oc new-project aws-load-balancer-operator
다음 명령을 실행하여
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
다음 명령을 실행하여
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
CredentialsRequest
에서 AWS Load Balancer Operator의 AWS 인증 정보를 프로비저닝하는 데 사용할 ARN 역할을 지정합니다.
참고AWS Load Balancer Operator는
사용 가능
상태로 이동하기 전에 보안이 생성될 때까지 기다립니다.
23.4.3. AWS Load Balancer Controller의 IAM 역할 생성
AWS Load Balancer 컨트롤러의 CredentialsRequest
오브젝트는 수동으로 프로비저닝된 IAM 역할을 사용하여 설정해야 합니다.
다음 옵션을 사용하여 IAM 역할을 생성할 수 있습니다.
-
Cloud Credential Operator 유틸리티(
ccoctl
) 및 사전 정의된CredentialsRequest
오브젝트 사용 - AWS CLI 및 사전 정의된 AWS 매니페스트 사용
환경에서 ccoctl
명령을 지원하지 않는 경우 AWS CLI를 사용합니다.
23.4.3.1. Cloud Credential Operator 유틸리티를 사용하여 컨트롤러에 대한 AWS IAM 역할 생성
Cloud Credential Operator 유틸리티(ccoctl
)를 사용하여 AWS Load Balancer Controller에 대한 AWS IAM 역할을 생성할 수 있습니다. AWS IAM 역할은 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하는 데 사용됩니다.
사전 요구 사항
-
ccoctl
바이너리를 추출하고 준비해야 합니다.
프로세스
다음 명령을 실행하여
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
다음 명령을 실행하여 AWS IAM 역할을 생성하려면
ccoctl
유틸리티를 사용합니다.$ 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 리소스 이름(ARN)을 기록해 둡니다.
참고AWS IAM 역할 이름의 길이는 12자 미만이어야 합니다.
23.4.3.2. AWS CLI를 사용하여 컨트롤러에 대한 AWS IAM 역할 생성
AWS 명령줄 인터페이스를 사용하여 AWS Load Balancer Controller에 대한 AWS IAM 역할을 생성할 수 있습니다. AWS IAM 역할은 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하는 데 사용됩니다.
사전 요구 사항
-
AWS 명령줄 인터페이스(
aws
)에 액세스할 수 있어야 합니다.
프로세스
다음 명령을 실행하여 ID 공급자를 사용하여 신뢰 정책 파일을 생성합니다.
$ 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
다음 명령을 실행하여 생성된 신뢰 정책으로 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을 기록해 둡니다.
다음 명령을 실행하여 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
다음 명령을 실행하여 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
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