이 페이지 개선에 도움 주기
이 사용자 설명서에 기여하고 싶으신가요? 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.
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 파일을 클러스터에 적용할 수 있습니다.
-
1단계: IngressClassParams 생성
IngressClassParams
객체를 생성하여 Application Load Balancer에 대한 AWS 특정 구성 옵션을 지정합니다. 아래 참조를 사용하여 샘플 YAML 파일을 업데이트합니다.
IngressClassParams
리소스에 대해 설정한 이름을 기록해 둡니다. 다음 단계에서 이 이름이 필요합니다.
apiVersion: eks.amazonaws.com/v1
kind: IngressClassParams
metadata:
name: alb
spec:
scheme: internet-facing
2단계: IngressClass 생성
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 참조 섹션을 참조하세요.
3단계: 수신 생성
Ingress
리소스를 생성합니다. 이 리소스의 목적은 Application Load Balancer의 경로 및 포트를 클러스터의 워크로드와 연결하는 것입니다.
이 리소스 구성에 대한 자세한 내용은 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: <your-service>
port:
number: 80
4단계: 상태 확인
kubectl
을 사용하여 Ingress
의 상태를 찾습니다. 로드 밸런서를 사용할 수 있기까지 몇 분 정도 걸릴 수 있습니다.
이전 단계에서 설정한 Ingress
리소스의 이름을 사용합니다.
kubectl get ingress <ingress-name>
리소스가 준비되면 로드 밸런서의 도메인 이름을 검색합니다.
kubectl get ingress api-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
웹 브라우저에서 서비스를 보려면 Ingress
복구에 지정된 포트와 경로를 검토합니다.
5단계: 정리
로드 밸런서를 정리하려면 다음 명령을 사용합니다.
kubectl delete ingress <ingress-name>
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 통합 비활성화됨 |
TargetGroupBinding
이전 | New | 설명 |
---|---|---|
|
|
API 버전 변경 |
|
|
명시적 대상 유형 사양 |
|
지원되지 않음 |
보안 그룹 없이 더 이상 NLB를 지원하지 않음 |