본문 바로가기
Engineering

AWS External ALB, Internal ALB, EKS Targetgroupbinding 구성

by weq155 2024. 3. 8.
반응형
  1. External ALB를 통해 외부에서 접근
    nginx가 설치되어있는 ec2로 트래픽 전달 443 port

Forward to target group

  • nginx-tg
  • 80 port는 443 port로 리다이렉트 해주는 rule
  • Redirect to HTTPS://#{host}:443/#{path}?#{query}
    • Status code: HTTP_301
    • Group-level stickiness: Off
  • nginx ec2 tagetgroup은 HTTP:80으로 트래픽을 받음
  • 443으로 받으면 내부 nginx에도 tls 설정이 필요함.
  • 그런데 external alb에서 이미 검증을 하기때문에 tls 종료가 일어나도 외부에선 https로 접근이 가능하기 때문에 이렇게 구성
  1. domain 주소를 바탕으로 nginx에서 각각의 internal-lb로 라우팅
     nginx.conf
upstream cd {  
    server internal-megatree-cd-alb.ap-northeast-2.elb.amazonaws.com:80; # CD 어플리케이션의 Internal ALB}

server {  
    listen 80;  
    server_name grafana.co.kr; # CD에 대한 서브도메인  
    location / {  
        proxy_pass http://cd;  
        proxy_set_header Host grafana.co.kr;  
    }  
}

아래 예시는 cd라는 이름의 upstream(변수 개념)
80포트로 grafana.co.kr라는 도메인으로 접근이 된걸 감지하면 proxy-pass를 통해 앞에 선언한 upstream cd로 트래픽을 흘려보내고 host_header를 grafana.co.kr로 바꿈

그러면 cd internal lb로 트래픽이 가면 80 port의 rule에 따라
HTTP Host Header* is grafana.co.kr, AND Path Pattern is / 룰을 적용해 grafana taget group으로 보냄

Forward to target group

  • grafana

grafana는 tagetgroupbinding을 통해 NodePort로 생성된 서비스와 80포트를 포트포워딩 해서 30000~ 포트로 연결
tagetgroupbinding을 사용하면 저 포트포워딩을 자동으로 진행
target Type도 인스턴스와 IP 두개가 있는데 targetgroup의 설정에 따라 다름

apiVersion: elbv2.k8s.aws/v1beta1  
kind: TargetGroupBinding  
metadata:  
  labels:  
    ingress.k8s.aws/stack: cd-alb  
  name: grafana-tgb  
  namespace: monitoring  
spec:  
  ipAddressType: ipv4  
  serviceRef:  
    name: grafana  
    port: 80  
  targetGroupARN: arn:aws:elasticloadbalancing:ap-northeast-2::targetgroup/grafana/  
  targetType: instance

namespace와 serviceRef로 서비스를 바인딩하면
자동으로 Tagetgroup에 NodePort로 배포된 port가 할당

구축순서
nginx ec2 생성 -> nginx 설치
external alb 생성 -> 리스너 룰, nginx ec2 tg 생성, DNS 주소 할당

eks cluster 생성 -> 서비스 배포
internal alb 생성 -> 리스너 룰, tg 생성(tg health check code 200-399)

eks에서 tgb 배포 -> dns 설정

nginx ec2에서 internal alb 접근하며 conf 세팅

연동 확인

반응형