今年初め、NGINX Management Suiteを発表しました。これはNGINXソフトウェアソリューション向けの新しいコントロールプレーンであり、単一の画面からNGINXデータプレーン上のユーザーアプリケーションとREST APIを構成、拡張、保護、監視できます。
NGINX Management Suiteはモジュール式に設計されており、その中核となるのがInstance Managerモジュールです。このモジュールでは、保有するすべてのNGINX Open SourceおよびNGINX Plusインスタンスを追跡、設定し、可視化できます。本稿執筆時点で利用可能なもう1つのモジュールはAPI Connectivity Managerで、APIゲートウェイとして稼働するNGINX Plusの管理とオーケストレーションに使用します。
NGINX Management Suiteは、ベアメタル、Linux仮想マシン、またはコンテナとして実行できます。Kubernetesへのデプロイには、F5が提供する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+
- Security Monitoring 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オプションを使用してステップ3で指定したDockerイメージ名に置き換えます(この例では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を設定し、manifests/certs配下のファイルを確認、変更して、TLSオフロードに使用するTLS証明書と鍵をカスタマイズします。デフォルトでは、nimDockerStart.sh起動スクリプトにより、コンテナ化されたNGINX Management SuiteがNGINX Ingress Controller経由で公開されます。
- 必要に応じて、manifests/3.vs.yamlを編集し、NGINX Management Suiteへのアクセスに使用するホスト名をカスタマイズします。
- KubernetesクラスターでNGINX Management Suiteを起動するには、nimDockerStart.shを実行します。トレースに示されているとおり、NGINX Management Suiteはnginx-nim2ポッドとして実行されます。このスクリプトは、バックエンドデータベースとしてClickHouseのポッドを、分析の可視化用にGrafanaのポッドも初期化します。詳細については、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- 3つの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 Management Suite
- NGINX Ingress Controller(NGINX Plusベース)
著者について

関連するブログ記事
チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。
AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。
JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。
F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。
NGINX PlusによるAWS Auto Scalingグループの負荷分散
新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります