NGINX Management Suiteのデプロイ
本手順ではいくつかの環境でNMS/NIMをご利用いただくにあたり、セットアップ手順を複数紹介します。 環境にあった手順を実施してください。
1. NGINX Management Suiteのデプロイ
こちらの作業は NGINX Management Suite Guide の内容を参照し、実行しています
1. LinuxへのInstall
ラボ環境で動作を確認される場合、作業ホストは ubuntu-host1(10.1.1.5) となります
Click HouseのInstall
Install手順はClick Houseのマニュアルを参照しています
Note
こちらの手順は Click House 22.11.2 のInstall手順となります
Installに必要なコンポーネントの取得、Installを行います
sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
Click HouseのInstallします
sudo apt-get install -y clickhouse-server clickhouse-client
1 2 3 4 5 6 7 8 9 | ** 省略 ** chown -R clickhouse-bridge:clickhouse-bridge '/usr/bin/clickhouse-odbc-bridge' chown -R clickhouse-bridge:clickhouse-bridge '/usr/bin/clickhouse-library-bridge' Enter password for default user: password << 左の文字列を入力 Password for default user is saved in file /etc/clickhouse-server/users.d/default-password.xml. Setting capabilities for clickhouse binary. This is optional. chown -R clickhouse:clickhouse '/etc/clickhouse-server' ClickHouse has been successfully installed. |
Click Houseのサービスを起動し、状態を確認します
sudo service clickhouse-server start
sudo service clickhouse-server status
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data) Loaded: loaded (/lib/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-12-13 09:37:45 UTC; 3s ago Main PID: 2774 (clckhouse-watch) Tasks: 205 (limit: 4652) Memory: 65.0M CGroup: /system.slice/clickhouse-server.service ├─2774 clickhouse-watchdog --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid └─2787 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid Dec 13 09:37:45 ip-10-1-1-5 systemd[1]: Started ClickHouse Server (analytic DBMS for big data). Dec 13 09:37:45 ip-10-1-1-5 clickhouse-server[2774]: Processing configuration file '/etc/clickhouse-server/config.xml'. Dec 13 09:37:45 ip-10-1-1-5 clickhouse-server[2774]: Logging trace to /var/log/clickhouse-server/clickhouse-server.log Dec 13 09:37:45 ip-10-1-1-5 clickhouse-server[2774]: Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log Dec 13 09:37:45 ip-10-1-1-5 clickhouse-server[2787]: Processing configuration file '/etc/clickhouse-server/config.xml'. Dec 13 09:37:45 ip-10-1-1-5 clickhouse-server[2787]: Saved preprocessed configuration to '/var/lib/clickhouse/preprocessed_configs/config.xml'. Dec 13 09:37:45 ip-10-1-1-5 clickhouse-server[2787]: Processing configuration file '/etc/clickhouse-server/users.xml'. Dec 13 09:37:45 ip-10-1-1-5 clickhouse-server[2787]: Merging configuration file '/etc/clickhouse-server/users.d/default-password.xml'. Dec 13 09:37:45 ip-10-1-1-5 clickhouse-server[2787]: Saved preprocessed configuration to '/var/lib/clickhouse/preprocessed_configs/users.xml'. |
Click House Clientを実行し、接続できることを確認します
clickhouse-client --password
1 2 3 4 5 6 7 8 9 10 | ClickHouse client version 22.11.2.30 (official build). Password for user (default): password << 先程設定したパスワードを入力してください Connecting to localhost:9000 as user default. Connected to ClickHouse server version 22.11.2 revision 54460. Warnings: * Maximum number of threads is lower than 30000. There could be problems with handling a lot of simultaneous queries. ip-10-1-1-5.xxx.internal :) q << "q" を入力し、クライアントを終了してください Bye. |
- 1行目にClient Version、4行目にClick HouseのVersionが表示されていることがわかります
NGINX Management Suiteのinstall
インストールに利用する証明書・鍵をコピーします
sudo mkdir -p /etc/ssl/nginx
sudo cp ~/nginx-repo.* /etc/ssl/nginx
Installに必要なコンポーネントの取得、Installを行います
printf "deb https://pkgs.nginx.com/nms/ubuntu `lsb_release -cs` nginx-plus\n" | sudo tee /etc/apt/sources.list.d/nms.list
sudo wget -q -O /etc/apt/apt.conf.d/90pkgs-nginx https://cs.nginx.com/static/files/90pkgs-nginx
wget -O /tmp/nginx_signing.key https://cs.nginx.com/static/keys/nginx_signing.key
sudo apt-key add /tmp/nginx_signing.key
NGINX Management Suite を Install します
sudo apt-get update
sudo apt-get install -y nms-instance-manager=2.6.0-698150575~jammy
Install時に出力される結果を確認します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | ** 省略 ** WARNING: user 'nginx' does not exist. Installation will continue. Adding user www-data to group nms Adding user syslog to group nms Ensuring the log file exists, 'touch /var/log/nms/nms.log' Generating default password for 'admin' user account Using openssl version 1.1.1f Writing admin password to /etc/nms/nginx/.htpasswd Checking if clickhouse-server is installed, 'which clickhouse-server'. /usr/bin/clickhouse-server Restarting rsyslog process ---------------------------------------------------------------------- NGINX Management Suite package has been successfully installed. Please follow the next steps to start the software: # Start the Clickhouse database server sudo systemctl start clickhouse-server # Start NGINX web server sudo systemctl start nginx # If NGINX is already running, reload it sudo service nginx reload # Optional: load the included SELinux policy sudo semodule -n -i /usr/share/selinux/packages/nms.pp sudo /usr/sbin/load_policy sudo restorecon -F -R /usr/bin/nms-core sudo restorecon -F -R /usr/bin/nms-dpm sudo restorecon -F -R /usr/bin/nms-ingestion sudo restorecon -F -R /usr/bin/nms-integrations sudo restorecon -F -R /usr/lib/systemd/system/nms.service sudo restorecon -F -R /usr/lib/systemd/system/nms-core.service sudo restorecon -F -R /usr/lib/systemd/system/nms-dpm.service sudo restorecon -F -R /usr/lib/systemd/system/nms-ingestion.service sudo restorecon -F -R /usr/lib/systemd/system/nms-integrations.service sudo restorecon -F -R /var/lib/nms/modules/manager.json sudo restorecon -F -R /var/lib/nms/modules.json sudo restorecon -F -R /var/lib/nms/streaming sudo restorecon -F -R /var/lib/nms sudo restorecon -F -R /var/lib/nms/dqlite sudo restorecon -F -R /var/run/nms sudo restorecon -F -R /var/lib/nms/modules sudo restorecon -F -R /var/log/nms # Start now and ensure the services also starts whenever the system boots sudo systemctl enable nms nms-core nms-dpm nms-ingestion nms-integrations --now # Optional: Start NGINX Management Suite services sudo systemctl start nms sudo systemctl start nms-core sudo systemctl start nms-dpm sudo systemctl start nms-ingestion sudo systemctl start nms-integrations Admin username: admin Admin password: O5oa1sZN9rmvGSo1gHi2BbjQzofSvE Please change this password with your own as soon as possible: https://docs.nginx.com/nginx-management-suite/admin-guides/access-control/configure-authentication/ For UI access, point your browser to the HTTPS port of this machine. ---------------------------------------------------------------------- Processing triggers for rsyslog (8.2001.0-1ubuntu1.1) ... Processing triggers for ufw (0.36-6) ... Processing triggers for systemd (245.4-4ubuntu3.6) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9.2) ... |
- 2-3行目 で NGINXが存在しないためインストールしていることがわかります。NISのSubscriptionではNGINX Plusを利用することが可能で、RBACを利用する場合にはNGINX Plusが必要となります。その場合、NMSInstallの前にNGINX PlusのInstallが必要となります
- 6,8行目 で NIMの初期ユーザ
admin
を作成し、パスワード情報をセットしていることがわかります。その結果が 56,58行目の内容となりますので情報を確認してください
設定ファイルの内容の確認します
sudo cp /etc/nms/nms.conf /etc/nms/nms.conf-
sudo vi /etc/nms/nms.conf
Note
こちらに示す設定ファイルはNIM v2.6.0 の内容となります
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | # This is default /etc/nms/nms.conf file which is distributed with Linux packages. user = nms access_log = stdout error_log = stderr log_encoding = console log_level = error # enable this for core on tcp # core_address = 127.0.0.1:8033 core_address = unix:/var/run/nms/core.sock core_grpc_address = unix:/var/run/nms/coregrpc.sock core_secrets_dir = /var/lib/nms/secrets/ # enable this for dpm on tcp # dpm_address = 127.0.0.1:8034 dpm_address = unix:/var/run/nms/dpm.sock # enable this for dpm grpc server on tcp # dpm_grpc_addr = 127.0.0.1:8036 dpm_grpc_addr = unix:/var/run/nms/am.sock # enable this for integrations on tcp # integrations_address = 127.0.0.1:8037 integrations_address = unix:/var/run/nms/integrations.sock daemon = 1 # Catalogs config metrics_data_dir = /usr/share/nms/catalogs/metrics events_data_dir = /usr/share/nms/catalogs/events dimensions_data_dir = /usr/share/nms/catalogs/dimensions # enable this for ingestion grpc server on tcp # ingest_grpc_addr = 127.0.0.1:8035 ingest_grpc_addr = unix:/var/run/nms/ingestion.sock # enable this for integrations on tcp # integrations_http_addr = 127.0.0.1:8037 integrations_http_addr = unix:/var/run/nms/integrations.sock # Root dqlite db directory ctr_db_root_dir = /var/lib/nms/dqlite # each sub directory here is dedicated to the process # Dqlite config dpm_dqlite_db_addr = 127.0.0.1:7890 core_dqlite_db_addr = 127.0.0.1:7891 integrations_dqlite_db_addr = 127.0.0.1:7892 # NATS config nats_address = nats://127.0.0.1:9100 # nats streaming nats_store_root_dir = /var/lib/nms/streaming # 10GB nats_max_store_bytes = 10737418240 # 1GB nats_max_memory_bytes = 1073741824 # https://docs.nats.io/reference/faq#is-there-a-message-size-limitation-in-nats # 8MB nats_max_message_bytes = 8388608 modules_prefix = /var/lib/nms # ClickHouse config for establishing a ClickHouse connection # Below address not used if TLS mode is enabled # clickhouse_address = 127.0.0.1:9000 # Ensure username and password are wrapped in quotes clickhouse_username = 'default' << 適切に接続できるようにパラメータを指定してください clickhouse_password = 'password' << 適切に接続できるようにパラメータを指定してください ### TLS configurations for ClickHouse connections # TLS is turned off by default # clickhouse_tls_mode = true # Address pointing to <tcp_port_secure> of ClickHouse # Below CH address is used when TLS mode is active # clickhouse_tls_address = 127.0.0.1:9440 # Verification should be skipped for self-signed certificates # clickhouse_tls_skip_verify = true # clickhouse_tls_key_path = /path/to/client-key.pem # clickhouse_tls_cert_path = /path/to/client-cert.pem # clickhouse_tls_ca_path = /etc/ssl/certs/ca-certificates.crt |
Clickhouse で指定した適切な username
、 password
を記述します
NMSを有効にします
sudo systemctl enable nms
sudo systemctl enable nms-core
sudo systemctl enable nms-dpm
sudo systemctl enable nms-ingestion
sudo systemctl enable nms-integrations
NMSを起動します
sudo systemctl start nms
sudo systemctl start nms-core
sudo systemctl start nms-dpm
sudo systemctl start nms-ingestion
sudo systemctl start nms-integrations
NMSが起動していることを確認します
ps aufx | grep nms
1 2 3 4 5 | ubuntu 18756 0.0 0.0 8160 724 pts/0 S+ 10:49 0:00 | \_ grep --color=auto nms nms 18667 1.3 0.9 1261428 37752 ? Ssl 10:49 0:00 /usr/bin/nms-ingestion nms 18687 1.5 0.6 1357064 27024 ? Ssl 10:49 0:00 /usr/bin/nms-integrations nms 18709 4.1 1.3 1374596 52064 ? Ssl 10:49 0:00 /usr/bin/nms-dpm nms 18710 3.9 1.0 1364580 42960 ? Ssl 10:49 0:00 /usr/bin/nms-core |
NGINX Web Serverを再起動します
sudo systemctl restart nginx
NGINXが正しく起動していることを確認します
service nginx status
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-12-13 10:50:05 UTC; 12s ago Docs: man:nginx(8) Process: 18761 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 18775 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 18776 (nginx) Tasks: 3 (limit: 4652) Memory: 4.2M CGroup: /system.slice/nginx.service ├─18776 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─18777 nginx: worker process └─18778 nginx: worker process Dec 13 10:50:05 ip-10-1-1-5 systemd[1]: nginx.service: Succeeded. Dec 13 10:50:05 ip-10-1-1-5 systemd[1]: Stopped A high performance web server and a reverse proxy server. Dec 13 10:50:05 ip-10-1-1-5 systemd[1]: Starting A high performance web server and a reverse proxy server... Dec 13 10:50:05 ip-10-1-1-5 systemd[1]: Started A high performance web server and a reverse proxy server. |
NIM への接続
対象となるホストのIPアドレスを確認し、 踏み台ホストにてChromeを開き、 https://<ホストのIPアドレス>/ui
に接続してください
以下の様にTop画面が表示されます
Sign In
をクリックすると Basic認証によるポップアップが表示されます。Username admin
、 Password は Install時の出力で予め確認した文字列
を入力してください
ログインが完了すると以下のような画面が表示されます
(Option) NIM の Version確認
以下コマンドを使って動作するNIMのVersionを確認いただけます
dpkg -s nms-instance-manager
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Package: nms-instance-manager Status: install ok installed Priority: optional Installed-Size: 188463 Maintainer: NGINX Packaging <nginx-packaging@f5.com> Architecture: amd64 Version: 2.6.0-698150575~focal Depends: adduser, gawk, lsb-release, nginx (>= 1.18.0) | nginx-plus (>= 22), openssl, rsyslog, systemd, tar Recommends: clickhouse-server (>= 21.3.19.1), openssl (>= 1.1.1) Conffiles: /etc/logrotate.d/nms.conf 9c4dc2b56a4496bb35547f205a81d750 /etc/nginx/conf.d/nms-http.conf a4fa61b58ad35d03e1e3d7c6970797ee /etc/nms/nginx/.htpasswd d41d8cd98f00b204e9800998ecf8427e /etc/nms/nginx/errors-grpc.loc_conf 602e26ca21e12a11262c170f88e90c38 /etc/nms/nginx/errors-grpc.server_conf 73f48a717d8e7cb6ce73cdc22efc67b3 /etc/nms/nginx/errors.http_conf 73f1d2692f94440ad35c1c4934dc08cd /etc/nms/nginx/oidc/openid_configuration.conf 42b3c5cb96e5b8a0df87d8c882e59077 /etc/nms/nginx/upstreams/README.md f29b0fe2b4d6856f26f7286f3c9e0579 /etc/nms/nginx/upstreams/mapped_apis/README.md c287571d3c9cddf6a85d2cdd6fc14dae /etc/nms/nms.conf f63c6974768ec18a39977667b3bd820a /etc/rsyslog.d/nms.conf 3fdc4c5ef473f05d85251266b30d8521 /usr/lib/systemd/system/nms-core.service 3bb5bb05e05e9dd1ff62d6f9ea650e3b /usr/lib/systemd/system/nms-dpm.service 9ee5e027e6694ee988c78eff4e043a26 /usr/lib/systemd/system/nms-ingestion.service 69c2bf77c707f59b2f58f9bae0525d66 /usr/lib/systemd/system/nms-integrations.service 23012c3c61c0df2046e65131cbab1fc7 /usr/lib/systemd/system/nms.service 99ce4153417884beb7dac8556544c75c /var/lib/nms/modules.json 58e0494c51d30eb3494f7c9198986bb9 Description: NGINX Management Suite - Instance Manager (core system) Homepage: https://www.nginx.com/products/nginx-instance-manager/ |
(Option) Vault の Install (作成中)
NGINX Management Suite は Secret のストアとしてVaultを利用することが可能です。 Install手順はVaultのマニュアルを参照しています
本手順は参考のInstall手順のみを示しております。利用方法は以下を参照してください。
Note
こちらの手順は Vault v1.12.2 のInstall手順となります
Installに必要なコンポーネントの取得、Installを行います
sudo apt update && sudo apt install gpg
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg >/dev/null
gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
Vault を Install します
sudo apt update && sudo apt install vault
Click Houseのサービスを起動し、状態を確認します
service vault start
service vault status
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | ● vault.service - "HashiCorp Vault - A tool for managing secrets" Loaded: loaded (/lib/systemd/system/vault.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2022-12-13 09:53:30 UTC; 3s ago Docs: https://www.vaultproject.io/docs/ Main PID: 15746 (vault) Tasks: 8 (limit: 4652) Memory: 62.4M CGroup: /system.slice/vault.service └─15746 /usr/bin/vault server -config=/etc/vault.d/vault.hcl Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: Mlock: supported: true, enabled: true Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: Recovery Mode: false Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: Storage: file Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: Version: Vault v1.12.2, built 2022-11-23T12:53:46Z Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: Version Sha: 415e1fe3118eebd5df6cb60d13defdc01aa17b03 Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: ==> Vault server started! Log data will stream in below: Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: 2022-12-13T09:53:30.240Z [INFO] proxy environment: http_proxy="" https_proxy="" no_proxy="" Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: 2022-12-13T09:53:30.240Z [WARN] no `api_addr` value specified in config or in VAULT_API_ADDR; falling back to > Dec 13 09:53:30 ip-10-1-1-5 vault[15746]: 2022-12-13T09:53:30.267Z [INFO] core: Initializing version history cache for core Dec 13 09:53:30 ip-10-1-1-5 systemd[1]: Started "HashiCorp Vault - A tool for managing secrets". |
Vault の Version を確認します
vault version
1 | Vault v1.12.2 (415e1fe3118eebd5df6cb60d13defdc01aa17b03), built 2022-11-23T12:53:46Z |
2. KubernetesへのInstall
ラボ環境で動作を確認される場合、作業ホストは ubuntu-master(10.1.1.8) となります
事前作業
1. 事前セットアップ、HELMのインストール より手順を抜粋し、対象ホストにHELMをインストールします
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
HELMのVersionを確認します
helm version
3. NICのセットアップ より手順を抜粋し、対象ホストにHELMをインストールします
(こちらの手順では、NSMとの連携を実施していない、 nic2
を利用します)
cd ~/
git clone https://github.com/BeF5/f5j-nginx-nim-lab
git clone https://github.com/BeF5/f5j-nginx-observability-lab.git --branch v1.1.0
git clone https://github.com/nginxinc/kubernetes-ingress.git --branch v2.4.1
cd ~/kubernetes-ingress/
cp ~/nginx-repo* .
ls nginx-repo.*
make debian-image-nap-dos-plus PREFIX=registry.example.com/root/nic/nginxplus-ingress-nap-dos TARGET=container TAG=2.4.1
docker login registry.example.com
Username: root << 左の文字列を入力
Password: password << 左の文字列を入力
docker push registry.example.com/root/nic/nginxplus-ingress-nap-dos:2.4.1
HELMでNICをデプロイします
cd ~/kubernetes-ingress/deployments/helm-chart-dos-arbitrator
helm upgrade --install appdos-arbitrator . \
--namespace nginx-ingress \
--create-namespace
cd ~/kubernetes-ingress/deployments/helm-chart
cp ~/f5j-nginx-observability-lab/prep/helm/nic2-addvalue.yaml .
helm upgrade --install nic2 -f nic2-addvalue.yaml . -n nginx-ingress
インストールの結果を確認します
helm list -n nginx-ingress
1 2 3 | NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION appdos-arbitrator nginx-ingress 1 2022-12-13 15:41:32.431534051 +0000 UTC deployed nginx-appprotect-dos-arbitrator-0.1.0 1.1.0 nic2 nginx-ingress 1 2022-12-13 15:50:28.582793864 +0000 UTC deployed nginx-ingress-0.15.1 2.4.1 |
NICへ通信を転送するための設定を行います。
NodePortの情報を確認します。
kubectl get svc -n nginx-ingress | grep nginx-ingress
1 | nic2-nginx-ingress NodePort 10.110.91.42 <none> 80:31253/TCP,443:31851/TCP 43s |
表示されているポート番号を確認してください。これらの情報を元に、NGINXの設定を作成します。
vi ~/f5j-nginx-nim-lab/prep/nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } # TCP/UDP load balancing # stream { ## TCP/UDP LB for NIC2 nginx2 ingressclass server { listen 80; proxy_pass localhost:31253; # nic2 http port of NodePort } server { listen 443; proxy_pass localhost:31851; # nic2 https port of NodePort } } |
設定をコピーし、反映します
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf-
sudo cp ~/f5j-nginx-nim-lab/prep/nginx.conf /etc/nginx/nginx.conf
sudo nginx -s reload
Storage Class, Persistent Volume を作成します。こちらの内容は環境に合わせて適宜変更ください
cd ~/f5j-nginx-nim-lab/prep
kubectl apply -f local-sc.yaml
kubectl apply -f local-pv-10-1-1-9.yaml
kubectl get sc,pv
1 2 3 4 5 6 7 8 9 10 | NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE storageclass.storage.k8s.io/local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 24s NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/pv01 1Gi RWO Delete Available local-storage 12s persistentvolume/pv02 1Gi RWO Delete Available local-storage 12s persistentvolume/pv03 1Gi RWO Delete Available local-storage 12s persistentvolume/pv04 1Gi RWO Delete Available local-storage 12s persistentvolume/pv05 1Gi RWO Delete Available local-storage 12s persistentvolume/pv06 1Gi RWO Delete Available local-storage 12s |
HELMによるNMSのinstall
Note
こちらの手順は NMS v2.6.0 のInstall手順となります
F5 Supportサイト MyF5 にログインし、HELMに利用するパッケージをダウンロードすることでインストールが可能となります。
画面上部 RESOURCES
> Downloads
を開き、各プルダウンに以下の内容を選択しダウンロードします
Group | NGINX |
Product Line | NGINX Instance Manager |
Product Version | 2.6.0 |
Linux Distribution | helmchart |
Distribution Version | 6.0 |
Architecture | k8 |
HELM Installに利用するDocker Imagesファイルが表示されます。ダウンロードし、Installを行う環境へ送付します 取得するファイルは以下のような名称となります。
nms-helm-2.6.0.tar.gz
ダウンロードしたファイルをKubernetesへのデプロイを行うホストへ転送します
cd ~/
mkdir nim-install
tar -xf nms-helm-2.6.0.tar.gz -C ./nim-install
# gzip で圧縮されていない模様
展開した各Docker Imageをloadします
cd ~/nim-install/
ls | grep -v hybrid | awk '{ print "docker load -i "$1 }' | sh
結果を確認します
docker images | grep nginxdevops
1 2 3 4 5 | nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-6-0/apigw latest 585fd202532e 3 weeks ago 148MB nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-6-0/integrations latest 5e4f407f4e1f 3 weeks ago 109MB nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-6-0/ingestion latest 9c346bac76b4 3 weeks ago 115MB nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-6-0/dpm latest cb116746f789 3 weeks ago 125MB nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-6-0/core latest e6084032b6ee 3 weeks ago 117MB |
Docker Imageのタグを変更します
# 予め nms を registry.example.com に作成する
docker images | grep nginxdevops | awk '{ print $1 }' | awk -F"2-6-0" '{ print "docker tag "$1"2-6-0"$2" registry.example.com/root/nms"$2":2.6.0" }' |sh
コンテナイメージをRegistryにPushします
docker images | grep nms | awk '{ print "docker push "$1":"$2}' | sh
以下手順でNGINXが提供するHELMチャートの展開が可能です。
## cd ~/nim-install/
tar -xf nms-hybrid-2.6.0.tgz
ラボ環境では予め作成したHELMチャートを利用します。
## cd ~/nim-install/
mv nms-hybrid/values.yaml nms-hybrid/values.yaml-
cp ~/f5j-nginx-nim-lab/prep/nms-values.yaml nms-hybrid/values.yaml
HELMを利用しデプロイします。この例ではオプションパラメータを指定し、参照する各Imageを指定します
## cd ~/nim-install/
helm upgrade --install \
--set adminPasswordHash=$(openssl passwd -1 "NIMPassword1234") \
--set apigw.image.repository=registry.example.com/root/nms/apigw \
--set apigw.image.tag=2.6.0 \
--set core.image.repository=registry.example.com/root/nms/core \
--set core.image.tag=2.6.0 \
--set dpm.image.repository=registry.example.com/root/nms/dpm \
--set dpm.image.tag=2.6.0 \
--set ingestion.image.repository=registry.example.com/root/nms/ingestion \
--set ingestion.image.tag=2.6.0 \
--set integrations.image.repository=registry.example.com/root/nms/integrations \
--set integrations.image.tag=2.6.0 \
--set persistence.enable=false \
nim ./nms-hybrid
## Persistent Volume の作成が必要
正しくデプロイされたことを確認します
helm list
1 2 | NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION nim default 1 2022-12-13 15:32:57.809164688 +0000 UTC deployed nms-hybrid-2.6.0 2.6.0 |
Persistent Volumeの状態を確認します。デプロイする各Podに割り当てられていることが確認できます
kubectl get sc,pv
1 2 3 4 5 6 7 8 9 10 | NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE storageclass.storage.k8s.io/local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 13m NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/pv01 1Gi RWO Delete Bound default/dpm-dqlite local-storage 13m persistentvolume/pv02 1Gi RWO Delete Bound default/dpm-nats-streaming local-storage 13m persistentvolume/pv03 1Gi RWO Delete Bound default/core-secrets local-storage 13m persistentvolume/pv04 1Gi RWO Delete Bound default/core-dqlite local-storage 13m persistentvolume/pv05 1Gi RWO Delete Bound default/integrations-dqlite local-storage 13m persistentvolume/pv06 1Gi RWO Delete Bound default/clickhouse local-storage 13m |
各PodがRunningであることを確認します
kubectl get pod
1 2 3 4 5 6 7 | NAME READY STATUS RESTARTS AGE apigw-749449768c-hnl2l 1/1 Running 0 30s clickhouse-86f5dd868b-ptdh5 1/1 Running 0 31s core-6d4c9b8ddb-r9xp2 1/1 Running 0 31s dpm-6ffb9c9ff-c7cmx 1/1 Running 0 31s ingestion-696445c77d-br9wr 1/1 Running 0 31s integrations-db4c7c66c-gtwhd 1/1 Running 0 31s |
外部から接続するためNICのセットアップ
cat ~/f5j-nginx-nim-lab/prep/nms-apigw-vs.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | apiVersion: k8s.nginx.org/v1 kind: VirtualServer metadata: name: nms-vs spec: ingressClassName: nginx2 host: nms.example.com upstreams: - name: nms service: apigw port: 443 tls: enable: true routes: - path: / action: pass: nms |
設定を反映します
kubectl apply -f ~/f5j-nginx-nim-lab/prep/nms-apigw-vs.yaml
NIM への接続
踏み台ホストにてChromeを開き、 http://nms.example.com/ui に接続してください ログイン情報は以下です。
username | admin | |
password | NIMPassword1234 | HELMで指定した文字列 |
以下の様にTop画面が表示されます
Sign In
をクリックすると Basic認証によるポップアップが表示されます。Username admin
、 Password は Install時の出力で予め確認した文字列
を入力してください
ログインが完了すると以下のような画面が表示されます
3. Docker ImageのBuild / 実行
ラボ環境で動作を確認される場合、作業ホストは ubuntu-host1(10.1.1.5) となります
Docker ImageのBuild
必要なファイルを取得します。
cd ~/
git clone https://github.com/BeF5/f5j-nms-docker-simple.git --branch v1.0.0
以下コマンドを実行し、Docker Imageを作成します
cd ~/f5j-nms-docker-simple
cp ~/nginx-repo* .
sudo sh ./scripts/buildNIM.sh -C nginx-repo.crt -K nginx-repo.key -i -t nim
Docker Composeによるコンテナの起動
docker-compose でコンテナを実行します
## cd ~/f5j-nms-docker-simple
sudo docker-compose -f docker-compose.yaml up -d
NIMが正しく動作した場合のサンプルのステータスを示します 動作するDockerイメージの状態。clickhouseと前の手順でBuildしたnimのイメージが動作します
sudo docker ps
1 2 3 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 90479d97b943 clickhouse/clickhouse-server:21.12.4.1 "/entrypoint.sh" 17 minutes ago Up 17 minutes 0.0.0.0:8123->8123/tcp, :::8123->8123/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp, 9009/tcp f5j-nms-docker-simple_clickhouse_1 cbe21f598fb7 nim:latest "/bin/sh -c /deploym…" 17 minutes ago Up 17 minutes 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp f5j-nms-docker-simple_nginx-nim2_1 |
正しく動作した場合、NIMのコンテナで以下のログが確認できます
sudo docker logs $(sudo docker ps -a -f name=nim -q)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | Waiting for ClickHouse... Waiting for ClickHouse... Using openssl version 3.0.2 to update NGINX password for admin in file: /etc/nms/nginx/.htpasswd * Starting nginx nginx ...done. [91] [INF] Starting nats-server [91] [INF] Version: 2.9.1 [91] [INF] Git: [not set] [91] [INF] Name: NAKHTJIAR5EXUKXQO4ASOM427BVOPXY34UR2FE5L2O5255IA55NQTT4J [91] [INF] ID: NAKHTJIAR5EXUKXQO4ASOM427BVOPXY34UR2FE5L2O5255IA55NQTT4J [91] [INF] Listening for client connections on 127.0.0.1:4222 [91] [INF] Server is ready [80] [INF] Starting nats-server [80] [INF] Version: 2.9.1 [80] [INF] Git: [not set] [80] [INF] Name: NDRB6PWV4DYBD4AUAKYRZJX4JWT6YX4SCZAR5VP44ONPIFFCISGRLEE4 [80] [INF] Node: 5e1qS4jS [80] [INF] ID: NDRB6PWV4DYBD4AUAKYRZJX4JWT6YX4SCZAR5VP44ONPIFFCISGRLEE4 [80] [INF] Starting JetStream [80] [INF] _ ___ _____ ___ _____ ___ ___ _ __ __ [80] [INF] _ | | __|_ _/ __|_ _| _ \ __| /_\ | \/ | [80] [INF] | || | _| | | \__ \ | | | / _| / _ \| |\/| | [80] [INF] \__/|___| |_| |___/ |_| |_|_\___/_/ \_\_| |_| [80] [INF] [80] [INF] https://docs.nats.io/jetstream [80] [INF] [80] [INF] ---------------- JETSTREAM ---------------- [80] [INF] Max Memory: 1.00 GB [80] [INF] Max Storage: 10.00 GB [80] [INF] Store Directory: "/var/lib/nms/streaming/jetstream" [80] [INF] ------------------------------------------- [80] [INF] Listening for client connections on 127.0.0.1:9100 [80] [INF] Server is ready ⇨ http server started on /var/run/nms/core.sock ⇨ http server started on /var/run/nms/dpm.sock |
NIM への接続
対象となるホストのIPアドレスを確認し、 踏み台ホストにてChromeを開き、 https://<ホストのIPアドレス>/ui
に接続してください。
ログイン情報は docker-compose.yaml
の環境変数として指定している以下文字列となります。
username | admin |
password | nimadmin |
以下の様にTop画面が表示されます
Sign In
をクリックすると Basic認証によるポップアップが表示されます。Username admin
、 Password は Install時の出力で予め確認した文字列
を入力してください
ログインが完了すると以下のような画面が表示されます