NGINX Gateway Fabric: Helm 및 Manifest 설치
NGINX Gateway Fabric 은 Kubernetes 환경에서 API Gateway 역할을 수행하는 강력한 솔루션으로, 클라우드 네이티브 애플리케이션의 네트워크 트래픽을 효율적으로 관리하고 보안 및 성능을 강화하는 기능을 제공합니다.
이 솔루션은 Ingress Controller와 Service Mesh 사이의 중간 계층을 담당하며, 보다 세밀한 트래픽 제어와 인증, 로드 밸런싱을 지원합니다. 특히, Kubernetes에서 Helm 또는 Manifest를 이용하여 쉽게 설치할 수 있으며, 두 방법 모두 장단점이 존재하기 때문에 환경에 맞는 방식을 선택하는 것이 중요합니다.
본 포스트에서는 NGINX Gateway Fabric을 설치하는 두 가지 방법을 상세히 설명하고, 각각의 차이점과 적합한 사용 사례를 제시하여 효과적인 배포 전략을 수립하는 데 도움을 주고자 합니다.
목차
1. NGINX Gateway Fabric 개요
1-1. NGINX Gateway Fabric이란?
2. NGINX Gateway Fabric 설치
2-1. 사전 준비 & 환경
2-2. Helm을 이용한 NGINX Gateway Fabric 설치
2-3. Manifest를 이용한 NGINX Gateway Fabric 설치
3. Helm과 Manifest 방식 비교 및 선택 가이드
4. 결론
1. NGINX Gateway Fabric 개요
NGINX Gateway Fabric은 Kubernetes에서 API Gateway 역할을 수행하며, 트래픽 관리 및 인증, 로드 밸런싱을 최적화하는 기능을 제공합니다. 특히, 기존 NGINX Ingress Controller와 차별화되는 기능으로, 서비스 간 통신을 보다 세밀하게 제어할 수 있도록 설계되었습니다.
Helm 및 Manifest를 이용하여 설치할 수 있으며, 두 가지 방법 중 환경에 맞는 방식을 선택하는 것이 중요합니다. 먼저, NGINX Gateway Fabric이 무엇인지 살펴보고, 이후 각각의 설치 방법을 자세히 설명합니다.
1-1. NGINX Gateway Fabric 이란?
NGINX Gateway Fabric은 Kubernetes 기반의 API Gateway로서, 마이크로서비스 아키텍처에서 서비스 간 통신을 최적화하는 데 중점을 둡니다. 이 솔루션을 활용하면 다음과 같은 이점을 얻을 수 있습니다.
- 고성능 API Gateway 기능 제공: 기존 Kubernetes 리소스와 완벽하게 통합되어 향상된 트래픽 제어 및 인증 기능을 지원합니다.
- 보안 강화: 인증 및 접근 제어 기능을 제공하여 API 보안을 강화할 수 있습니다.
- 로드 밸런싱 및 트래픽 관리: 클라이언트 요청을 적절한 백엔드 서비스로 분배하여 네트워크 성능을 최적화할 수 있습니다.
- 유연한 배포 옵션: Helm 또는 Manifest를 이용하여 손쉽게 배포할 수 있으며, 운영 환경에 맞게 조정이 가능합니다.
2. NGINX Gateway Fabric 설치
2-1. 사전 준비 & 환경
2-2. Helm을 이용한 NGINX Gateway Fabric 설치
Helm은 Kubernetes에서 애플리케이션을 패키징하고 배포하는 도구로, 복잡한 리소스를 보다 쉽게 관리할 수 있습니다. Helm Chart를 사용하면 NGINX Gateway Fabric의 모든 구성 요소를 간편하게 배포할 수 있으며, 설정을 일괄적으로 관리할 수 있습니다.
Helm 설치 확인 및 준비
설치를 진행하기 전에 Helm이 설치되어 있는지 확인해야 합니다. Helm이 없다면 다음 명령어를 실행하여 설치합니다.
# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
# chmod 700 get_helm.sh
# ./get_helm.sh
Gateway API 리소스 설치
참고:
NGINX Gateway Fabric을 배포하기 전에 표준 Gateway API 리소스를 설치해야 합니다. 해당 리소스가 이미 클러스터에 설치되어 있는 경우, NGINX Gateway Fabric에서 지원하는 올바른 버전인지 반드시 확인하세요.
Gateway API 리소스를 설치하려면 다음 명령어를 실행하세요.
kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.5.1" | kubectl apply -f -

참고:
참고:
NGINX Gateway Fabric의 엣지(Edge) 버전을 사용할 계획이라면,ref의 버전을main으로 변경할 수 있습니다. 예를 들어,ref=main으로 설정하면 됩니다.
또한, 실험적(Experimental) 채널에서 Gateway API 리소스를 설치할 수도 있습니다. 실험적 채널의 리소스는 표준 채널의 모든 구성 요소를 포함하며, 추가적인 실험적 리소스와 필드를 제공합니다. 현재 NGINX Gateway Fabric은 실험적 채널에서 제공하는 일부 추가 기능을 지원합니다.
실험적 채널에서 설치하려면 다음 명령어를 실행하세요.
kubectl kustomize “https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.5.1” | kubectl apply -f –
OCI 레지스트리에서 설치하기
다음 단계에서는 OCI Helm 레지스트리에서 NGINX Gateway Fabric을 직접 설치하는 방법을 설명합니다.
1. 최신 안정(stable) 릴리스 설치
다음 명령어를 실행하여 nginx-gateway 네임스페이스에 최신 안정 버전을 설치하세요:
# helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway
ngf는 릴리스 이름이며, 원하는 이름으로 변경할 수 있습니다.- 릴리스 이름은 배포(Deployment) 이름의 접두사로 추가됩니다.
2. 최신(main 브랜치) 버전 설치
최신 버전을 설치하려면 --version 0.0.0-edge 옵션을 추가하세요:
# helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway --version 0.0.0-edge
3. 배포 완료 확인
배포가 완료될 때까지 기다리는 방법은 두 가지가 있습니다:
① --wait 플래그 추가하여 Helm 설치 시 자동 대기:
# helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway --wait
② 설치 후 kubectl wait 명령어 실행:
# kubectl wait --timeout=5m -n nginx-gateway deployment/ngf-nginx-gateway-fabric --for=condition=Available
이제 NGINX Gateway Fabric이 정상적으로 실행될 것입니다.
2-3. Manifest를 이용한 NGINX Gateway Fabric 설치
Gateway API 리소스 설치
참고:
NGINX Gateway Fabric을 배포하기 전에 표준 Gateway API 리소스를 설치해야 합니다. 해당 리소스가 이미 클러스터에 설치되어 있는 경우, NGINX Gateway Fabric에서 지원하는 올바른 버전인지 반드시 확인하세요.
Gateway API 리소스를 설치하려면 다음 명령어를 실행하세요.
kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.5.1" | kubectl apply -f -

참고:
참고:
NGINX Gateway Fabric의 엣지(Edge) 버전을 사용할 계획이라면,ref의 버전을main으로 변경할 수 있습니다. 예를 들어,ref=main으로 설정하면 됩니다.
또한, 실험적(Experimental) 채널에서 Gateway API 리소스를 설치할 수도 있습니다. 실험적 채널의 리소스는 표준 채널의 모든 구성 요소를 포함하며, 추가적인 실험적 리소스와 필드를 제공합니다. 현재 NGINX Gateway Fabric은 실험적 채널에서 제공하는 일부 추가 기능을 지원합니다.
실험적 채널에서 설치하려면 다음 명령어를 실행하세요.
kubectl kustomize “https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.5.1” | kubectl apply -f –
NGINX Gateway Fabric CRD 배포
안정적인(Stable) 릴리스 버전
# kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.1/deploy/crds.yaml

엣지(Edge) 버전
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/main/deploy/crds.yaml
NGINX Gateway Fabric 배포
참고:
기본적으로 NGINX Gateway Fabric은nginx-gateway네임스페이스에 설치됩니다. 다른 네임스페이스에 배포하려면 매니페스트 파일을 수정하세요.
기본 배포 (NGINX OSS 버전 포함)
# kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.1/deploy/default/deploy.yaml

배포 확인
NGINX Gateway Fabric이 정상적으로 실행 중인지 확인하려면 nginx-gateway 네임스페이스의 리소스를 조회하세요.
# kubectl get all -n nginx-gateway
NNAME READY STATUS RESTARTS AGE
pod/ngf-nginx-gateway-fabric-56c5c8df7-tsz9h 2/2 Running 1 (25s ago) 59s
NAME TYPE CLUSTER-IP EXTERNAL-IP
service/ngf-nginx-gateway-fabric LoadBalancer 10.108.224.228 192.168.201.191
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ngf-nginx-gateway-fabric 1/1 1 1 23d
NAME DESIRED CURRENT READY AGE
replicaset.apps/ngf-nginx-gateway-fabric-56c5c8df7 1 1 1 59s

3. Helm과 Manifest 방식 비교 및 선택 가이드
Helm과 Manifest 방식은 각각의 장단점이 있으며, 사용자의 운영 환경과 요구사항에 따라 적절한 방법을 선택하는 것이 중요합니다.
| 방법 | 장점 | 단점 |
|---|---|---|
| Helm | 간편한 설치 및 업데이트, helm upgrade로 유지보수 용이 | 세부적인 설정 변경이 어려울 수 있음 |
| Manifest | YAML 파일을 직접 수정 가능, 세부적인 커스터마이징 가능 | 유지보수가 번거롭고, 수동 업데이트 필요 |
어떤 방식을 선택할 것인가?
- Helm을 사용할 경우: 빠른 배포가 필요하고, 표준적인 설정으로 운영하는 경우
- Manifest를 사용할 경우: 환경에 맞춘 세밀한 설정이 필요하고, Helm을 사용하지 않는 경우
운영 환경에 따라 최적의 배포 방법을 선택하고, 필요한 경우 Helm과 Manifest를 병행하여 사용함으로써 유연한 운영 전략을 수립할 수 있습니다.
4. 결론
NGINX Gateway Fabric은 Kubernetes 환경에서 API Gateway 기능을 수행하며, Helm과 Manifest 두 가지 방식으로 설치할 수 있습니다.
Helm을 이용하면 설치 및 유지보수가 간편하고 일괄적인 설정 관리가 가능하지만, 세부적인 조정이 어려울 수 있습니다. 반면, Manifest 방식을 활용하면 설정을 자유롭게 변경할 수 있지만, 유지보수 및 업데이트가 상대적으로 번거로울 수 있습니다.
각 방법의 장단점을 고려하여 운영 환경에 맞는 적절한 설치 방식을 선택하고, 효율적인 API Gateway 구축을 위한 최적의 솔루션을 적용하는 것이 중요합니다. 이를 통해 Kubernetes 클러스터 내에서 보다 안전하고 최적화된 트래픽 관리를 수행할 수 있습니다.
NGINX Gateway Fabric에 대한 자세한 정보는 NGINX STORE에 문의해서 확인해 보세요.
댓글을 달려면 로그인해야 합니다.