서론
Azure Kubernetes Service(이하 AKS)를 사용하면서 Ingress Controller에 대한 정확한 학습이 필요했습니다.
Azure의 기본 Application Gateway L7 부하 분산 장치를 활용한 Application Gateway Ingress Controller(이하 AGIC)와 많이들 사용하는 Nginx Ingress Controller에 대해 정확한 비교와 학습을 진행하도록 하겠습니다.

Ingress Controller
먼저, Ingress Controller가 뭔지부터 알아야겠죠 ?
Ingress는 AKS 기준으로 수신 트래픽을 뜻하고 Egress는 송신 트래픽을 뜻한다고 생각하면 됩니다.
그럼 Ingress Controller는 어떤 역할을 하는 리소스일까요 ?
Ingress Controller란 kubernetes 클러스터에서 외부 트래픽을 클러스터 내부 서비스로 라우팅하기 위한 특수한 컨트롤러 입니다. Kubernetes의 Ingress 리소스를 구현하고 외부 트래픽을 적적한 서비스로 라우팅하기 위한 역할을 담당합니다.
주요 기능
Ingress Controller의 주요 기능에 대해서 좀 더 자세히 알아보도록 하겠습니다.
- L7기반 HTTP/HTTPS 라우팅 기능을 담당합니다.
- 경로 기반 라우팅 (URL 경로에 따른 다른 서비스로의 라우팅)을 담당합니다.
- 호스트 기반 라우팅 (도메인명에 따라 다른 서비스로 라우팅)을 담당합니다.
- SSL/TLS 종료
- SSL/TLS 종료는 암호화된 HTTPS 트래픽을 수신하여 복호화한 후, 내부 서비스에 HTTP 형태로 전달하는 프로세스를 말합니다. 쉽게 말하면 외부 통신을 '종료'시키고 내부에서는 암호화되지 않은 상태로 통신을 진행하는 것이죠!
- Ingress 논리구조에 따라 부하 분산을 담당합니다.
- Ingress는 Ingress Controller가 참고하게될 라우팅 정보를 가지오있는 객체라고 생각하면 될 것 같습니다.
작동 방식
아래 그림은 Ingress controller 작동원리에 대해서 간단하게 도식화하였습니다.

- 외부 클라이언트가 HTTPS 요청을 Ingress Controller로 보냅니다.
- Ingress Controller는 Kubernetes API Server를 통해 Ingress 리소스의 변경 사항을 지속적으로 감시합니다.
- Ingress 리소스에 정의된 라우팅 규칙을 가져와 Ingress Controller에 적용합니다.
- Ingress Controller는 호스트명과 URL 경로에 기반하여 트래픽을 적절한 Service로 라우팅합니다.
- 서비스는 해당 요청을 적절한 Pod로 전달합니다.
- SSL/TLS 종료가 Ingress Controller에서 이뤄지므로 외부에서는 암호화된 HTTPS 통신이 되지만, 내부에서는 HTTP통신이 가능합니다.
(참고) 일반적인 구현
kubernetes 자체는 Ingress 리소스 타입만 제공하고 실제 구현은 Ingress Controller에서 진행합니다.
Ingress Controller은 대표적으로 Nginx, Application Gateway, Traefik, HAProxy 등이 있습니다.
Application Gateway Ingress Controller (AGIC)
이제 본론으로 들어가서 AGIC에 대해서 알아보도록 하겠습니다.

작동 방식
AGIC는 AKS를 사용하는 고객사들이 kubernetes cluster의 Ingress로 사용할 수 있도록 제공하는 컨트롤러입니다.
Azure L7 로드밸런서인 Applciation Gateway의 기능을 활용하여 클라우드 애플리케이션을 인터넷에 노출합니다.
AGIC는 AKS 클러스터 내부에서 pod로 실행되며, 클러스터의 Ingress 리소스를 모니터링합니다.
변경사항이 감지되면, ARM(Azure Resource Manager) API를 통해 Application Gatway 구성을 업데이트 합니다.
제한 사항
- 테스트해본 결과 Portal에서 AGIC 활성화가 가능합니다. 다만, 현재(25.05.16) 기준으로 Azure CNI Overlay Networking Model의 경우 Public Preview로 지원되지 않고있습니다.
- Application Gateway가 배포되어야하므로 비용이 발생할 수 있습니다.


Nginx Ingress Controller
다음은 Nginx Ingress Controller를 알아보도록 하겠습니다.
Nginx Ingress Controller는 kubernetes 용 오픈 소스 Ingress Contorller로, Nginx 웹 서버를 기반으로 합니다.
kubernetes 커뮤니티에서 가장 널리 사용되는 Ingress Controller 중 하나 입니다.
CSP와 상관없이 kubernetes 환경에서 실행이 가능하기 때문에 많이들 사용하는 것이죠

작동 방식
Nginx Ingress Controller 또한 AGIC와 동일하게 Kubernetes 클러스터 내의 Pod에서 실행됩니다. Nginx 웹 서버를 프록시로 사용합니다. 컨트롤러는 kubernetes API 서버를 통해 Ingress 리소스를 감시하고, 이에 따라 Nginx 설정을 동적으로 업데이트 합니다.
제한 사항
제한 사항으로는 직접 Nginx Ingress Controller를 관리해야하며 확장 설정도 직접 진행해야합니다.
간단하게 이론적인 부분만 알아봤습니다. :)
'Azure' 카테고리의 다른 글
| [Azure] MS EntraID(IdP) Google(SP) Federation & Account Sync (0) | 2025.07.24 |
|---|---|
| [Azure] Application Gateway for container (0) | 2025.05.21 |
| [Azure] Azure Kubernetes Service Networking Model (0) | 2025.05.15 |
| Azure DevOps Service Connection (0) | 2025.05.09 |
| Azure Monitoring Agent 인증 및 권한 부여 프로세스 (9) | 2025.04.01 |