2.3. AWS Load Balancer Operator를 위한 AWS STS 클러스터 준비
STS(Security Token Service)를 사용하는 클러스터에 AWS(Amazon Web Services) 로드 밸런서 Operator를 설치하려면 CredentialsRequest 오브젝트를 구성하여 클러스터를 준비합니다. 이렇게 하면 Operator가 AWS Load Balancer 컨트롤러를 부트 스트랩하고 필요한 시크릿에 액세스할 수 있습니다.
AWS Load Balancer Operator는 필요한 시크릿을 생성하고 사용할 수 있을 때까지 기다립니다.
STS(Security Token Service) 절차를 시작하기 전에 다음 사전 요구 사항을 충족해야 합니다.
-
OpenShift CLI(
oc)를 설치합니다. 클러스터의 인프라 ID를 알고 있습니다. 이 ID를 표시하려면 CLI에서 다음 명령을 실행합니다.
$ oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}"클러스터의 OpenID Connect(OIDC) DNS 정보를 알고 있습니다. 이 정보를 표시하려면 CLI에 다음 명령을 입력합니다.
$ oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"다음과 같습니다.
{.spec.serviceAccountIssuer}-
OIDC DNS URL을 지정합니다. An example URL is
https://rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t4f.
-
AWS 관리 콘솔에 로그인한 후 IAM
액세스 관리 ID 공급자로 이동하여 OIDC Amazon Resource Name(ARN) 정보가 있습니다. OIDC ARN 예제는 arn:aws:iam::777777777:oidc-provider/<oidc_dns_url>입니다.
2.3.1. AWS Load Balancer Operator의 IAM 역할 링크 복사링크가 클립보드에 복사되었습니다!
STS를 사용하여 클러스터에 AWS(Amazon Web Services) 로드 밸런서 Operator를 설치하려면 추가 IAM(Identity and Access Management) 역할을 구성합니다.
다음 옵션을 사용하여 IAM 역할을 생성할 수 있습니다.
-
Cloud Credential Operator 유틸리티(
ccoctl) 및 사전 정의된CredentialsRequest오브젝트 사용 - AWS CLI 및 사전 정의된 AWS 매니페스트 사용
환경에서 ccoctl 명령을 지원하지 않는 경우 AWS CLI를 사용합니다.
2.3.1.1. Cloud Credential Operator 유틸리티를 사용하여 AWS IAM 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator가 서브넷 및 VPC와 상호 작용할 수 있도록 하려면 Cloud Credential Operator 유틸리티(ccoctl)를 사용하여 AWS IAM 역할을 생성합니다.
사전 요구 사항
-
ccoctl바이너리를 추출하고 준비해야 합니다.
프로세스
다음 명령을 실행하여
CredentialsRequestCR(사용자 정의 리소스)을 다운로드하여 디렉터리에 저장합니다.$ curl --create-dirs -o <credentials_requests_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=<credentials_requests_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 2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_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다음과 같습니다.
<name>arn:aws:iam::777777:role/<name>-aws-load-operator-aws-load-balancer-operator 와 같이 AWS Load Balancer Operator에 대해 생성된 AWS IAM 역할의ARMN(Amazon Resource Name)을 지정합니다.참고AWS IAM 역할 이름의 길이는 12자 미만이어야 합니다.
2.3.1.2. AWS CLI를 사용하여 AWS IAM 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator가 서브넷 및 VPC와 상호 작용할 수 있도록 하려면 AWS CLI를 사용하여 AWS IAM 역할을 생성합니다. 이를 통해 Operator는 클러스터 내에서 필요한 네트워크 리소스에 액세스하고 관리할 수 있습니다.
사전 요구 사항
-
AWS 명령줄 인터페이스(
aws)에 액세스할 수 있어야 합니다.
프로세스
다음 명령을 실행하여 ID 공급자를 사용하여 신뢰 정책 파일을 생성합니다.
$ cat <<EOF > albo-operator-trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "<oidc_arn>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "<cluster_oidc_endpoint>:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager" } } } ] } EOF다음과 같습니다.
<oidc_arn>-
arn:aws:iam::777777:oidc-provider/rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t59t4f와 같은 OIDC ID 공급자의 Amazon Resource Name(ARN)을 지정합니다. ServiceAccount-
AWS Load Balancer Controller의 서비스 계정을 지정합니다. <
cluster_oidc_endpoint>의 예는rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1f09b14t59t4f입니다.
다음 명령을 실행하여 생성된 신뢰 정책으로 IAM 역할을 생성합니다.
$ aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trust-policy.json출력 예
ROLE arn:aws:iam::<aws_account_number>:role/albo-operator 2023-08-02T12:13:22Z1 ASSUMEROLEPOLICYDOCUMENT 2012-10-17 STATEMENT sts:AssumeRoleWithWebIdentity Allow STRINGEQUALS system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-manager PRINCIPAL arn:aws:iam:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>다음과 같습니다.
<aws_account_number>-
AWS Load Balancer Operator에 대해 생성된 AWS IAM 역할의 ARN(예:
arn:aws:iam::777777:role/albo-operator)을 지정합니다.
다음 명령을 실행하여 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