AWS Load Balancer Controller란 무엇인가요? - Amazon EKS

AWS Load Balancer Controller란 무엇인가요?

AWS Load Balancer Controller는 Kubernetes 클러스터의 AWS Elastic Load Balancer를 관리합니다. 컨트롤러를 사용하여 클러스터 앱을 인터넷에 노출할 수 있습니다. 컨트롤러는 클러스터 Service 또는 Ingress 리소스를 가리키는 AWS 로드 밸런서를 프로비저닝합니다. 다시 말해 컨트롤러는 클러스터의 여러 포드를 가리키는 단일 IP 주소 또는 DNS 이름을 생성합니다.

컨트롤러는 Kubernetes Ingress 또는 Service 리소스를 감시합니다. 이에 대한 응답으로 해당 AWS Elastic Load Balancing 리소스를 생성합니다. Kubernetes 리소스에 주석을 적용하여 로드 밸런서의 특정 동작을 구성할 수 있습니다. 예를 들어 주석을 사용하여 로드 밸런서에 AWS 보안 그룹을 연결할 수 있습니다.

이 컨트롤러는 다음 리소스를 프로비저닝합니다.

Kubernetes Ingress

LBC는 Kubernetes Ingress 생성 시 AWS Application Load Balancer(ALB)를 생성합니다. Ingress 리소스에 적용할 수 있는 주석을 검토합니다.

LoadBalancer 유형의 Kubernetes 서비스

LBC는 LoadBalancer 유형의 Kubernetes 서비스 생성 시 AWS Network Load Balancer(NLB)를 생성합니다. Service 리소스에 적용할 수 있는 주석을 검토합니다.

과거에는 인스턴스 대상에 대해 Kubernetes Network Load Balancer를 사용했지만 IP 대상에 대해서는 LBC를 사용했습니다. AWS Load Balancer Controller 버전 2.3.0 이상에서 대상 유형 중 하나를 사용하여 NLB를 생성할 수 있습니다. NLB 대상 유형에 대한 자세한 내용은 Network Load Balancer 사용 설명서에서 대상 유형을 참조하세요.

컨트롤러는 GitHub에서 관리되는 오픈 소스 프로젝트입니다.

컨트롤러를 배포하기 전에 Amazon EKS 애플리케이션 로드 밸런싱Amazon EKS의 네트워크 로드 밸런싱에서 필수 구성 요소 및 고려 사항을 검토하는 것이 좋습니다. 이러한 주제에서는 AWS 로드 밸런서가 포함된 샘플 앱을 배포합니다.

컨트롤러 배포 🚀

사용되지 않는 버전 제거

  • 사용되지 않는 AWS Load Balancer Controller 버전이 설치된 경우 사용되지 않는 컨트롤러에서 마이그레이션 방법을 알아보세요.

  • 사용되지 않는 버전은 업그레이드할 수 없습니다. 이를 제거하고 최신 AWS Load Balancer Controller 버전을 설치해야 합니다.

  • 사용되지 않는 버전은 다음과 같습니다.

    • AWS ALB Ingress Controller for Kubernetes("Ingress Controller"), 이전 AWS Load Balancer Controller.

    • AWS Load Balancer Controller의 모든 0.1.x 버전

레거시 클라우드 공급자

Kubernetes에는 AWS에 대한 레거시 클라우드 공급자가 포함됩니다. 레거시 클라우드 공급자는 AWS Load Balancer Controller와 마찬가지로 AWS 로드 밸런서를 프로비저닝할 수 있습니다. 레거시 클라우드 공급자가 Classic Load Balancer를 생성합니다. AWS Load Balancer Controller를 설치하지 않은 경우 Kubernetes에서 기본적으로 레거시 클라우드 공급자를 사용합니다. AWS Load Balancer Controller를 설치하고 레거시 클라우드 공급자 사용을 자제해야 합니다.

중요

버전 2.5 이상에서는 AWS Load Balancer Controller이(가) type: LoadBalancer와(과) 함께 Kubernetes 서비스 리소스의 기본 컨트롤러가 되며 각 서비스에 대한 AWS Network Load Balancer(NLB)를 만듭니다. 이는 서비스에 대한 변형 웹훅을 만들어 이를 수행하며, 이는 type: LoadBalancer의 새 서비스에 대한 spec.loadBalancerClass 필드를 service.k8s.aws/nlb(으)로 설정합니다. 차트 Helm 값을 enableServiceMutatorWebhook에서 false(으)로 설정하여 이 기능을 끄고 레거시 클라우드 공급자를 기본 컨트롤러로 사용하도록 되돌릴 수 있습니다. 이 기능을 끄지 않는 한 클러스터는 서비스에 새 Classic Load Balancer를 프로비저닝하지 않습니다. 기존 Classic Load Balancer는 계속 작동합니다.