2장. Networking Operator
2.1. AWS Load Balancer Operator 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator는 Red Hat에서 지원하는 Operator로, 사용자가 선택적으로 AWS(ROSA) 클러스터의 SRE 관리 Red Hat OpenShift Service에 설치할 수 있습니다. AWS Load Balancer Operator는 ROSA 클러스터에서 실행되는 애플리케이션에 대해 AWS Elastic Load Balancing v2(ELBv2) 서비스를 프로비저닝하는 AWS Load Balancer 컨트롤러의 라이프사이클을 관리합니다.
AWS Load Balancer Operator에서 생성한 로드 밸런서는 OpenShift 경로에 사용할 수 없으며 OpenShift 경로 의 전체 계층 7 기능이 필요하지 않은 개별 서비스 또는 인그레스 리소스에만 사용해야 합니다.
AWS Load Balancer 컨트롤러는 AWS(ROSA) 클러스터에서 Red Hat OpenShift Service의 AWS Elastic Load Balancer를 관리합니다. 컨트롤러는 LoadBalancer 유형의 Kubernetes 서비스 리소스를 구현할 때 Kubernetes Ingress 리소스 및 AWS NLB(Network Load Balancer)를 생성할 때 AWS Application Load Balancer( ALB )를 프로비저닝합니다.
기본 AWS in-tree 로드 밸런서 공급자와 비교하여 이 컨트롤러는 ALB 및 NLB 모두에 대한 고급 주석으로 개발됩니다. 일부 고급 사용 사례는 다음과 같습니다.
- ALB에서 네이티브 Kubernetes Ingress 오브젝트 사용
- ALB를 AWS Web Application Firewall(WAF) 서비스와 통합
- 사용자 정의 NLB 소스 IP 범위 지정
- 사용자 정의 NLB 내부 IP 주소 지정
AWS Load Balancer Operator 는 ROSA 클러스터에서 aws-load-balancer-controller 인스턴스를 설치, 관리 및 구성하는 데 사용됩니다.
2.1.1. AWS Load Balancer Operator를 설치하도록 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator에는 여러 가용 영역(AZ)이 있는 클러스터와 클러스터와 동일한 가상 프라이빗 클라우드(VPC)의 3개의 퍼블릭 서브넷이 분할되어야 합니다.
이러한 요구 사항으로 인해 많은 PrivateLink 클러스터에 AWS Load Balancer Operator가 적합하지 않을 수 있습니다. AWS NLB에는 이러한 제한이 없습니다.
AWS Load Balancer Operator를 설치하기 전에 다음을 구성해야 합니다.
- 여러 가용성 영역이 있는 ROSA(클래식 아키텍처) 클러스터
- BYO VPC 클러스터
- AWS CLI
- OC CLI
2.1.1.1. AWS Load Balancer Operator 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
선택 사항: 임시 환경 변수를 설정하여 설치 명령을 간소화할 수 있습니다.
환경 변수를 사용하지 않으려면 코드 조각에 묻는 값을 수동으로 입력합니다.
프로세스
admin 사용자로 클러스터에 로그인한 후 다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 변수가 설정되었는지 확인할 수 있습니다.
echo "Cluster name: ${CLUSTER_NAME}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"$ echo "Cluster name: ${CLUSTER_NAME}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Cluster name: <cluster_id>, Region: us-east-2, OIDC Endpoint: oidc.op1.openshiftapps.com/<oidc_id>, AWS Account ID: <aws_id>
Cluster name: <cluster_id>, Region: us-east-2, OIDC Endpoint: oidc.op1.openshiftapps.com/<oidc_id>, AWS Account ID: <aws_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.1.2. AWS VPC 및 서브넷 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator를 설치하려면 먼저 AWS VPC 리소스에 태그를 지정해야 합니다.
프로세스
ROSA 배포의 적절한 값으로 환경 변수를 설정합니다.
export VPC_ID=<vpc-id> export PUBLIC_SUBNET_IDS="<public-subnet-a-id> <public-subnet-b-id> <public-subnet-c-id>" export PRIVATE_SUBNET_IDS="<private-subnet-a-id> <private-subnet-b-id> <private-subnet-c-id>"
$ export VPC_ID=<vpc-id> $ export PUBLIC_SUBNET_IDS="<public-subnet-a-id> <public-subnet-b-id> <public-subnet-c-id>" $ export PRIVATE_SUBNET_IDS="<private-subnet-a-id> <private-subnet-b-id> <private-subnet-c-id>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터 이름을 사용하여 클러스터의 VPC에 태그를 추가합니다.
aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}$ aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 퍼블릭 서브넷에 태그를 추가합니다.
aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='' \ --region ${REGION}$ aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='' \ --region ${REGION}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프라이빗 서브넷에 태그를 추가합니다.
aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='' \ --region ${REGION}$ aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='' \ --region ${REGION}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 여러 가용성 영역이 있는 ROSA 클래식 클러스터를 설정하려면 기본 옵션을 사용하여 STS를 사용하여 ROSA 클러스터 생성을참조하십시오.
2.1.2. AWS Load Balancer Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
클러스터로 환경을 설정한 후 CLI를 사용하여 AWS Load Balancer Operator를 설치할 수 있습니다.
프로세스
AWS Load Balancer Operator에 대한 클러스터 내에 새 프로젝트를 생성합니다.
oc new-project aws-load-balancer-operator
$ oc new-project aws-load-balancer-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Controller에 대한 AWS IAM 정책을 생성합니다.
참고업스트림 AWS Load Balancer 컨트롤러 정책에서 AWS IAM 정책을 찾을 수 있습니다. 이 정책에는 Operator가 작동하는 데 필요한 모든 권한이 포함됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator에 대한 AWS IAM 신뢰 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator에 대한 AWS IAM 역할을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator가 새로 생성된 AWS IAM 역할을 가정할 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator를 설치합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator를 사용하여 AWS Load Balancer 컨트롤러 인스턴스를 배포합니다.
참고여기에서 오류가 발생하면 1분 정도 기다린 후 다시 시도하면 Operator가 아직 설치를 완료하지 않은 것입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator 및 컨트롤러 Pod가 둘 다 실행 중인지 확인합니다.
oc -n aws-load-balancer-operator get pods
$ oc -n aws-load-balancer-operator get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 잠시 대기하지 않고 다시 시도하면 다음이 표시됩니다.
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
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 2m4sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.2.1. 배포 검증 링크 복사링크가 클립보드에 복사되었습니다!
새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow hello world 애플리케이션을 배포합니다.
oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow AWS ALB에 연결하도록 NodePort 서비스를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator를 사용하여 AWS ALB를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS ALB Ingress 끝점을 curl하여 hello world 애플리케이션에 액세스할 수 있는지 확인합니다.
참고AWS ALB 프로비저닝에는 몇 분이 걸립니다.
curl: (6) 호스트를 해결할 수 없는오류가 발생하면 기다렸다가 다시 시도하십시오.INGRESS=$(oc -n hello-world get ingress hello-openshift-alb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${INGRESS}"$ INGRESS=$(oc -n hello-world get ingress hello-openshift-alb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${INGRESS}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow hello world 애플리케이션에 사용할 AWS NLB를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS NLB 끝점을 테스트합니다.
참고NLB 프로비저닝에는 몇 분이 걸립니다.
curl: (6) 호스트를 해결할 수 없는오류가 발생하면 기다렸다가 다시 시도하십시오.NLB=$(oc -n hello-world get service hello-openshift-nlb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${NLB}"$ NLB=$(oc -n hello-world get service hello-openshift-nlb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${NLB}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.3. AWS Load Balancer Operator 설치 예 삭제 링크 복사링크가 클립보드에 복사되었습니다!
hello world 애플리케이션 네임스페이스(및 네임스페이스의 모든 리소스)를 삭제합니다.
oc delete project hello-world
$ oc delete project hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator 및 AWS IAM 역할을 삭제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS IAM 정책을 삭제합니다.
aws iam delete-policy --policy-arn $POLICY_ARN
$ aws iam delete-policy --policy-arn $POLICY_ARNCopy to Clipboard Copied! Toggle word wrap Toggle overflow