올해 초에 NGINX 소프트웨어 솔루션을 위한 새로운 제어 평면으로 NGINX Management Suite를 출시했습니다 . 이를 통해 단일 창에서 NGINX 데이터 평면의 사용자 애플리케이션과 REST API를 구성, 확장, 보호 및 모니터링할 수 있습니다.
NGINX 관리 제품군은 모듈형 디자인을 갖추고 있습니다. 핵심은 인스턴스 관리자 모듈로, 전체 NGINX 오픈 소스 및 NGINX Plus 인스턴스에 대한 추적, 구성 및 가시성을 제공합니다. 이 글을 쓰는 시점에서 API Connectivity Manager는 API 게이트웨이로 실행되는 NGINX Plus를 관리하고 조율하는 데 사용되는 또 다른 모듈입니다.
NGINX 관리 제품군은 베어 메탈, Linux 가상 머신 또는 컨테이너화되어 실행될 수 있습니다. Kubernetes에 배포하는 데 권장되는 방법은 제공되는 Helm 차트를 사용하는 것입니다. 하지만 특정 목적을 위해서는 자체 Docker 이미지를 빌드하고 Helm에 의존하지 않는 사용자 정의 CI/CD 파이프라인을 통해 수명 주기를 관리해야 할 수도 있습니다.
[ 편집자 - 이 게시물은 Docker 이미지 빌드 프로세스를 완전히 자동화하기 위해 2023년 2월에 업데이트되었습니다.]
NGINX Management Suite에 대한 Docker 이미지를 만드는 데 필요한 리소스의 GitHub 저장소를 제공하며, Instance Manager 및 API Connectivity Manager의 다음 버전을 지원합니다.
Docker 이미지를 빌드하려면 다음이 필요합니다.
Docker 이미지를 실행하려면 다음이 필요합니다.
kubectl
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
ps를
실행하여 Docker가 실행 중인지 확인한 다음 buildNIM.sh 스크립트를 실행하여 Docker 이미지를 빌드합니다. ‑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: 2425
다음 지침에 따라 배포 매니페스트를 준비하고 Kubernetes에서 NGINX Management Suite를 시작하세요.
이전 섹션의 4단계 에서 다운로드한 NGINX Management Suite 라이선스를 Base64로 인코딩하고 출력을 클립보드에 복사합니다.
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...
좋아하는 편집기를 사용하여 manifests/1.nginx-nim.yaml을 열고 다음과 같이 변경하세요.
spec.template.spec.containers
섹션에서 기본 이미지 이름( your.registry.tld/nginx-nim2:tag
)을 이전 섹션의 3단계 에서 ‑t
옵션으로 지정한 Docker 이미지 이름(이 경우, registry.ff.lan:31005/nginx-nms:2.5.1 )으로 바꿉니다.
spec: ...
template:
...
spec:
containers:
- name: nginx-nim2
image: your.registry.tld/nginx-nim2:tag
spec.template.spec.containers.env
섹션에서 지정된 각 이름
의 값
필드에 다음과 같은 대체 내용을 넣어 인증 자격 증명을 구성합니다.
NIM_USERNAME
– (선택 사항) 기본 관리자를
관리자 계정 이름으로 바꿉니다.NIM_PASSWORD
– (필수) 기본 nimadmin을
강력한 비밀번호로 바꿉니다.NIM 라이센스
– (필수) 기본값을 교체합니다. <BASE64_인코딩된_라이센스_파일>
위의 1단계에서 생성한 base64로 인코딩된 라이선스를 사용합니다.spec: ...
template:
...
spec:
containers:
...
env:
...
- name: NIM_USERNAME
value: admin
- name: NIM_PASSWORD
value: nimadmin
- name: NIM_LICENSE
value: "<BASE64_ENCODED_LICENSE_FILE>"
원하는 경우 manifests/3.vs.yaml을 편집하여 NGINX 관리 제품군에 접속하는 데 사용되는 호스트 이름을 사용자 정의합니다.
Kubernetes 클러스터에서 NGINX Management Suite를 시작하려면 nimDockerStart.sh를 실행하세요. 추적에서 표시된 대로 nginx-nim2 Pod로 실행됩니다. 이 스크립트는 백엔드 데이터베이스인 ClickHouse 와 분석 시각화를 위한 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
세 개의 포드가 현재 실행 중인지 확인하세요.
$ 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 63s
NGINX Management Suite에 액세스하려면 브라우저에서 https://nim2.f5.ff.lan (또는 이전 섹션의 4단계 에서 설정한 대체 호스트 이름)으로 이동하세요. 이전 섹션의 2단계 에서 설정한 자격 증명을 사용하여 로그인하세요.
NGINX Management Suite의 Docker 인스턴스를 중지하고 제거하려면 다음 명령을 실행하세요.
$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deleted
이 게시물에서 논의된 NGINX 솔루션을 시도하려면 오늘 30일 무료 평가판을 시작하거나 사용 사례에 대해 논의하기 위해 저희에게 연락하세요 .
"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."