Lab 3 - NGINX Plus の追加

このラボのゴールは新たにNGINX Controllerの管理対象としてNGINX Plusを追加することです。 NGINX Controllerで管理する対象となるNGINX Plusは通常のNGINX Plus Subscriptionと異なる手順でライセンスキーの取得を行います。

Important

想定時間: 15分

Note

このラボの手順はラボを実施する方がWindows jumphost – jumphost-1 から操作する手順を示しています。 接続方法についてはこちらを参照ください。 F5 Labs - Index

NGINX Plus のインストール

  1. “nginxplus-4” インスタンスにログインしてください。”PuTTY” を開き、保存済みのホストより nginxplus-4 を選択し、Open をクリックしてください

    ../../_images/L3Putty.png

    Important

    もし、Puttyがサーバのホスト鍵に関する警告を示した場合、接続のため Yes をクリックしてください これは、ラボ環境の各ホストでユニークなhost keyを生成するため生じるものです

  2. Curl コマンドを実行し、NGINX Controllerのログインに必要なCookie情報を取得します。ログインユーザとしてAdmin権限の Peter Parker でログインします

    $ curl -k -c cookie.txt -X POST --url 'https://10.1.1.5/api/v1/platform/login' --header 'Content-Type: application/json' --data '{"credentials": {"type": "ACTIVE_DIRECTORY","providerName":"ad-acmefinancial-net", "username": "peter@acmefinancial.net","password": "Peter123!@#"}}'
    $ curl -k -b cookie.txt -c cookie.txt -X GET --url 'https://10.1.1.5/api/v1/platform/login'
    
  3. NGINX Plus インストールに利用する証明書と鍵を取得します

    $ curl -k -b cookie.txt -c cookie.txt -X GET --url 'https://10.1.1.5/api/v1/platform/licenses/nginx-plus-licenses/controller-provided' --output nginx-plus-certs.tar.gz
    $ tar zxvf nginx-plus-certs.tar.gz
    $ ls nginx-repo.*
    
  4. NGINX Plus インストールに必要となる手順を実施します。手順の各コマンドの役割は NGINX Plusのインストール手順(Ubuntu) を参照してください

    $ sudo mkdir -p /etc/ssl/nginx
    $ sudo cp nginx-repo.* /etc/ssl/nginx/
    $ sudo wget https://cs.nginx.com/static/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
    $ sudo wget https://cs.nginx.com/static/keys/app-protect-security-updates.key && sudo apt-key add app-protect-security-updates.key
    $ sudo apt-get install apt-transport-https lsb-release ca-certificates
    $ printf "deb https://pkgs.nginx.com/plus/ubuntu `lsb_release -cs` nginx-plus\n" | sudo tee /etc/apt/sources.list.d/nginx-plus.list
    $ printf "deb https://pkgs.nginx.com/app-protect/ubuntu `lsb_release -cs` nginx-plus\n" | sudo tee /etc/apt/sources.list.d/nginx-app-protect.list
    $ printf "deb https://pkgs.nginx.com/app-protect-security-updates/ubuntu `lsb_release -cs` nginx-plus\n" | sudo tee -a /etc/apt/sources.list.d/nginx-app-protect.list
    $ sudo wget -P /etc/apt/apt.conf.d https://cs.nginx.com/static/files/90pkgs-nginx
    $ sudo apt-get update
    
  5. NGINX Plus をインストールします。NGINX Controller に対応したVersionとしてR24をインストールします。NGINX Controllerに対応するNGINX PlusのVersionは Tech Spec を確認してください

    $ sudo apt-get install nginx-plus=24-2~focal
    $ nginx -v
    

NGINX PlusのインスタンスをNGINX Controllerに追加する

  1. jumphostのChromeで開かれているNGINX Controllerの管理画面を操作します。証明書エラーが表示されている場合には適切に操作をして画面を開いてください

    ../../_images/ControllerLogin.png
  2. もし開かれていない場合、Chromeブラウザを開いてください

  3. BookmarkからNGINX Controller UIにアクセスしてください

    ../../_images/ControllerBookmark.png
  4. NGINX Controller のadmin accountである、Peter Parker でログインしてください

    Username Password
    peter@acmefinancial.net Peter123!@#
    ../../_images/ControllerLogin-Peter.png
  5. 画面左上のナビゲーションバーを開き、ドロップダウンリストから Infrastructure を選択してください

    ../../_images/Tile-Infrastructure.png
  6. 画面右上の Create ボタンをクリックしてください

    ../../_images/L3Controller-Infra-Create.png
  7. Add an existing instance を選択し、”nginxplus-4” インスタンスを追加するため、項目に以下の内容を指定してください

    ../../_images/L3Controller-CreateInstance1.png
    Field Value
    Name nginxplus-4
    Location West Coast Data Center (OTHER_LOCATION)
    Allow insecure server connections to NGINX Controller using TLS Enable(Check)
    ../../_images/L3Controller-CreateInstance2.png
  8. Instructions に表示されるCURLコマンドの内容をコピーしてください。次のステップで利用します。コピーが完了しましたら Close をクリックして画面を閉じてください

    ../../_images/L3Controller-CreateInstance3.png
  9. 前の手順で利用した “nginxplus-4” のターミナル、または “PuTTY” を起動し再度 nginxplus-4 を開いてください。Instructions からコピーしたcurlコマンドを実行してください。コマンドを実行するとプロンプトで実行を進めて良いか確認するプロンプトが複数回表示されます。内容を確認して y を入力してください。以下の内容が表示されれば正常に完了です

    ../../_images/L3ControllerAgent-InstallComplete.png
  10. ChromeでNGINX Controllerの Infrastructure を開き、新たに “nginxplus-4” が追加されていることを確認してください。その他ステータスが正しく閲覧できることを確認してください

    ../../_images/L3Controller-Infra-Instances1.png ../../_images/L3Controller-Infra-Instances2.png ../../_images/L3Controller-Infra-Instances3.png
  11. 表示名(Display Name)などを変更する場合は対象インスタンスをクリックし、 Edit をクリックしてください

    ../../_images/L3Controller-Infra-Instances4.png

(Optional) NGINX Controllerの管理対象となるNGINX Plusの設定

NGINX PlusをNGINX Controllerの管理対象として追加した際に、以下のような変更が行われます。参考情報としてご確認ください。

  1. NGINX Plusに対しNGINX Controller Agentが正しくインストールできた場合、以下のようにモジュールが配置されます

    $ ls /etc/nginx/modules
    ngx_http_f5_metrics_module-debug.so
    ngx_stream_f5_metrics_module-debug.so
    ngx_http_f5_metrics_module.so
    ngx_stream_f5_metrics_module.so
    
  2. 管理対象となるNGINX Plusの設定は、NGINX Controllerのみが変更可能となります。
    module2 で案内する手順により対象のNGINX Plusに対し設定を反映する際に、様々な管理用設定も含まれた設定ファイルが生成されます
    以下がその設定内容となります
    $ less /etc/nginx/nginx.conf
    # Generated by NGINX Controller 1639124265 [ADC-a018e23e-770d-4b80-9a5d-9956cedb7738] - instance:nginxplus-4:west;
    ※省略※
    
    load_module modules/ngx_http_f5_metrics_module.so;
    load_module modules/ngx_stream_f5_metrics_module.so;
    
    http {
          f5_metrics on;
          f5_metrics_server unix:/tmp/avr-socket.sr;
    
    ※省略※
    
          log_format controller_recommended_log_format '$remote_addr - "$remote_user" [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$host" sn="$server_name" rt="$request_time" ua="$upstream_addr" us="$upstream_status" ut="$upstream_response_time" ul="$upstream_response_length" cs="$upstream_cache_status" pa="$f5_published_api"';
          access_log /var/log/nginx/access.log controller_recommended_log_format;
          error_log /var/log/nginx/error.log;
    
    ※省略※
    
          server {
                   server_name 127.0.0.1;
                   listen 127.0.0.1:49151;
                   access_log off;
                   f5_metrics off;
                   location /api {
                            api;
                   }
          }
    }
    
    stream {
          f5_metrics on;
          f5_metrics_server unix:/tmp/avr-socket.sr;
    }