OpenShift에서 엔터프라이즈급 Ingress Controller가 필요한 이유

많은 기업은 포괄적인 기능 세트, 강력한 아키텍처 및 엔터프라이즈급 지원을 위해 업계에서 인정받는 Red Hat OpenShift 의 Kubernetes 플랫폼 솔루션에 의존하고 있습니다. 이러한 조직이 Kubernetes 플랫폼을 향상하고 애플리케이션 개발 및 배포 주기에서 더 빠른 주기를 달성하기 위해 자동화 기능과 함께 엔터프라이즈급 트래픽 제어 기능을 모색하고 있습니다.

Kubernetes에서는 클러스터로 들어오는 외부 트래픽을 처리하기 위해 Ingress 인터페이스를 사용해야 합니다. 실제로 Kubernetes 애플리케이션에 액세스하는 외부 클라이언트는 Layer 4~7 계층의 트래픽을 클러스터 내의 Kubernetes 서비스에 노출하는 Gateway를 통해 통신합니다.

작동하려면 Ingress 리소스의 트래픽 라우팅 규칙을 Ingress Controller에서 구현해야 합니다. Ingress Controller가 없으면 Ingress는 유용한 작업을 수행할 수 없습니다. 이 다이어그램에서 Ingress Controller는 모든 외부 트래픽을 단일 Kubernetes 서비스로 보냅니다.

Diagram of sample Ingress controller sending all traffic to a single Kubernetes service

모든 트래픽을 단일 Kubernetes 서비스로 보내는 샘플 Ingress Controller
(Kubernetes 문서에서 수정)

목차

1. NGINX Ingress Controller
2. OpenShift 플랫폼에서의 NGINX Ingress Controller 사용 사례
3. 결론

1. NGINX Ingress Controller

NGINX Ingress Controller는 Kubernetes 애플리케이션의 Ingress 및 Egress 트래픽을 제어하는 Ingress Controller 구현으로 자동화된 소프트웨어 구성하여 NGINX Load balancer의 기능을 향상 시킵니다. OpenShift의 기본 Ingress Controller가 제공하는 기본 기능을 넘어 프로덕션 Kubernetes 배포에 필수적인 강력한 트래픽 관리 기능을 제공합니다.

NGINX Ingress Controller는 NGINX 오픈소스 기능이 있는 버전과 NGINX Plus 기능이 있는 버전의 두 가지 버전으로 제공됩니다. NGINX Open Source Ingress Controller는 무료이며 NGINX Plus Ingress Controller는 고급 엔터프라이즈급 기능으로 상업적으로 지원되는 구현입니다.

일반적으로 Ingress Controller 구현은 HTTP와 HTTPS만 지원하지만 NGINX 구현은 TCP, UDP, gRPC 및 WebSocket도 지원합니다. 또한 TLS Passthrough를 지원하므로 TLS‑encrypted 연결을 해독하거나 TLS 인증서 및 키에 액세스하지 않고도 TLS 암호화 연결을 라우팅할 수 있습니다.

이러한 기능 외에도 NGINX Ingress Controller를 사용하면 특정 애플리케이션이나 클러스터로 범위를 지정할 수 있는 세분화된 사용자 지정과 정책 사용이 가능합니다. 정책은 한 번 정의한 다음 필요에 따라 다양한 애플리케이션 영역과 다른 팀에 적용할 수 있습니다. 정책을 사용하여 요청 속도(Rate Limiting)를 제한하고, mTLS 인증을 확인하고, IP 주소 또는 서브넷을 기반으로 트래픽을 허용 또는 거부할 수 있습니다. JWT 유효성 검사 및 WAF 정책(NGINX App Protect WAF 모듈 필요)도 지원됩니다. 이 샘플 정책은 각 클라이언트 IP 주소의 요청을 초당 1개의 요청으로 제한합니다.

apiVersion: k8s.nginx.org/v1
kind: Policy
metadata:
  name: rate-limit-policy
spec:
  RateLimit:
    rate: 1r/s
    key: ${binary_remote_addr}
    zoneSize: 10M

2. OpenShift 플랫폼에서의 NGINX Ingress Controller 사용 사례

NGINX는 NGINX Ingress Controller를 사용해야 하는 최소 세 가지 이유를 확인했습니다.

  • 프로덕션 등급 기능 제공
  • 컨테이너화된 보안
  • 전체 트래픽 관리 제공

아래 다이어그램은 잠재적인 사용 사례에 대한 더 나은 보기를 제공하며, 그 중 일부(트래픽 라우팅 및 WAF 정책)는 이전 섹션에서 설명했습니다.

Diagram showing use cases for NGINX Ingress Controller across operational teams

운영 팀 전체의 NGINX Ingress Controller 사용 사례

흥미로운 샘플 사용 사례는 현재 애플리케이션 버전(Blue)에서 새 버전(Green)으로 프로덕션 트래픽을 전환하고 새 버전이 올바르게 작동하는지 확인하는 Blue-Green 배포를 구현하는 기능입니다. 다음 구성 example에와 같이 트래픽의 90%를 현재 애플리케이션 버전(Blue)으로, 10%를 새 버전(Green)으로 보내는 것으로 시작할 수 있습니다.

트래픽을 모니터링하여 Green 사용자 기반에 문제가 있는지 감지합니다. 문제가 발생하면 구성을 롤백(Rollback)하여 모든 Green 사용자를 Blue 버전으로 다시 라우팅할 수 있습니다. 반대로 새 애플리케이션의 성능이 좋은 경우 트래픽 분할을 조정하여 더 많은 트래픽을 Green 버전으로 보내고 load가 증가할 때 Green 애플리케이션의 성능을 확인하여 결국 모든 트래픽을 새 Green 애플리케이션으로 라우팅하게 됩니다. 오래된 Blue 애플리케이션은 폐기됩니다.

apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
  name: app
spec:
  host: app.example.com
  upstreams:
  - name: products-v1
    service: products-v1-svc
    port: 80
  - name: products-v2 
    service: products-v2-svc
    port: 80
  routes:
  - path: /products
    splits:
    - weight: 90
      action:
        pass: products-v1
    - weight: 10
      action:
        pass: products-v2

3. 결론

Ingress controller는 Load Balancing 그 이상입니다. 간단한 초기 단계 사용 사례의 경우 기본 Ingress controller로 충분할 수 있지만 Cloud‑Native 개발 모델의 이점을 최대한 활용하려는 조직 및 개발팀의 경우 프로덕션 등급 기능이 필수적입니다.

또한 고급 Ingress Controller는 정교한 트래픽 관리뿐 아니라 엔터프라이즈급 보안도 제공해야 합니다. 이는 상호 TLS(mutual TLS) 인증, 암호화된 트래픽 passthrough 및 WAF 보호를 구현하여 달성됩니다.

마지막으로 NetOps 및 NetSecOps 팀도 Ingress Controller의 영향을 받습니다. 네트워크 구성 자동화와 정책 기반 트래픽 제어를 위해 많은 노력을 기울이고 있기 때문에 새로 등장한 Cloud‑Native, OpenShift 기반 Workload가 수동 구성 작업이 필요한 취약점이 되는 것을 허용할 수 없습니다. 이와 반대로 기존 보안 솔루션과 원활하게 통합되어 장치와 플랫폼 간에 일관된 구성을 보장하는 도구를 찾습니다.

NGINX Ingress Controller는 이러한 모든 요구사항을 충족하여 OpenShift에서 Kubernetes 환경을 실행하는 조직에 강력하고 즉각적인 가치를 제공하는 동시에 더 많은 비즈니스 성과를 달성할 수 있도록 지원하는 유연하고 안전하며 확장성이 뛰어난 완벽한 솔루션을 제공합니다.

NGINX Ingress Controller의 30일 무료 평가판을 신청하거나 사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.