이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
IngressClass를 생성하여 Application Load Balancer 구성
EKS Auto Mode는 클러스터 앱을 인터넷에 노출하는 등 로드 밸런싱을 위한 일상적인 작업을 자동화합니다.
AWS에서는 Application Load Balancer(ALB)를 사용하여 HTTP 및 HTTPS 트래픽을 제공할 것을 제안합니다. Application Load Balancer는 요청의 내용을 기반으로 요청을 라우팅할 수 있습니다. Application Load Balancer에 대한 자세한 내용은 What is Elastic Load Balancing?을 참조하세요.
EKS Auto Mode는 Application Load Balancer(ALB)를 생성하고 구성합니다. 예를 들어 EKS Auto Mode는 Ingress
Kubernetes 객체를 생성할 때 로드 밸런서를 생성하고 클러스터 워크로드로 트래픽을 라우팅하도록 구성합니다.
개요
-
인터넷에 노출하려는 워크로드를 생성합니다.
-
SSL/TLS 및 VPC 서브넷에 사용할 인증서와 같은 AWS 특정 구성 값을 지정하여
IngressClassParams
리소스를 생성합니다. -
EKS Auto Mode가
IngressClass
리소스의 컨트롤러가 되도록 지정하는 리소스를 생성합니다. -
HTTP 경로 및 포트를 클러스터 워크로드와 연결하는
Ingress
리소스를 생성합니다.
EKS Auto Mode는 Ingress
리소스에 지정된 로드 밸런서 구성을 사용하여 IngressClassParams
리소스에 지정된 워크로드를 가리키는 Application Load Balancer를 생성합니다.
사전 조건
-
Amazon EKS 클러스터에서 활성화된 EKS Auto Mode
-
클러스터에 연결하도록 구성된 Kubectl
-
kubectl apply -f <filename>
를 사용하여 아래의 샘플 구성 YAML 파일을 클러스터에 적용할 수 있습니다.
-
참고
EKS 자동 모드에서는 퍼블릭 및 프라이빗 서브넷을 식별하기 위해 서브넷 태그가 필요합니다.
eksctl
로 클러스터를 생성한 경우 이미 이러한 태그가 있는 것입니다.
EKS 자동 모드의 태그 서브넷 방법에 대해 알아봅니다.
1단계: 워크로드 생성
인터넷에 노출하려는 워크로드를 생성합니다. 배포 또는 서비스와 같이 HTTP 트래픽을 제공하는 모든 Kubernetes 리소스일 수 있습니다. 이 예제에서는 포트 80에서 HTTP 트래픽을 제공하는 service-2048
이라는 간단한 HTTP 서비스를 사용합니다.
2단계: IngressClassParams 생성
IngressClassParams
객체를 생성하여 Application Load Balancer에 대한 AWS 특정 구성 옵션을 지정합니다. 이 예제에서는 다음 단계에서 사용할 alb
라는 IngressClassParams
리소스를 생성합니다. 이 리소스는 alb-ingressclassparams.yaml
이라는 파일에서 로드 밸런서 체계를 internet-facing
으로 지정합니다.
apiVersion: eks.amazonaws.com/v1 kind: IngressClassParams metadata: name: alb spec: scheme: internet-facing
클러스터에 구성을 적용합니다.
kubectl apply -f alb-ingressclassparams.yaml
3단계: IngressClass 생성
alb-ingressclass.yaml
이라는 파일에 IngressClassParams
리소스에 설정된 AWS 특정 구성 값을 참조하는 IngressClass
를 생성합니다. IngressClass
의 이름을 기록해 둡니다. 이 예제에서는 IngressClass
및 IngressClassParams
의 이름이 모두 alb
입니다.
is-default-class
주석을 사용하여 Ingress
리소스가 기본적으로 이 클래스를 사용해야 하는지 여부를 제어합니다.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb annotations: # Use this annotation to set an IngressClass as Default # If an Ingress doesn't specify a class, it will use the Default ingressclass.kubernetes.io/is-default-class: "true" spec: # Configures the IngressClass to use EKS Auto Mode controller: eks.amazonaws.com/alb parameters: apiGroup: eks.amazonaws.com kind: IngressClassParams # Use the name of the IngressClassParams set in the previous step name: alb
구성 옵션에 대한 자세한 내용은 IngressClassParams 참조 섹션을 참조하세요.
클러스터에 구성을 적용합니다.
kubectl apply -f alb-ingressclass.yaml
4단계: 수신 생성
alb-ingress.yaml
이라는 파일에 Ingress
리소스를 생성합니다. 이 리소스의 목적은 Application Load Balancer의 경로 및 포트를 클러스터의 워크로드와 연결하는 것입니다. 이 예제에서는 포트 80에서 service-2048
이라는 서비스로 트래픽을 라우팅하는 2048-ingress
라는 Ingress
리소스를 생성합니다.
이 리소스 구성에 대한 자세한 내용은 Kubernetes 설명서의 Ingress
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: 2048-ingress spec: # this matches the name of IngressClass. # this can be omitted if you have a default ingressClass in cluster: the one with ingressclass.kubernetes.io/is-default-class: "true" annotation ingressClassName: alb rules: - http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: service-2048 port: number: 80
클러스터에 구성을 적용합니다.
kubectl apply -f alb-ingress.yaml
5단계: 상태 확인
kubectl
을 사용하여 Ingress
의 상태를 찾습니다. 로드 밸런서를 사용할 수 있기까지 몇 분 정도 걸릴 수 있습니다.
이전 단계에서 설정한 Ingress
리소스의 이름을 사용합니다. 예시:
kubectl get ingress 2048-ingress
리소스가 준비되면 로드 밸런서의 도메인 이름을 검색합니다.
kubectl get ingress 2048-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
웹 브라우저에서 서비스를 보려면 Ingress
복구에 지정된 포트와 경로를 검토합니다.
6단계: 정리
로드 밸런서를 정리하려면 다음 명령을 사용합니다.
kubectl delete ingress 2048-ingress kubectl delete ingressclass alb kubectl delete ingressclassparams alb
EKS Auto Mode는 AWS 계정에서 연결된 로드 밸런서를 자동으로 삭제합니다.
IngressClassParams 참조
아래 표는 일반적으로 사용되는 구성 옵션에 대한 빠른 참조입니다.
필드 | 설명 | 예시 값 |
---|---|---|
|
ALB가 내부인지 인터넷 연결인지를 정의 |
|
|
이 IngressClass를 사용할 수 있는 네임스페이스 제한 |
|
|
여러 수신을 그룹화하여 단일 ALB 공유 |
|
|
ALB의 IP 주소 유형 설정 |
|
|
ALB 배포를 위한 서브넷 ID 목록 |
|
|
필터에 태그를 지정하여 ALB의 서브넷 선택 |
|
|
사용할 SSL 인증서의 ARN |
|
|
AWS 리소스에 대한 사용자 지정 태그 |
|
|
로드 밸런서별 속성 |
|
고려 사항
-
IngressClass에서 주석을 사용하여 EKS Auto Mode로 로드 밸런서를 구성할 수 없습니다.
-
Kubernetes에서 AWS 로드 밸런서 리소스로 태그 전파를 활성화하려면 클러스터 IAM 역할을 업데이트해야 합니다. 자세한 내용은 EKS Auto 리소스에 대한 사용자 지정 AWS 태그 섹션을 참조하세요.
-
EKS Auto Mode 또는 자체 관리형 AWS 로드 밸런서 컨트롤러와 리소스를 연결하는 방법에 대한 자세한 내용은 마이그레이션 참조 섹션을 참조하세요.
-
로드 밸런서 관련 문제 해결에 대한 자세한 내용은 EKS Auto Mode 문제 해결 섹션을 참조하세요.
-
EKS Auto Mode의 로드 밸런싱 기능 사용에 대한 자세한 고려 사항은 로드 밸런싱 섹션을 참조하세요.
다음 표에서는 EKS Auto Mode에 대한 IngressClassParams, Ingress 주석, TargetGroupBinding 구성의 변경 사항을 자세히 비교합니다. 이 표에서는 API 버전 변경, 사용 중단된 기능, 업데이트된 파라미터 이름을 포함하여 EKS Auto Mode의 로드 밸런싱 기능과 오픈 소스 로드 밸런서 컨트롤러 간의 주요 차이점을 강조합니다.
IngressClassParams
이전 | New | 설명 |
---|---|---|
|
|
API 버전 변경 |
|
|
여러 인증서 ARN 지원 |
|
|
서브넷 일치 스키마가 변경됨 |
|
|
간소화된 속성 이름 지정 |
수신 주석
이전 | New | 설명 |
---|---|---|
|
지원되지 않음 |
수신 객체에서 |
|
지원되지 않음 |
IngressClass에서만 그룹 지정 |
|
지원되지 않음 |
대신 WAF v2 사용 |
|
지원되지 않음 |
대신 WAF v2 사용 |
|
지원되지 않음 |
Shield 통합 비활성화됨 |
|
지원되지 않음 |
OIDC 인증 유형은 현재 지원되지 않습니다. |
TargetGroupBinding
이전 | New | 설명 |
---|---|---|
|
|
API 버전 변경 |
|
|
명시적 대상 유형 사양 |
|
지원되지 않음 |
보안 그룹 없이 더 이상 NLB를 지원하지 않음 |