ブログ | NGINX

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

今年初め、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-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.
  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 
    ==> 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: 2425

Kubernetes 上で NGINX Management Suite を実行する

次の手順に従ってデプロイメント マニフェストを準備し、Kubernetes 上で NGINX Management Suite を起動します。

  1. 前のセクションの手順 4でダウンロードした NGINX Management Suite ライセンスを Base64 でエンコードし、出力をクリップボードにコピーします。

    $ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...
  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_ENCODED_LICENSE_FILE> 上記の手順 1 で生成した base64 でエンコードされたライセンスを使用します。
      spec:  ...
        template:
          ...
            spec:
              containers:
                ...
                env:
                  ...
                  - name: NIM_USERNAME
                    value: admin
                  - name: NIM_PASSWORD
                    value: nimadmin
                  - name: NIM_LICENSE
                    value: "<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 
    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
  6. 3 つのポッドが実行中であることを確認します。

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

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 日間の無料トライアルを開始するか、弊社までお問い合わせのうえ、ユースケースについてご相談ください


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