올해 초 NGINX Management Suite를 출시했습니다. 이는 NGINX 소프트웨어 솔루션을 위한 새로운 제어 영역으로, 단일 화면에서 NGINX 데이터 영역의 사용자 애플리케이션과 REST API를 구성하고, 확장하고, 보호하고, 모니터링할 수 있게 해줍니다.
NGINX Management Suite는 모듈식으로 설계되었으며, 그 핵심에는 Instance Manager 모듈이 있습니다. 이 모듈은 전체 NGINX Open Source 및 NGINX Plus 인스턴스에 대한 추적, 구성, 가시성을 제공합니다. 이 글을 작성하는 현재, 그 밖에 사용할 수 있는 모듈은 API Connectivity Manager이며, API 게이트웨이로 실행되는 NGINX Plus를 관리하고 오케스트레이션하는 데 사용됩니다.
NGINX Management Suite는 베어 메탈이나 Linux 가상 머신에서 또는 컨테이너 형태로 실행할 수 있습니다. Kubernetes에 배포할 때 권장되는 방법은 당사에서 제공하는 Helm 차트를 사용하는 것이지만, 특정 용도에 따라 자체 Docker 이미지를 빌드하고 Helm에 반드시 의존하지 않는 사용자 지정 CI/CD 파이프라인을 통해 이미지의 수명 주기를 관리해야 할 수도 있습니다.
[편집자 – Docker 이미지 빌드 프로세스를 완전히 자동화하도록 이 게시물을 2023년 2월에 업데이트했습니다.]
사전 요구 사항
NGINX Management Suite용 Docker 이미지를 만드는 데 필요한 리소스가 포함된 GitHub 리포지토리를 제공합니다. 이 리포지토리는 다음 버전의 Instance Manager 및 API Connectivity Manager를 지원합니다:
- Instance Manager 2.4.0+
- API Connectivity Manager 1.0.0+
- 보안 모니터링 1.0.0+
Docker 이미지를 빌드하려면 다음이 필요합니다:
- Linux 호스트(베어 메탈 또는 VM)
- Docker 20.10+
- 대상 Docker 이미지를 푸시할 수 있는 프라이빗 레지스트리
- NGINX Management Suite 구독(또는 30일 무료 평가판)
Docker 이미지를 실행하려면 다음이 필요합니다:
- 실행 중인 Kubernetes 클러스터
kubectl을(를) 사용하여 Kubernetes 클러스터에 액세스할 수 있어야 함- NGINX Plus 기반 NGINX Ingress Controller 구독(또는 30일 무료 평가판)
Docker 이미지 빌드
다음 지침에 따라 Docker 이미지를 빌드하세요.
참고: 게시 시점의 NGINX Management Suite UI를 정확하게 반영하기 위해 최선을 다했지만, UI는 변경될 수 있습니다. 이 지침을 참고하여 필요에 따라 현재 UI에 맞게 조정하세요.
- GitHub 리포지토리를 복제합니다:
$ git clone https://github.com/nginxinc/NGINX-DemosCloning into 'NGINX-Demos'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (137/137), done.
remote: Total 215 (delta 108), reused 171 (delta 64), pack-reused 0
Receiving objects: 100% (215/215), 2.02 MiB | 1.04 MiB/s, done.
Resolving deltas: 100% (108/108), done.- 빌드 디렉터리로 이동합니다:
$ cd NGINX-Demos/nginx-nms-docker/- Docker가 실행 중인지 확인하려면
dockerps를 실행한 다음, Docker 이미지를 빌드하기 위해 buildNIM.sh 스크립트를 실행합니다.‑i옵션은 자동 빌드 모드를 설정하고,‑C및‑K는 각각 NGINX Management Suite 인증서와 키의 이름을 지정하는 필수 옵션이며,‑t옵션은 이미지를 푸시할 프라이빗 레지스트리의 위치와 이름을 지정합니다.
$ ./scripts/buildNIM.sh -i -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-nms:2.5.1
==> Building NGINX Management Suite docker image
Sending build context to Docker daemon 92.19MB
Step 1/18 : FROM ubuntu:22.04
---> a8780b506fa4
Step 2/18 : ARG NIM_DEBFILE
---> Running in 0f2354280c34
Removing intermediate container 0f2354280c34
[...]
---> 0588a050c852
Step 18/18 : CMD /deployment/startNIM.sh
---> Running in d0cc5466a43d
Removing intermediate container d0cc5466a43d
---> 25117ec0410a
Successfully built 25117ec0410a
Successfully tagged registry.ff.lan:31005/nginx-nms:2.5.1
The push refers to repository [registry.ff.lan:31005/nginx-nms]
9c4918474e3a: Pushed
42543d044dbb: Pushed
1621b2ec0a5e: Pushed
c6a464fc6a79: Pushed
75fa1d3c61bb: Pushed
3501fcf5dbd8: Pushed
d4a221057e67: Pushed
9ad05eafed57: Pushed
f4a670ac65b6: Pushed
2.5.1: digest: sha256:9a70cfdb63b71dc31ef39e4f20a1420d8202c85784cb037b45dc0e884dad74c9 size: 2425Kubernetes에서 NGINX Management Suite 실행
다음 지침에 따라 Deployment 매니페스트를 준비하고 Kubernetes에서 NGINX Management Suite를 시작하세요.
- 이전 섹션의 4단계에서 다운로드한 NGINX Management Suite 라이선스를 Base64로 인코딩하고 출력을 클립보드에 복사합니다:
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...- 선호하는 편집기를 사용하여 manifests/1.nginx-nim.yaml 파일을 열고 다음과 같이 변경합니다:
- In the
spec.template.spec.containers섹션에서 기본 이미지 이름(your.registry.tld/nginx-nim2:tag)을 이전 섹션의‑t옵션을 사용해 지정한 Docker 이미지 이름으로 바꿉니다(3단계). 이 예에서는 registry.ff.lan:31005/nginx-nms:2.5.1입니다:
- In the
spec: ...
template:
...
spec:
containers:
- name: nginx-nim2
image: your.registry.tld/nginx-nim2:tag- In the
spec.template.spec.containers.env섹션에서 표시된 각value필드의name에 다음 값을 대입하여 인증 자격 증명을 구성합니다:
spec: ...
template:
...
spec:
containers:
...
env:
...
- name: NIM_USERNAME
value: admin
- name: NIM_PASSWORD
value: nimadmin
- name: NIM_LICENSE
value: "<BASE64_ENCODED_LICENSE_FILE>"NIM_USERNAME– (선택 사항) 기본값인admin을 관리자 계정 이름으로 바꿉니다.NIM_PASSWORD– (필수) 기본값인nimadmin을(를) 강력한 비밀번호로 변경합니다.NIM_LICENSE– (필수) 기본값인<BASE64_ENCODED_LICENSE_FILE>을(를) 위의 1단계에서 생성한 Base64 인코딩 라이선스로 바꾸세요.
- 사용하려는 FQDN을 설정하여 TLS 오프로딩에 사용되는 TLS 인증서와 키를 사용자 지정하려면 manifests/certs 아래의 파일을 확인하고 수정합니다. 기본적으로 nimDockerStart.sh 시작 스크립트는 NGINX Ingress Controller를 통해 컨테이너화된 NGINX Management Suite를 게시합니다.
- 필요한 경우 manifests/3.vs.yaml 파일을 편집하여 NGINX Management Suite에 접속하는 데 사용할 호스트 이름을 사용자 지정합니다.
- Kubernetes 클러스터에서 NGINX Management Suite를 시작하려면 nimDockerStart.sh를 실행합니다. 추적 로그에 표시된 대로 NGINX Management Suite는 nginx-nim2 Pod로 실행됩니다. 이 스크립트는 백엔드 데이터베이스로 사용할 ClickHouse Pod와 분석 시각화에 사용할 Grafana Pod도 초기화합니다. 자세한 내용은 GitHub 리포지토리의 README를 참조하세요.
$ ./scripts/nimDockerStart.sh start namespace/nginx-nim2 created
~/NGINX-NIM2-Docker/manifests/certs ~/NGINX-NIM2-Docker
Generating a RSA private key
.....................................+++++
.....................................+++++
writing new private key to 'nim2.f5.ff.lan.key'
-----
secret/nim2.f5.ff.lan created
configmap/clickhouse-conf created
configmap/clickhouse-users created
persistentvolumeclaim/pvc-clickhouse created
deployment.apps/clickhouse created
service/clickhouse created
deployment.apps/nginx-nim2 created
service/nginx-nim2 created
service/nginx-nim2-grpc created
persistentvolumeclaim/pvc-grafana-data created
persistentvolumeclaim/pvc-grafana-log created
deployment.apps/grafana created
service/grafana created
virtualserver.k8s.nginx.org/nim2 created
virtualserver.k8s.nginx.org/grafana created
~/NGINX-NIM2-Docker- 이제 세 개의 Pod가 실행 중인지 확인합니다:
$ kubectl get pods -n nginx-nim2 NAME READY STATUS RESTARTS AGE
clickhouse-759b65db8c-74pn5 1/1 Running 0 63s
grafana-95fbbf5c-jczgk 1/1 Running 0 63s
nginx-nim2-5f54664754-lrhmn 1/1 Running 0 63sNGINX Management Suite에 액세스하기
NGINX Management Suite에 액세스하려면 브라우저에서 https://nim2.f5.ff.lan(으)로 이동합니다(또는 이전 섹션의 4단계에서 설정한 대체 호스트 이름으로 이동). 이전 섹션의 2단계에서 설정한 자격 증명을 사용하여 로그인합니다.
NGINX Management Suite 중지
NGINX Management Suite의 Docker 인스턴스를 중지하고 제거하려면 다음 명령을 실행합니다:
$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deleted시작하기
이 게시물에서 설명한 NGINX 솔루션을 사용해 보려면 지금 30일 무료 평가판을 시작하거나, 사용 사례에 대해 논의하려면 문의해 주세요:
- NGINX 관리 제품군
- NGINX Ingress Controller 기반(NGINX Plus)
작성자 소개

관련 블로그 게시물
시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.
F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.
Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.
진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.
NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.
Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.