F5 NGINX Management Suite は、NGINX データ プレーンを単一の画面から管理するためのモジュール ファミリです。 NGINX オープンソースおよび NGINX Plus インスタンスの管理を簡素化することで、NGINX Management Suite はapplicationsと API のスケーリング、セキュリティ保護、監視のプロセスを簡素化します。
コントロール プレーンとの通信とリモート構成管理を有効にするには、NGINX Management Suite から管理する各 NGINX インスタンスに NGINX エージェントをインストールする必要があります。
ベアメタルまたは仮想マシン(VM) 上で実行される NGINX インスタンスについては、ドキュメントにインストール手順が記載されています。 この投稿では、NGINX Plus と NGINX Agent 用の Docker イメージを構築して、Kubernetes またはその他のマイクロサービス インフラストラクチャにデプロイされた NGINX Plus インスタンスに NGINX Management Suite の範囲を広げる方法を説明します。
結果の Docker イメージに何を含めるかに応じて、3 つのビルド オプションがあります。
[編集者 – この投稿は、Kubernetes で Docker イメージを実行する手順 1 の手順を明確にし、 ACM_DEVPORTAL
フィールドを追加するために 2023 年 4 月に更新されました。]
NGINX Management Suite のインスタンス マネージャー モジュールのバージョン 2.8.0 以降をサポートする、NGINX Plus および NGINX Agent の Docker イメージを作成するために必要なリソースのGitHub リポジトリを提供します。
Docker イメージをビルドするには、次のものが必要です。
Docker イメージを実行するには、次のものが必要です。
kubectl
Docker イメージをビルドするには、次の手順に従ってください。
GitHub リポジトリをクローンします。
$ git clone https://github.com/nginxinc/NGINX-Demos 'NGINX-Demos' にクローンしています... リモート: オブジェクトの列挙: 126、完了。リモート: オブジェクトのカウント: 100% (126/126)、完了。リモート: オブジェクトの圧縮: 100% (85/85)、完了。リモート: 合計 126 (デルタ 61)、再利用 102 (デルタ 37)、パック再利用 0 受信オブジェクト: 100% (126/126)、20.44 KiB | 1.02 MiB/s、完了。
デルタの解決: 100% (61/61)、完了。
ビルド ディレクトリに変更します。
$ cd NGINX-Demos/nginx-agent-docker/
docker
ps
を実行して Docker が実行中であることを確認し、 build.shスクリプトを実行して必要なソフトウェアを Docker イメージに含めます。 基本オプションは次のとおりです。
‑C
– NGINX Plus ライセンス証明書ファイルの名前 (以下のサンプル コマンドではnginx-repo.crt
)‑K
– NGINX Plus ライセンス キー ファイルの名前 (以下のサンプル コマンドではnginx-repo.key
)‑t
– レジストリとターゲットイメージの形式
<レジストリ名> / <イメージ名> : <タグ>
(以下のサンプルコマンドではregistry.ff.lan:31005/nginx-plus-with-agent:2.7.0
)
‑n
– NGINX Management Suite インスタンスのベース URL (以下のサンプル コマンドではhttps://nim.f5.ff.lan
)追加オプションは次のとおりです。
‑d
– NGINX API Connectivity Manager を使用する場合の開発者ポータルのデータプレーン サポートを追加します。‑w
– NGINX App Protect WAF を追加さまざまなソフトウェアの組み合わせに対するコマンドは次のとおりです。
NGINX Plus および NGINX Agent:
nginx-repo.crt をビルドすると、以下のようになります。
NGINX Plus、NGINX Agent、NGINX App Protect WAF ( ‑w
オプションを追加):
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \-t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -w \ -n https://nim.f5.ff.lan
NGINX Plus、NGINX Agent、開発者ポータルのサポート ( ‑d
オプションを追加):
nginx-repo.crt をビルドすると、以下のようになります。
以下は、基本イメージのビルドのサンプル トレースです。 最後に「ビルド
完了」
メッセージが表示されれば、ビルドが成功したことがわかります。
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -n https://nim.f5.ff.lan => ターゲット Docker イメージは nginx-plus-with-agent:2.7.0 です [+] ビルド 415.1 秒 (10/10) 完了 => [内部] Dockerfile からビルド定義をロード => dockerfile を転送中: 38B => [内部] .dockerignore をロード => コンテキストを転送中: 2B => [内部] docker.io/library/centos:7 のメタデータをロード => [認証] library/centos:registry-1.docker.io のトークンをプル => キャッシュ済み [1/4] docker.io/library /centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 から => [内部] ビルド コンテキストをロード => コンテキストを転送中: 69B => [2/4] 実行 yum -y update && yum install -y wget ca-certificates epel-release curl && mkdir -p /deployment /etc/ssl/nginx && bash -c 'curl -k $NMS_URL/install/nginx-agent | sh' && echo "A 299.1s => [3/4] COPY ./container/start.sh /deployment/ => [4/4] RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key set -x && chmod +x /deployment/start.sh & 102.4s => イメージにエクスポート => レイヤーをエクスポート => イメージの書き込み sha256:9246de4af659596a290b078e6443a19b8988ca77f36ab90af3b67c03d27068ff => 名前を付けるregistry.ff.lan:31005/nginx-plus-with-agent:2.7.0 => registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 のビルドが完了しました
次の手順に従ってデプロイメント マニフェストを準備し、Kubernetes 上の NGINX エージェントを使用して NGINX Plus を起動します。
好みのテキスト エディターを使用して、 manifests/1.nginx-with-agent.yamlを開き、次の変更を加えます (コード スニペットには、変更できる、または変更する必要があるデフォルト値がオレンジ色で強調表示されています)。
spec.template.spec.containers
セクションで、デフォルトのイメージ名 ( your.registry.tld/nginx-with-nim2-agent:tag
) を、 Docker イメージの構築の手順 3 で‑t
オプションを使用して指定した Docker イメージ名 (この場合はregistry.ff.lan:31005/nginx-plus-with-agent:2.7.0 ) に置き換えます。
仕様: ... テンプレート: ... 仕様: コンテナー: - 名前: nginx-nim イメージ: your.registry.tld/nginx-with-nim2-agent:tag
spec.template.spec.containers.env
セクションで、指定された各名前
の値
フィールドで次の置換を行います。
NIM_HOST
– (必須) デフォルト ( nginx-nim2.nginx-nim2
) を、NGINX Management Suite インスタンスの FQDN または IP アドレス (この場合はnim2.f5.ff.lan ) に置き換えます。NIM_GRPC_PORT
– (オプション) デフォルト (443
) を gRPC トラフィック用の異なるポート番号で使用します。NIM_INSTANCEGROUP
– (オプション) デフォルト ( lab
) を、NGINX Plus インスタンスが属するインスタンス グループに置き換えます。NIM_TAGS
– (オプション) デフォルト ( preprod,devops
) を、NGINX Plus インスタンスのタグのカンマ区切りリストに置き換えます。仕様: ... テンプレート: ... 仕様: コンテナ: ... 環境: - 名前: NIM_HOST ... 値: " nginx-nim2.nginx-nim2 " - 名前: NIM_GRPC_PORT 値: "443 " - 名前: NIM_INSTANCEGROUP 値: " lab " - 名前: NIM_TAGS 値: " preprod,devops "
また、 spec.template.spec.containers.env
セクションで、指定された条件が当てはまる場合は、次の名前
と値の
フィールドのペアのコメントを解除します。
NIM_WAF
およびNIM_WAF_PRECOMPILED_POLICIES
– NGINX App Protect WAF がイメージに含まれている ( Docker イメージの構築の手順 3 で-w
オプションを含めました) ため、値は"true"
です。ACM_DEVPORTAL
– App Connectivity Manager 開発者ポータルのサポートがイメージに含まれている ( Docker イメージの構築の手順 3 で-d
オプションを含めた) ため、値は"true"
です。仕様: ... テンプレート: ... 仕様: コンテナ: ... 環境: - 名前: NIM_HOST ... #- 名前: NAP_WAF # 値: "true" #- 名前: NAP_WAF_PRECOMPILED_POLICIES # 値: "true" ... #- 名前: ACM_DEVPORTAL # 値: "true"
指示に従ってnginxwithAgentStart.shスクリプトを実行し、マニフェストを適用して 2 つのポッド (レプリカによって指定されているとおり) を起動します。
2
マニフェストの仕様
セクションの指示に従って、それぞれ NGINX Plus と NGINX Agent を使用します。
$ ./scripts/nginxWithAgentStart.sh 開始$ ./scripts/nginxWithAgentStart.sh 停止
2 つのポッドが実行中であることを確認します。各ポッドは、NGINX Plus インスタンスと NGINX エージェントを実行して、NGINX Management Suite コントロール プレーンと通信します。
$ kubectl get pods -n nim-test名前 準備完了 ステータス 再起動 経過時間 nginx-nim-7f77c8bdc9-hkkck 1/1 実行中 0 1m nginx-nim-7f77c8bdc9-p2s94 1/1 実行中 0 1m
NGINX Management Suite の NGINX インスタンス マネージャー GUI にアクセスし、2 つの NGINX Plus インスタンスがオンラインのステータスで実行されていることを確認します。 この例では、NGINX App Protect WAF は有効になっていません。
この記事で紹介した NGINX ソリューションをお試しいただくには、今すぐ30 日間の無料トライアルを開始するか、弊社までお問い合わせのうえ、ユースケースについてご相談ください。
NGINX Agentをダウンロードしてください。無料のオープンソースです。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"