검색

4장. AWS Load Balancer Operator

download PDF

AWS Load Balancer Operator(ALBO)는 사용자가 선택적으로 AWS(ROSA) 클러스터의 SRE-managed Red Hat OpenShift Service에 설치할 수 있는 Red Hat에서 지원하는 Operator입니다. ALBO는 ROSA 클러스터에서 실행되는 애플리케이션에 대해 AWS Elastic Load Balancing v2(ELBv2) 서비스를 프로비저닝하는 AWS 관리형 AWS 로드 밸런서 컨트롤러(ALBC)의 라이프사이클을 관리합니다.

4.1. AWS Load Balancer Operator 설치

특정 요구 사항을 충족하는 경우 AWS Load Balancer Operator (ALBO)를 설치할 수 있습니다.

사전 요구 사항

  • STS 모드에 설치된 여러 가용성 영역(AZ)에서 BYO-VPC(Bring-your-your-own-VPC) 구성이 있는 AWS(ROSA)에 기존 Red Hat OpenShift Service가 있습니다.
  • dedicated-admin 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • 생성된 ROSA 클러스터의 VPC 및 서브넷을 수정할 수 있습니다.
  • ROSA CLI(rosa)를 설치했습니다.
  • AWS(Amazon Web Services) CLI를 설치했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • OCP(OpenShift Container Platform) 4.13 이상을 사용하고 있습니다.
중요

AWS Local Zone(LZ)에서 ROSA 클러스터와 함께 사용할 ALBO를 설치할 때 계정에 AWS LZ를 활성화해야 하며 AWS Elastic Load Balancing v2(ELBv2) 서비스를 AWS LZ에서 사용할 수 있어야 합니다.

절차

  1. 다음 명령을 실행하여 클러스터 인프라 ID와 클러스터 OpenID Connect(OIDC) DNS를 식별합니다.

    1. ROSA 클러스터 INFRA ID를 식별합니다.

      $ rosa describe cluster --cluster=<cluster_name> | grep -i 'Infra ID'

      또는

      $ oc get infrastructure cluster -o json | jq -r '.status.infrastructureName'
    2. ROSA 클러스터 OIDC DNS를 식별합니다.

      $ rosa describe cluster --cluster=<cluster_name> | grep -i 'OIDC'

      명령의 출력을 저장합니다. 이 정보는 이 절차의 향후 단계에서 사용됩니다.

  2. ALBO에 필요한 AWS IAM 정책을 생성합니다.

    1. dedicated-admin 역할의 사용자로 ROSA 클러스터에 로그인하고 다음 명령을 사용하여 새 프로젝트를 생성합니다.

      $ oc new-project aws-load-balancer-operator
    2. 새로 생성된 AWS IAM 역할에 다음 신뢰 정책을 할당합니다.

      $ IDP='{Cluster_OIDC_Endpoint}'
      $ IDP_ARN="arn:aws:iam::{AWS_AccountNo}:oidc-provider/${IDP}" 1
      $ cat <<EOF > albo-operator-trusted-policy.json
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Federated": "${IDP_ARN}"
                  },
                  "Action": "sts:AssumeRoleWithWebIdentity",
                  "Condition": {
                      "StringEquals": {
                          "${IDP}:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager"
                      }
                  }
              }
          ]
      }
      EOF
      1
      '{AWS_AccountNo}'를 AWS 계정 번호로 바꾸고 '{Cluster_OIDC_Endpoint}'를 이 절차의 앞부분에서 확인된 OIDC DNS로 바꿉니다.
      중요

      {Cluster_OIDC_Endpoint} 를 이전에 확인한 OIDC DNS로 교체할 때 OIDC DNS의 https 부분을 포함하지 마십시오. URL 내에서 / 를 따르는 영숫자 정보만 필요합니다.

      AWS IAM 역할에 신뢰 정책을 할당하는 방법에 대한 자세한 내용은 IAM 역할과 함께 신뢰 정책을 사용하는 방법을 참조하십시오.

    3. 생성된 신뢰 정책을 사용하여 역할을 생성하고 확인합니다.

      $ aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trusted-policy.json
      $ OPERATOR_ROLE_ARN=$(aws iam get-role --role-name albo-operator --output json | jq -r '.Role.Arn')
      $ echo $OPERATOR_ROLE_ARN

      AWS IAM 역할 생성에 대한 자세한 내용은 IAM 역할 생성 을 참조하십시오.

    4. Operator의 권한 정책을 역할에 연결합니다.

      $ curl -o albo-operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/release-1.1/hack/operator-permission-policy.json
      $ aws iam put-role-policy --role-name albo-operator --policy-name perms-policy-albo-operator --policy-document file://albo-operator-permission-policy.json

      AWS IAM 역할에 AWS IAM 권한을 추가하는 방법에 대한 자세한 내용은 IAM ID 권한 추가 및 제거를 참조하십시오.

    5. Operator의 AWS 인증 정보를 생성합니다.

      $ cat <<EOF> albo-operator-aws-credentials.cfg
      [default]
      sts_regional_endpoints = regional
      role_arn = ${OPERATOR_ROLE_ARN}
      web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
      EOF

      인증 정보 파일 포맷에 대한 자세한 내용은 Amazon Web Services 보안 토큰 서비스에서 수동 모드 사용을 참조하십시오.

    6. 생성된 AWS 인증 정보를 사용하여 Operator의 인증 정보 시크릿을 생성합니다.

      $ oc -n aws-load-balancer-operator create secret generic aws-load-balancer-operator --from-file=credentials=albo-operator-aws-credentials.cfg
  3. AWS Load Balancer 컨트롤러에 필요한 AWS IAM 정책을 생성합니다.

    1. ID 공급자에 대한 신뢰 정책 파일을 생성합니다. 다음 예제에서는 OpenID Connect를 사용합니다.

      $ IDP='{Cluster_OIDC_Endpoint}'
      $ IDP_ARN="arn:aws:iam::{AWS_AccountNo}:oidc-provider/${IDP}"
      $ cat <<EOF > albo-controller-trusted-policy.json
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Federated": "${IDP_ARN}"
                  },
                  "Action": "sts:AssumeRoleWithWebIdentity",
                  "Condition": {
                      "StringEquals": {
                          "${IDP}:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-cluster"
                      }
                  }
              }
          ]
      }
      EOF
    2. 생성된 신뢰 정책을 사용하여 역할을 생성하고 확인합니다.

      $ aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trusted-policy.json
      $ CONTROLLER_ROLE_ARN=$(aws iam get-role --role-name albo-controller --output json | jq -r '.Role.Arn')
      $ echo $CONTROLLER_ROLE_ARN
    3. 컨트롤러의 권한 정책을 역할에 연결합니다.

      $ curl -o albo-controller-permission-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.7/docs/install/iam_policy.json
      $ aws iam put-role-policy --role-name albo-controller --policy-name perms-policy-albo-controller --policy-document file://albo-controller-permission-policy.json
    4. 컨트롤러의 AWS 인증 정보를 생성합니다.

      $ cat <<EOF > albo-controller-aws-credentials.cfg
      [default]
      sts_regional_endpoints = regional
      role_arn = ${CONTROLLER_ROLE_ARN}
      web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
      EOF
    5. 생성된 AWS 인증 정보를 사용하여 컨트롤러의 인증 정보 시크릿을 생성합니다.

      $ oc -n aws-load-balancer-operator create secret generic aws-load-balancer-controller-cluster --from-file=credentials=albo-controller-aws-credentials.cfg
  4. 서브넷 검색에 필요한 태그를 추가합니다.

    1. ROSA 클러스터를 호스팅하는 VPC 및 모든 서브넷에 다음 {Key: Value} 태그를 추가합니다. {Cluster Infra ID} 를 이전에 지정한 Infra ID로 바꿉니다.

      * kubernetes.io/cluster/${Cluster Infra ID}:owned
    2. 다음 ELBv2 {Key: Value} 태그를 프라이빗 서브넷에 추가하고 필요한 경우 퍼블릭 서브넷에 추가합니다.

      • 프라이빗 서브넷: kubernetes.io/role/internal-elb:1
      • 퍼블릭 서브넷: kubernetes.io/role/elb:1

        참고

        인터넷 및 내부 로드 밸런서는 이러한 서브넷이 속한 AZ 내에 생성됩니다.

        VPC 및 서브넷을 포함한 AWS 리소스에 태그를 추가하는 방법에 대한 자세한 내용은 Amazon EC2 리소스 태그를 참조하십시오.

        중요

        ALBO에서 생성한 ELBv2 리소스(예: ALB 및 NLB)는 ROSA 클러스터에 설정된 사용자 정의 태그를 상속하지 않습니다. 이러한 리소스에 대해 태그를 별도로 설정해야 합니다.

  5. ALBO를 생성합니다.

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: aws-load-balancer-operator
      namespace: aws-load-balancer-operator
    spec:
      upgradeStrategy: Default
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: aws-load-balancer-operator
      namespace: aws-load-balancer-operator
    spec:
      channel: stable-v1.0
      installPlanApproval: Automatic
      name: aws-load-balancer-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      startingCSV: aws-load-balancer-operator.v1.0.0
  6. AWS ALBC를 생성합니다.

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController
    metadata:
      name: cluster
    spec:
      subnetTagging: Manual
      credentials:
        name: aws-load-balancer-controller-cluster
    중요

    AWS ALBCs는 AZ 및 AWS LZ와 관련된 ALB 생성을 지원하지 않으므로 ROSA 클러스터는 AWS LZ 또는 AZ와 독점적으로 연결된 ALB를 가질 수 있지만 동시에 둘 다 사용할 수 없습니다.

    AWS ALBC 구성에 대한 자세한 내용은 다음 항목을 참조하십시오.

검증

  • 다음 명령을 실행하여 설치를 확인합니다.

    1. 프로젝트 내에서 Pod에 대한 정보를 수집합니다.

      $ oc get pods -n aws-load-balancer-operator
    2. 프로젝트 내에서 로그를 확인합니다.

      $ oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c manager

      ROSA 클러스터에서 실행되는 애플리케이션에 대해 ELBv2가 생성되었는지 확인하는 방법에 대한 자세한 내용은 AWS Load Balancer 컨트롤러 인스턴스 생성 을 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.