ブログ | NGINX

Helm なしで NGINX Management Suite をデプロイするための Docker イメージの構築

NGINX-F5 水平黒タイプ RGB の一部

今年初め、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 をサポートしています。

  • インスタンス マネージャー 2.4.0+
  • API 接続マネージャー 1.0.0+
  • セキュリティ監視 1.0.0+

Docker イメージをビルドするには、次のものが必要です。

  • Linux ホスト (ベアメタルまたは VM)
  • Docker 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-Demos/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.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 を実行する

次の手順に従ってデプロイメント マニフェストを準備し、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 ) に置き換えます。

      仕様: ...
      テンプレート:
      ...
      仕様:
      コンテナ:
      - 名前: 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>"
  3. 使用する FQDN を設定して、TLS オフロードに使用する TLS 証明書とキーをカスタマイズするには、 manifests/certsの下のファイルを確認して変更します。 デフォルトでは、 nimDockerStart.sh起動スクリプトは、NGINX Ingress Controller を介してコンテナ化された NGINX Management Suite を公開します。
  4. 必要に応じて、 manifests/3.vs.yamlを編集し、NGINX Management Suite にアクセスするために使用されるホスト名をカスタマイズします。

  5. 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
  6. 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 管理スイートへのアクセス

NGINX Management Suite にアクセスするには、ブラウザでhttps://nim2.f5.ff.lan (または前のセクションの手順 4で設定した代替ホスト名) に移動します。 前のセクションの手順 2で設定した資格情報を使用してログインします。

NGINX Management Suite の停止

NGINX Management Suite の Docker インスタンスを停止して削除するには、次のコマンドを実行します。

$ ./scripts/nimDockerStart.sh 名前空間「nginx-nim2」が削除されたので停止します

始める

この記事で紹介した NGINX ソリューションをお試しいただくには、今すぐ 30 日間の無料トライアルを開始するか、弊社までお問い合わせのうえ、ユースケースについてご相談ください


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"