今年初め私たちは、NGINXソフトウェアソリューションの新しいコントロールプレーンとして、NGINXデータプレーン上のユーザーアプリケーションとREST APIの設定、拡張、保護、監視を単一インターフェイスから実行できるNGINX Management Suiteを発表しました。
モジュール式設計の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パイプラインでライフサイクルを管理する必要がある場合もあります。
私たちは、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 0Receiving objects: 100% (215/215), 2.02 MiB | 1.04 MiB/s, done.Resolving deltas: 100% (108/108), done.
ビルドディレクトリに移動します。
$ cd NGINX-Demos/nginx-nms-docker/
+Licenses and Certificatesをクリックし、表示されるInstance [License]パネルのステップ3でDownload Licenseをクリックして、ライセンスをローカルディスクにコピーします。
表示されるDownloadsページで、各フィールドに以下のように値を選択します(選択に応じて新しいフィールドが開きます)。
Download Filesセクションまでスクロールし、nms-api-connectivity-manager_*とnms-instance-manager_*の2つの.debパッケージの行のそれぞれでDownloadをクリックします。
ダウンロードしたパッケージをnim-files/ディレクトリにコピーします(結果は以下のように表示されます)。
$ ls -al nim-files/total 87216drwxrwxr-x 2 f5 f5 4096 Mon DD hh:mm .drwxrwxr-x 8 f5 f5 4096 Mon DD hh:mm ..-rw-r--r-- 1 f5 f5 10724974 Mon DD hh:mm nms-api-connectivity-manager_1.2.0.668430332~jammy_amd64.deb-rw-r--r-- 1 f5 f5 78567074 Mon DD hh:mm nms-instance-manager_2.5.1-663136348~jammy_amd64.deb-rw-rw-r-- 1 f5 f5 0 Mon DD hh:mm .placeholder
docker
ps
を実行してDockerが起動していることを確認し、buildNIM.shスクリプトを実行してDockerイメージを構築します。‑n
オプションと ‑a
オプションは、それぞれInstance ManagerとAPI Connectivity Managerの.debパッケージファイル名を指定し、‑t
オプションは、イメージがプッシュされるプライベートレジストリの場所と名前を指定します。
$ ./scripts/buildNIM.sh -n nim-files/nms-instance-manager_2.5.1-663136348~jammy_amd64.deb -a nim-files/nms-api-connectivity-manager_1.2.0.668430332~jammy_amd64.deb -t registry.ff.lan:31005/nginx-nms:2.5.1==> Building NGINX Management Suite docker imageSending build context to Docker daemon 92.19MBStep 1/18 : FROM ubuntu:22.04---> a8780b506fa4Step 2/18 : ARG NIM_DEBFILE---> Running in 0f2354280c34Removing intermediate container 0f2354280c34[…]---> 0588a050c852Step 18/18 : CMD /deployment/startNIM.sh---> Running in d0cc5466a43dRemoving intermediate container d0cc5466a43d---> 25117ec0410aSuccessfully built 25117ec0410aSuccessfully tagged registry.ff.lan:31005/nginx-nms:2.5.1The push refers to repository [registry.ff.lan:31005/nginx-nms]9c4918474e3a: Pushed42543d044dbb: Pushed1621b2ec0a5e: Pushedc6a464fc6a79: Pushed75fa1d3c61bb: Pushed3501fcf5dbd8: Pushedd4a221057e67: Pushed9ad05eafed57: Pushedf4a670ac65b6: Pushed2.5.1: digest: sha256:9a70cfdb63b71dc31ef39e4f20a1420d8202c85784cb037b45dc0e884dad74c9 size: 2425
以下の手順に従い、Kubernetes上でDeploymentマニフェストを準備し、NGINX Management Suiteを起動します。
前のセクションのステップ4でダウンロードしたNGINX Management SuiteのライセンスをBase64でエンコードして、その出力をクリップボードにコピーします。
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...
任意のエディタを使って、manifests/1.nginx-nim.yamlを開き、以下のように変更します。
19行目で、デフォルトのイメージ名(your.registry.tld/nginx-nim2:tag
)を、前のセクションのステップ9で‑t
オプションを使用して指定したDockerイメージの名前(この例ではregistry.ff.lan:31005/nginx-nms:2.5.1)に置き換えます。
16 spec:
17 containers:
18 - name: nginx-nim2
19 image: your.registry.tld/nginx-nim2:tag
Instance
Manager
Environment
セクションで、認証情報を設定します。
admin
を別の管理者アカウント名に置き換えます。nimadmin
を強力なパスワードに置き換えます。<BASE64_ENCODED_LICENSE_FILE>
を、上記のステップ1で生成したbase64エンコードされたライセンスに置き換えます。
25 env:
26 ### NGINX Instance Manager environment
27 - name: NIM_USERNAME
28 value: admin
29 - name: NIM_PASSWORD
30 value: nimadmin
31 - name: NIM_LICENSE
32 value: "<BASE64_ENCODED_LICENSE_FILE>"
オプションとして、manifests/3.vs.yamlを編集し、NGINX Management Suiteへのアクセスに使用されるホスト名をカスタマイズします。
nimDockerStart.shを実行し、Kubernetesクラスタで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
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 63s
NGINX Management Suiteにアクセスするには、ブラウザでhttps://nim2.f5.ff.lan(または前のセクションのステップ4で設定した代替ホスト名)に移動します。前のセクションのステップ2で設定した認証情報を使用してログインします。
NGINX Management SuiteのDockerインスタンスを停止して削除するには、以下のコマンドを実行します。
$ ./scripts/nimDockerStart.sh stopnamespace "nginx-nim2" deleted
"This blog post may reference products that are no longer available and/or no longer supported. For the most current information about available F5 NGINX products and solutions, explore our NGINX product family. NGINX is now part of F5. All previous NGINX.com links will redirect to similar NGINX content on F5.com."