Infra/AWS

[AWS/EKS] 다른 Namespace의 LB 사용하는 방법

혬수 2024. 12. 2. 09:18
# FE/dododocs-ingress.yaml

...
kind: Ingress
metadata:
  name: dododocs-ingress
  namespace: frontend
  annotations:
    alb.ingress.kubernetes.io/group.name: shared-alb
...

문제 상황 📌

Frontend를 접근하는 ALB가 있는 상황

Developer 입장에서도 argocd, prometheus, grafana 대시보드 접근해야함

⇒ Frontend namespace에 있는 ALB 사용할 수 없을까?

 

 

해결 방안 📌

기본적으로 ingress는 namespace에 종속됨

 

alb.ingress.kubernetes.io/group.name 어노테이션 사용!!

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/alb-ingress.html

 

애플리케이션 및 Application Load Balancers를 사용한 HTTP 트래픽 라우팅 - Amazon EKS

IPv6 Pods로 로드 밸런싱하는 경우, 인그레스 사양에 다음 주석을 추가합니다. IPv6를 통해서는 인스턴스 대상이 아닌 IP 대상으로만 로드 밸런싱할 수 있습니다. 이 주석이 없으면 로드 밸런싱은 IPv

docs.aws.amazon.com

 

 

# FE/dododocs-ingress.yaml

...
kind: Ingress
metadata:
  name: dododocs-ingress
  namespace: frontend
  annotations:
    alb.ingress.kubernetes.io/group.name: shared-alb
...
# Infra/infra-ingress.yaml

...
kind: Ingress
metadata:
  name: infra-ingress
  namespace: infra
  annotations:
    alb.ingress.kubernetes.io/group.name: shared-alb
...

 

 

⇒ 두 네임스페이스에서 하나의 ALB를 공유

AWS Load Balancer Controller는 동일한 그룹 이름을 가진 Ingress 리소스들을 하나의 ALB로 통합하고, 각각의 호스트와 경로에 대한 라우팅 규칙을 설정합니다.

  • dododocs.com에 대한 요청은 frontend 네임스페이스의 서비스로 라우팅됩니다.
  • developer.dododocs.com에 대한 요청은 infra 네임스페이스의 서비스로 라우팅됩니다.
kubectl get ingress -A                 
# NAMESPACE   NAME               CLASS   HOSTS                    ADDRESS                                         PORTS   AGE
# frontend    app-ingress        alb     example.com              *******.ap-northeast-2.elb.amazonaws.com       80      111m
# infra       infra-ingress      alb     dev.example.com          *******.ap-northeast-2.elb.amazonaws.com       80      102m