KubernetesのNMSデプロイ ####
本手順ではいくつかの環境でNMS/NIMをご利用いただくにあたり、セットアップ手順を複数紹介します。 環境にあった手順を実施してください。
こちらの作業は NGINX Management Suite Guide の内容を参照し、実行しています
ラボ環境で動作を確認される場合、作業ホストは ubuntu-master(10.1.1.8)
となります
1. 事前作業 ----
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
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
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
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
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
2. HELMによるNMSのinstall ----
Note
こちらの手順は NMS v2.6.0 のInstall手順となります
F5 Supportサイト MyF5 にログインし、HELMに利用するパッケージをダウンロードすることでインストールが可能となります。
画面上部 RESOURCES
> Downloads
を開き、各プルダウンに以下の内容を選択しダウンロードします(2023/11/15時点)
Group | NGINX |
Product Line | NGINX Instance Manager |
Product Version | 2.14.1 |
Linux Distribution | helmchart |
Distribution Version | 1.21.3 |
Architecture | k8s |
HELM Installに利用するDocker Imagesファイルが表示されます。ダウンロードし、Installを行う環境へ送付します 取得するファイルは以下のような名称となります。
nms-helm-2.14.1.tar.gz
ダウンロードしたファイルをKubernetesへのデプロイを行うホストへ転送します
cd ~/
mkdir nim-install
tar -xf nms-helm-2.14.1.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
nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-14-1/apigw latest 585fd202532e 3 weeks ago 148MB
nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-14-1/integrations latest 5e4f407f4e1f 3 weeks ago 109MB
nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-14-1/ingestion latest 9c346bac76b4 3 weeks ago 115MB
nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-14-1/dpm latest cb116746f789 3 weeks ago 125MB
nginxdevopssvcs.azurecr.io/indigo-tools-docker/platform/release-2-14-1/core latest e6084032b6ee 3 weeks ago 117MB
Docker Imageのタグを変更します
# 予め nms を registry.example.com に作成する
docker images | grep nginxdevops | awk '{ print $1 }' | awk -F"2-14-1" '{ print "docker tag "$1"2-6-0"$2" registry.example.com/root/nms"$2":2.14.1" }' |sh
コンテナイメージをRegistryにPushします
docker images | grep nms | awk '{ print "docker push "$1":"$2}' | sh
以下手順でNGINXが提供するHELMチャートの展開が可能です。
## cd ~/nim-install/
tar -xf nms-hybrid-2.14.1.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.14.1 \
--set core.image.repository=registry.example.com/root/nms/core \
--set core.image.tag=2.14.1 \
--set dpm.image.repository=registry.example.com/root/nms/dpm \
--set dpm.image.tag=2.14.1 \
--set ingestion.image.repository=registry.example.com/root/nms/ingestion \
--set ingestion.image.tag=2.14.1 \
--set integrations.image.repository=registry.example.com/root/nms/integrations \
--set integrations.image.tag=2.14.1 \
--set persistence.enable=false \
nim ./nms-hybrid
## Persistent Volume の作成が必要
正しくデプロイされたことを確認します
helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nim default 1 2022-12-13 15:32:57.809164688 +0000 UTC deployed nms-hybrid-2.14.1 2.14.1
Persistent Volumeの状態を確認します。デプロイする各Podに割り当てられていることが確認できます
kubectl get sc,pv
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
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
3. 外部から接続するためNICのセットアップ ----
cat ~/f5j-nginx-nim-lab/prep/nms-apigw-vs.yaml
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
4. NMS への接続 ----
踏み台ホストにてChromeを開き、 http://nms.example.com/ui に接続してください ログイン情報は以下です。
username | admin | |
password | NIMPassword1234 | HELMで指定した文字列 |
以下の様にTop画面が表示されます
Sign In
をクリックすると Basic認証によるポップアップが表示されます。Username admin
、 Password は Install時の出力で予め確認した文字列
を入力してください ログインが完了すると以下のような画面が表示されます