블로그 | NGINX

Helm 없이 NGINX 관리 제품군을 배포하기 위한 Docker 이미지 빌드

NGINX-F5-수평-검정-유형-RGB의 일부
파브리지오 피오루치 썸네일
파브리지오 피오루치
2023년 2월 27일 게시

올해 초에 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의 다음 버전을 지원합니다.

  • 인스턴스 관리자 2.4.0+
  • API 연결 관리자 1.0.0+
  • 보안 모니터링 1.0.0+

Docker 이미지를 빌드하려면 다음이 필요합니다.

  • Linux 호스트(베어 메탈 또는 VM)
  • 도커 20.10+
  • 대상 Docker 이미지를 푸시할 수 있는 개인 레지스트리
  • NGINX Management Suite 구독( 또는 30일 무료 체험판 )

Docker 이미지를 실행하려면 다음이 필요합니다.

  • 실행 중인 Kubernetes 클러스터
  • Kubernetes 클러스터에 액세스할 수 있는 kubectl
  • NGINX Plus 기반 NGINX Ingress Controller에 대한 구독( 또는 30일 무료 평가판 )

Docker 이미지 빌드

Docker 이미지를 빌드하려면 다음 지침을 따르세요.

메모: 본 문서는 출판 당시의 NGINX Management Suite UI를 정확하게 표현하기 위해 최선을 다했지만, UI는 변경될 수 있습니다. 이 지침을 참고로 사용하고 필요에 따라 현재 UI에 맞게 조정하세요.

  1. GitHub 저장소를 복제합니다.

    $ git clone https://github.com/nginxinc/NGINX-Demos 'NGINX-Demos'에 복제... 원격: 객체 열거: 215, 완료. 원격: 사물 세기: 100% (215/215), 완료. 원격: 객체 압축: 100% (137/137), 완료. 원격: 총 215(델타 108), 재사용 171(델타 64), 팩 재사용 0 수신 객체: 100% (215/215), 2.02 MiB | 1.04 MiB/s, 완료. 
    델타 해결: 100% (108/108), 완료.
  2. 빌드 디렉토리로 변경:

    $ cd NGINX-데모/nginx-nms-docker/
  3. 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 ==> NGINX Management Suite docker 이미지 빌드 Docker 데몬에 빌드 컨텍스트 전송 92.19MB 1/18단계: ubuntu:22.04에서 ---> a8780b506fa4 2/18단계: ARG NIM_DEBFILE ---> 0f2354280c34에서 실행 중 중간 컨테이너 0f2354280c34 제거 [...] ---> 0588a050c852 18/18단계: CMD /deployment/startNIM.sh ---> d0cc5466a43d에서 실행 중 중간 컨테이너 d0cc5466a43d 제거 ---> 25117ec0410a 25117ec0410a를 성공적으로 빌드했습니다.registry.ff.lan:31005/nginx-nms:2.5.1을 성공적으로 태그 지정했습니다.푸시는 저장소 [registry.ff.lan:31005/nginx-nms] 9c4918474e3a를 참조합니다. 42543d044dbb를 푸시했습니다: 1621b2ec0a5e를 푸시했습니다: c6a464fc6a79를 푸시했습니다: 75fa1d3c61bb를 푸시했습니다: 3501fcf5dbd8을 푸시했습니다: d4a221057e67을 푸시했습니다: 9ad05eafed57을 푸시했습니다: f4a670ac65b6를 푸시했습니다: 2.5.1 푸시: 다이제스트: sha256:9a70cfdb63b71dc31ef39e4f20a1420d8202c85784cb037b45dc0e884dad74c9 크기: 2425

Kubernetes에서 NGINX Management Suite 실행

다음 지침에 따라 배포 매니페스트를 준비하고 Kubernetes에서 NGINX Management Suite를 시작하세요.

  1. 이전 섹션의 4단계 에서 다운로드한 NGINX Management Suite 라이선스를 Base64로 인코딩하고 출력을 클립보드에 복사합니다.

    $ base64 -w0 nginx-mgmt-suite.lic TulNRS1WZXJz...
  2. 좋아하는 편집기를 사용하여 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
      값: 관리자
      - 이름: NIM_PASSWORD
      값: nimadmin
      - 이름: NIM_LICENSE
      값: "<BASE64_ENCODED_LICENSE_FILE>"
  3. TLS 오프로드에 사용되는 TLS 인증서와 키를 사용자 지정하려면 manifests/certs 아래에 있는 파일을 확인하고 수정하여 사용하려는 FQDN을 설정합니다. 기본적으로 nimDockerStart.sh 시작 스크립트는 NGINX Ingress Controller를 통해 컨테이너화된 NGINX Management Suite를 게시합니다.
  4. 원하는 경우 manifests/3.vs.yaml을 편집하여 NGINX 관리 제품군에 접속하는 데 사용되는 호스트 이름을 사용자 정의합니다.

  5. 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 RSA 개인 키 생성 .....................................+++++ .....................................+++++ '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가 생성되었습니다 virtualserver.k8s.nginx.org/grafana가 생성되었습니다 ~/NGINX-NIM2-Docker가 생성되었습니다
  6. 세 개의 포드가 현재 실행 중인지 확인하세요.

    $ kubectl get pods -n nginx-nim2 이름 준비 상태 재시작 나이 clickhouse-759b65db8c-74pn5 1/1 실행 중 0 63초 grafana-95fbbf5c-jczgk 1/1 실행 중 0 63초 nginx-nim2-5f54664754-lrhmn 1/1 실행 중 0 63초

NGINX 관리 제품군에 액세스하기

NGINX Management Suite에 액세스하려면 브라우저에서 https://nim2.f5.ff.lan (또는 이전 섹션의 4단계 에서 설정한 대체 호스트 이름)으로 이동하세요. 이전 섹션의 2단계 에서 설정한 자격 증명을 사용하여 로그인하세요.

NGINX 관리 스위트 중지

NGINX Management Suite의 Docker 인스턴스를 중지하고 제거하려면 다음 명령을 실행하세요.

$ ./scripts/nimDockerStart.sh stop 네임스페이스 "nginx-nim2" 삭제됨

시작하기

이 게시물에서 논의된 NGINX 솔루션을 시도하려면 오늘 30일 무료 평가판을 시작하거나 사용 사례에 대해 논의하기 위해 저희에게 연락하세요 .


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."