今年初め、NGINX ソフトウェア ソリューションの新しいコントロール プレーンとしてNGINX Management Suite を導入しました。これにより、NGINX データ プレーン上のユーザー アプリケーションと REST API を単一の画面から構成、拡張、保護、監視できるようになりました。
NGINX Management Suite はモジュール設計になっており、その中核となるインスタンス マネージャーモジュールは、NGINX Open Source および NGINX Plus インスタンス全体の追跡、構成、可視性を提供します。 この記事の執筆時点では、 API Connectivity Manager は、 API ゲートウェイとして実行されている NGINX Plus を管理およびオーケストレーションするために使用されるもう 1 つの利用可能なモジュールです。
NGINX Management Suite は、ベアメタル上、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-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)、完了。
ビルド ディレクトリに変更します。
$ 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 ==> NGINX Management Suite Docker イメージをビルドしています。ビルド コンテキストを Docker デーモンに送信しています。92.19 MB ステップ 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 を起動します。
前のセクションの手順 4でダウンロードした NGINX Management Suite ライセンスを Base64 でエンコードし、出力をクリップボードにコピーします。
$ base64 -w0 nginx-mgmt-suite.lic TulNRS1WZXJz...
お気に入りのエディターを使用して、 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 ) に置き換えます。
仕様: ...
テンプレート:
...
仕様:
コンテナ:
- 名前: nginx-nim2
イメージ: your.registry.tld/nginx-nim2:tag
spec.template.spec.containers.env
セクションで、指定された各名前
の値
フィールドで次の置換を行って、認証資格情報を設定します。
NIM_USERNAME
– (オプション) デフォルトの管理者を
管理者アカウント名に置き換えます。NIM_PASSWORD
– (必須) デフォルトのnimadmin
を強力なパスワードに置き換えます。NIMライセンス
– (必須)デフォルトを置き換えます <BASE64_ENCODED_LICENSE_FILE>
上記の手順 1 で生成した base64 でエンコードされたライセンスを使用します。仕様: ...
テンプレート:
...
仕様:
コンテナ:
...
環境:
...
- 名前: NIM_USERNAME
値: admin
- 名前: NIM_PASSWORD
値: nimadmin
- 名前: NIM_LICENSE
値: "<BASE64_ENCODED_LICENSE_FILE>"
必要に応じて、 manifests/3.vs.yamlを編集し、NGINX Management Suite にアクセスするために使用されるホスト名をカスタマイズします。
nimDockerStart.shを実行して、Kubernetes クラスターで 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 RSA 秘密鍵を生成しています .....................................+++++ .....................................+++++ 新しい秘密鍵を 'nim2.f5.ff.lan.key' に書き込んでいます ----- secret/nim2.f5.ff.lan created configmap/clickhouse-conf created configmap/clickhouse-users created persistentvolumeclaim/pvc-clickhouse created deploy.apps/clickhouse created service/clickhouse created deploy.apps/nginx-nim2 created service/nginx-nim2 created service/nginx-nim2-grpc created persistentvolumeclaim/pvc-grafana-data created persistentvolumeclaim/pvc-grafana-log created deploy.apps/grafana created service/grafana created virtualserver.k8s.nginx.org/nim2 が作成されました virtualserver.k8s.nginx.org/grafana が作成されました ~/NGINX-NIM2-Docker
3 つのポッドが実行中であることを確認します。
$ kubectl get pods -n nginx-nim2 NAME READY STATUS RESTARTS AGE clickhouse-759b65db8c-74pn5 1/1 実行中 0 63 秒 grafana-95fbbf5c-jczgk 1/1 実行中 0 63 秒 nginx-nim2-5f54664754-lrhmn 1/1 実行中 0 63 秒
NGINX Management Suite にアクセスするには、ブラウザでhttps://nim2.f5.ff.lan (または前のセクションの手順 4で設定した代替ホスト名) に移動します。 前のセクションの手順 2で設定した資格情報を使用してログインします。
NGINX Management Suite の Docker インスタンスを停止して削除するには、次のコマンドを実行します。
$ ./scripts/nimDockerStart.sh 名前空間「nginx-nim2」が削除されたので停止します
この記事で紹介した NGINX ソリューションをお試しいただくには、今すぐ 30 日間の無料トライアルを開始するか、弊社までお問い合わせのうえ、ユースケースについてご相談ください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"