1. 개요
Kubernetes 환경에서 하나의 애플리케이션을 도메인(또는 접근 경로) 별로 분리하여 운영해야 하는 경우가 있습니다.
예를 들어, 사용자 전용 도메인과 관리자 전용 도메인을 각각 다른 공인 IP로 서비스해야 하는 보안·정책적 요구사항이 발생할 수 있습니다.
이 문서는 AKS(Azure Kubernetes Service)를 기준으로, 동일한 Pod을 대상으로 하되 도메인/IP를 분리하여 구성하는 일반적인 패턴을 설명합니다.
2. 환경 예시
- Kubernetes 배포 환경: AKS (Azure Kubernetes Service)
- Ingress Controller: NGINX Ingress Controller 또는 Azure Application Gateway Ingress Controller
- Service 타입: LoadBalancer (Azure Public IP 할당)
- 도메인 예시:
- 사용자용:
user.example.com→ IP:20.30.40.50 - 관리자용:
admin.example.com→ IP:20.30.40.60
- 사용자용:
- Pod: 동일한 Selector를 가지는 Deployment 혹은 StatefulSet
3. 지원 범위 및 구성 비교
4. 발생 가능한 문제 사례
- 보안 감사 시: 사용자·관리자 도메인이 동일 IP를 사용하면 정책 위반 판정 가능성
- Pod IP 직접 사용 시: Pod 재배포 시 IP 변경 → 서비스 불가
- 서비스 이름 하나로만 운영 시: DNS 레코드/IP 관리 단일화 불가
5. 원인
- 기본적으로 Kubernetes Service는 하나의 ClusterIP 또는 LoadBalancer IP만 점유
- 동일 IP에 대한 Host 기반 라우팅은 가능하지만, IP 자체 분리는 Service를 분리해야 가능
- Pod 직접 노출(NodePort, hostNetwork) 시 IP/Port 변경 가능성 및 보안 취약점 존재
6. 운영 권장 사항
6.1 도메인/IP 분리가 필요한 경우
- 동일 Selector(같은 Pod)를 바라보는 2개의 LoadBalancer 타입 Service 생성
- 각 Service에 서로 다른 Azure Public IP를 할당
- 도메인 DNS 레코드를 각기 다른 Public IP로 매핑
6.2 한쪽만 Ingress 사용
- 한 Service는 LoadBalancer로 IP만 노출
- 다른 Service는 Ingress Controller를 통해 라우팅
- 정책과 비용 고려 시 유연한 선택 가능
6.3 자동화 관리
- Terraform, Bicep, Helm Chart 등을 사용하여 Service/IP 생성 및 매핑 자동화
- Azure Public IP 자원은 Static으로 할당(동적 할당 방지)
7. 절차 예시 (AKS)
1) Public IP 생성 (Azure CLI)
2) Service 매니페스트 (YAML)
|
3) DNS 설정
admin.example.com→ADMIN_PUBLIC_IPuser.example.com→USER_PUBLIC_IP
8. 참고 URL
- Azure AKS LoadBalancer Service: https://learn.microsoft.com/ko-kr/azure/aks/load-balancer-standard
- NGINX Ingress Controller: https://kubernetes.github.io/ingress-nginx/
- Azure Application Gateway Ingress Controller: http://learn.microsoft.com/ko-kr/azure/application-gateway/ingress-controller-overview
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.