본문 바로가기
DevOps/컨테이너

EKS Load Balancer - 쿠버네티스 Ingress, Service Load Balancer 로 프로비저닝 하기

by 정보봇따리 2023. 4. 9.
728x90
반응형
SMALL

- EKS Application Load Balancing 이란 ? 
 : 클러스터에 인그레스 자원이 생성될 때에 ALB 및 필요한 자원이 생성되도록 트리거

- EKS Load Balancer 와 쿠버네티스 리소스 간 매핑

  • 쿠버네티스의 Ingress의 경우, Application Load Balancers으로 프로비저닝됩니다.
  • 쿠버네티스의 Service의 경우, Network Load Balancers으로 프로비저닝됩니다.

 

클러스터에 컨트롤러 추가하기
  1. AWS Load Balancer controller를 클러스터에 추가하는 작업을 수행합니다. 먼저, 인증서 구성을 웹훅에 삽입할 수 있도록 cert-manager 를 설치합니다. Cert-manager는 쿠버네티스 클러스터 내에서 TLS인증서를 자동으로 프로비저닝 및 관리하는 오픈 소스입니다.
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
 
  1. Load balancer controller yaml 파일을 다운로드 합니다.
wget https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.4.4/v2_4_4_full.yaml
 
  1. yaml 파일에서 클러스터의 cluster-name을 편집합니다. 본 실습에서는 eks-demo로 설정합니다.
spec:
    containers:
    - args:
        - --cluster-name=eks-demo # 생성한 클러스터 이름을 입력
        - --ingress-class=alb
        image: amazon/aws-alb-ingress-controller:v2.4.4
 

그리고 yaml 파일에서 ServiceAccount yaml spec을 없애줍니다. AWS Load Balancer Controller를 위한 ServiceAccount를 이미 생성했기 때문입니다. 아래의 내용을 삭제한 후, yaml 파일을 저장합니다.

---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/name: aws-load-balancer-controller
  name: aws-load-balancer-controller
  namespace: kube-system
 
 
위의 yaml 파일에서 --cluster-name=eks-demo로 값을 변경했는지 꼭! 다시 한번 체크해주세요.
  1. AWS Load Balancer controller 파일을 배포합니다.
kubectl apply -f v2_4_4_full.yaml
 
  1. 배포가 성공적으로 되고 컨트롤러가 실행되는지 아래의 명령어를 통해 확인합니다. 결과 값이 도출되면 정상임을 의미합니다.
kubectl get deployment -n kube-system aws-load-balancer-controller
 

또한, 아래의 명령어를 통해, service account가 생성된 것을 확인할 수 있습니다.

kubectl get sa aws-load-balancer-controller -n kube-system -o yaml
 

클러스터 내부에서 필요한 기능들을 위해 실행되는 파드들을 애드온(Addon) 이라고 합니다. 애드온에 사용되는 파드들은 디플로이먼트, 리플리케이션 컨트롤러 등에 의해 관리됩니다. 그리고 이 애드온이 사용하는 네임스페이스가 kube-system입니다. Yaml 파일에서 네임스페이스를 kube-system으로 명시했기에 위의 명령어로 파드 이름이 도출되면 정상적으로 배포된 것입니다. 또한, 아래의 명령어로 관련 로그를 확인할 수 있습니다.

kubectl logs -n kube-system $(kubectl get po -n kube-system | egrep -o "aws-load-balancer[a-zA-Z0-9-]+")
 

아래의 명령어로 자세한 속성 값을 파악할 수 있습니다.

ALBPOD=$(kubectl get pod -n kube-system | egrep -o "aws-load-balancer[a-zA-Z0-9-]+")

kubectl describe pod -n kube-system ${ALBPOD}
 
 
728x90
반응형
LIST