검색

21.4. AWS STS를 사용하는 클러스터에 AWS Load Balancer Operator 설치

download PDF

STS(Security Token Service)를 사용하는 클러스터에 AWS(Amazon Web Services) 로드 밸런서 Operator를 설치할 수 있습니다. 다음 단계에 따라 Operator를 설치하기 전에 클러스터를 준비합니다.

AWS Load Balancer Operator는 CredentialsRequest 오브젝트를 사용하여 Operator 및 AWS Load Balancer 컨트롤러를 부트스트랩합니다. AWS Load Balancer Operator는 필요한 시크릿을 생성하고 사용할 수 있을 때까지 기다립니다.

21.4.1. 사전 요구 사항

  • 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}" 1
  • AWS 웹 콘솔에 로그인한 후 IAM 액세스 관리 ID 공급자로 이동하여 OIDC Amazon Resource Name(ARN) 정보가 있습니다. OIDC ARN 예제는 arn:aws:iam::777777777:oidc-provider/<oidc_dns_url >입니다.

21.4.2. AWS Load Balancer Operator에 대한 IAM 역할 생성

STS를 사용하는 클러스터에 AWS Load Balancer Operator를 설치하려면 추가 AWS(Amazon Web Services) IAM(Identity and Access Management) 역할이 필요합니다. 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하려면 IAM 역할이 필요합니다. AWS Load Balancer Operator는 부트스트랩 자체를 위해 IAM 역할로 CredentialsRequest 오브젝트를 생성합니다.

다음 옵션을 사용하여 IAM 역할을 생성할 수 있습니다.

환경에서 ccoctl 명령을 지원하지 않는 경우 AWS CLI를 사용합니다.

21.4.2.1. Cloud Credential Operator 유틸리티를 사용하여 AWS IAM 역할 생성

Cloud Credential Operator 유틸리티(ccoctl)를 사용하여 AWS Load Balancer Operator에 대한 AWS IAM 역할을 생성할 수 있습니다. AWS IAM 역할은 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용합니다.

사전 요구 사항

  • ccoctl 바이너리를 추출하고 준비해야 합니다.

프로세스

  1. 다음 명령을 실행하여 CredentialsRequest CR(사용자 정의 리소스)을 다운로드하여 디렉터리에 저장합니다.

    $ curl --create-dirs -o <credentials_requests_dir>/operator.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
  2. 다음 명령을 실행하여 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 1
    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

    1
    AWS Load Balancer Operator에 대해 생성된 AWS IAM 역할의 Amazon 리소스 이름(예: arn:aws:iam::777777:role/<name>-aws-balancer-operator-aws-load-balancer-operator )을 확인합니다.
    참고

    AWS IAM 역할 이름의 길이는 12자 미만이어야 합니다.

21.4.2.2. AWS CLI를 사용하여 AWS IAM 역할 생성

AWS 명령줄 인터페이스를 사용하여 AWS Load Balancer Operator에 대한 IAM 역할을 생성할 수 있습니다. IAM 역할은 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하는 데 사용됩니다.

사전 요구 사항

  • AWS 명령줄 인터페이스(aws)에 액세스할 수 있어야 합니다.

프로세스

  1. 다음 명령을 실행하여 ID 공급자를 사용하여 신뢰 정책 파일을 생성합니다.

    $ cat <<EOF > albo-operator-trust-policy.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Federated": "<oidc_arn>" 1
                },
                "Action": "sts:AssumeRoleWithWebIdentity",
                "Condition": {
                    "StringEquals": {
                        "<cluster_oidc_endpoint>:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-cluster" 2
                    }
                }
            }
        ]
    }
    EOF
    1
    arn:aws:iam::777777:oidc-provider/rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t59t4f 와 같은 OIDC ID 공급자의 Amazon Resource Name(ARN)을 지정합니다.
    2
    AWS Load Balancer Controller의 서비스 계정을 지정합니다. < cluster_oidc_endpoint >의 예는 rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1f09b14t59t4f 입니다.
  2. 다음 명령을 실행하여 생성된 신뢰 정책으로 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: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:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>

    1
    AWS Load Balancer Operator에 대해 생성된 AWS IAM 역할의 ARN(예: arn:aws:iam::777777777:role/albo-operator )에 유의하십시오.
  3. 다음 명령을 실행하여 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
  4. 다음 명령을 실행하여 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

21.4.3. AWS Load Balancer Operator의 ARN 역할 구성

AWS Load Balancer Operator에 대한 Amazon 리소스 이름(ARN) 역할을 환경 변수로 구성할 수 있습니다. CLI를 사용하여 ARN 역할을 구성할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 다음 명령을 실행하여 aws-load-balancer-operator 프로젝트를 생성합니다.

    $ oc new-project aws-load-balancer-operator
  2. 다음 명령을 실행하여 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
  3. 다음 명령을 실행하여 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: "<albo_role_arn>" 1
    EOF
    1
    CredentialsRequest 에서 AWS Load Balancer Operator의 AWS 인증 정보를 프로비저닝하는 데 사용할 ARN 역할을 지정합니다. < albo_role_arn >의 예는 arn:aws:iam::<aws_account_number>:role/albo-operator 입니다.
    참고

    AWS Load Balancer Operator는 사용 가능 상태로 이동하기 전에 보안이 생성될 때까지 기다립니다.

21.4.4. AWS Load Balancer Controller의 IAM 역할 생성

AWS Load Balancer 컨트롤러의 CredentialsRequest 오브젝트는 수동으로 프로비저닝된 IAM 역할을 사용하여 설정해야 합니다.

다음 옵션을 사용하여 IAM 역할을 생성할 수 있습니다.

환경에서 ccoctl 명령을 지원하지 않는 경우 AWS CLI를 사용합니다.

21.4.4.1. Cloud Credential Operator 유틸리티를 사용하여 컨트롤러에 대한 AWS IAM 역할 생성

Cloud Credential Operator 유틸리티(ccoctl)를 사용하여 AWS Load Balancer Controller에 대한 AWS IAM 역할을 생성할 수 있습니다. AWS IAM 역할은 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하는 데 사용됩니다.

사전 요구 사항

  • ccoctl 바이너리를 추출하고 준비해야 합니다.

프로세스

  1. 다음 명령을 실행하여 CredentialsRequest CR(사용자 정의 리소스)을 다운로드하여 디렉터리에 저장합니다.

    $ curl --create-dirs -o <credentials_requests_dir>/controller.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
  2. 다음 명령을 실행하여 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-controller created 1
    2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_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 Load Balancer 컨트롤러에 대해 생성된 AWS IAM 역할의 Amazon 리소스 이름(예: arn:aws:iam::777777:role/<name>-aws-balancer-operator-aws-load-balancer-controller )을 확인합니다.
    참고

    AWS IAM 역할 이름의 길이는 12자 미만이어야 합니다.

21.4.4.2. AWS CLI를 사용하여 컨트롤러에 대한 AWS IAM 역할 생성

AWS 명령줄 인터페이스를 사용하여 AWS Load Balancer Controller에 대한 AWS IAM 역할을 생성할 수 있습니다. AWS IAM 역할은 서브넷 및 VPC(Virtual Private Clouds)와 상호 작용하는 데 사용됩니다.

사전 요구 사항

  • AWS 명령줄 인터페이스(aws)에 액세스할 수 있어야 합니다.

프로세스

  1. 다음 명령을 실행하여 ID 공급자를 사용하여 신뢰 정책 파일을 생성합니다.

    $ cat <<EOF > albo-controller-trust-policy.json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Federated": "<oidc_arn>" 1
                },
                "Action": "sts:AssumeRoleWithWebIdentity",
                "Condition": {
                    "StringEquals": {
                        "<cluster_oidc_endpoint>:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-cluster" 2
                    }
                }
            }
        ]
    }
    EOF
    1
    arn:aws:iam::777777:oidc-provider/rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1fb09b14t59t59t4f 와 같은 OIDC ID 공급자의 Amazon Resource Name(ARN)을 지정합니다.
    2
    AWS Load Balancer Controller의 서비스 계정을 지정합니다. < cluster_oidc_endpoint >의 예는 rh-oidc.s3.us-east-1.amazonaws.com/28292va7ad7mr9r4he1f09b14t59t4f 입니다.
  2. 다음 명령을 실행하여 생성된 신뢰 정책으로 AWS IAM 역할을 생성합니다.

    $ aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trust-policy.json

    출력 예

    ROLE	arn:aws:iam::<aws_account_number>: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:<aws_account_number>:oidc-provider/<cluster_oidc_endpoint>

    1
    AWS Load Balancer Controller에 대한 AWS IAM 역할의 ARN(예: arn:aws:iam::777777:role/albo-controller )을 확인합니다.
  3. 다음 명령을 실행하여 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
  4. 다음 명령을 실행하여 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
  5. AWSLoadBalancerController 오브젝트를 정의하는 YAML 파일을 생성합니다.

    sample-aws-lb-manual-creds.yaml 파일의 예

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController 1
    metadata:
      name: cluster 2
    spec:
      credentialsRequestConfig:
        stsIAMRoleARN: <albc_role_arn> 3

    1
    AWSLoadBalancerController 개체를 정의합니다.
    2
    AWS Load Balancer 컨트롤러 이름을 정의합니다. 모든 관련 리소스는 이 인스턴스 이름을 접미사로 사용합니다.
    3
    AWS Load Balancer Controller의 ARN 역할을 지정합니다. CredentialsRequest 오브젝트는 이 ARN 역할을 사용하여 AWS 인증 정보를 프로비저닝합니다. < albc_role_arn >의 예는 arn:aws:iam::777777:role/albo-controller 입니다.

21.4.5. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.