LoginSignup
3
0

[SevOne] Rapid Network Automationをセットアップしてみた

Last updated at Posted at 2023-10-18

はじめに

IBM SevOne Automated Network Observabilityの製品の中に、IBM Rapid Network Automation(IRNA)というコンポーネントが含まれる様になりました。IRNAはAPI主導のローコード・ワークフローエンジンで、iPaaS(Integration Platform as a Service)のような使い勝手を想像すると分かりやすいと思います。ただし、IRNAはSaaSでは無くオンプレミスのデプロイメントとなります。

SevOneのNMSやData Insightは仮想アプライアンス(OVA)としての提供なので仮想基盤にデプロイするだけで良いのですが、IRNAはKubernetesのHelmパッケージとしての提供となっているため、VMのOSからセットアップが必要です。本稿では、VM上にK3sを構成してIRNAをセットアップしてみたので、その手順をご紹介します。

本手順は以下の環境で実施しています。

  • VM: IBM Cloud VSI (Classic)
  • OS: RHEL 8.8
  • K3s: v1.27.6 (Single Node)
  • helm: v3.13.1
  • IRNA: 1.1

本手順の対象・流れ

OSのセットアップを行い、IRNAをインストールし、Web UIにアクセスするところまでとします。
必要な要件はIRNAのイメージに同梱されているInstallation Instructionsに記載がありますが、以下の通りとなっています。

  • RHEL 8.8 or Ubuntu 20.0.4 LTS
  • JRE 11 (インストール時のみ)
  • Kubernetes 1.24.x
  • Helm 3.x

その後付属のスクリプトを使用してIRNAをインストールします。(内部的にはHelmパッケージのインストール)

1. K3s環境セットアップ

K3sのドキュメントHelmのドキュメントを参照して進めていきます。

1.1. firewall無効化

OSのfirewallが無効化されていることを確認します。本環境では無効化済みでした。

[root@irna-host ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor >
   Active: inactive (dead)
     Docs: man:firewalld(1)

firewallを有効のまま進める必要がある場合はドキュメントを参照。

1.2. K3sのインストール

Quick-Start Guideのワンライナーを実行します。

[root@irna-host ~]# curl -sfL https://get.k3s.io | sh -

インストールが成功したら、バージョンを確認します。

[root@irna-host ~]# kubectl version --short
Flag --short has been deprecated, and will be removed in the future. The --short output will become the default.
Client Version: v1.27.6+k3s1
Kustomize Version: v5.0.1
Server Version: v1.27.6+k3s1

1.3. helmのインストール

こちらも公式の手順でインストールします。
繋げてワンライナーとして、以下のコマンドを実行します。

[root@irna-host ~]# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 ./get_helm.sh && bash ./get_helm.sh

インストールが成功したら、バージョンを確認します。

[root@irna-host ~]# helm version --short
v3.13.1+g3547a4b

1.4. JRE 11のインストール

Javaのインストール。単にjavaだとJava 8になってしまうので注意。

[root@irna-host ~]# yum -y install java-11

インストールが成功したら、バージョンを確認します。

[root@irna-host ~]# java -version
openjdk version "11.0.20" 2023-07-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1) (build 11.0.20+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1) (build 11.0.20+8-LTS, mixed mode, sharing)

1.5. K3s Traefik無効化

K3sをインストールするとデフォルトでTraefik Ingress Controllerが動作しているようで、これがExternal-IPを掴んでいます。このままでは、IRNAでデプロイされるNginx Load Balancerとかち合ってしまうため、本手順ではTraefikを無効化します。(本来はポリシーを設定すべきなのかもしれませんが。)

[root@irna-host ~]# kubectl get service -A
NAMESPACE     NAME             TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)                      AGE
default       kubernetes       ClusterIP      10.43.0.1       <none>           443/TCP                      18m
kube-system   kube-dns         ClusterIP      10.43.0.10      <none>           53/UDP,53/TCP,9153/TCP       18m
kube-system   metrics-server   ClusterIP      10.43.240.228   <none>           443/TCP                      18m
kube-system   traefik          LoadBalancer   10.43.5.162     "Global IP"      80:30118/TCP,443:32338/TCP   18m

まずK3sを停止します。

[root@irna-host ~]# service k3s stop
Redirecting to /bin/systemctl stop k3s.service

Systemdのサービスファイルを編集し、末尾のサービス起動オプションに--disable=traefikを追記します。

[root@irna-host ~]# vi /etc/systemd/system/k3s.service
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
EnvironmentFile=-/etc/default/%N
EnvironmentFile=-/etc/sysconfig/%N
EnvironmentFile=-/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=/bin/sh -xc '! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service'
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s \
-    server \
+    server --disable=traefik \

リロードをしてから、K3sサービスを起動します。

[root@irna-host ~]# systemctl daemon-reload
[root@irna-host ~]# systemctl start k3s

Traefikが起動していないことを確認します。

[root@irna-host ~]# kubectl get service -A
NAMESPACE     NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes       ClusterIP   10.43.0.1       <none>        443/TCP                  45m
kube-system   kube-dns         ClusterIP   10.43.0.10      <none>        53/UDP,53/TCP,9153/TCP   45m
kube-system   metrics-server   ClusterIP   10.43.240.228   <none>        443/TCP                  45m

2. IRNAのインストール

2.1. KUBECONFIGの設定

HelmがKUBECONFIGを使用できるように設定します。

[root@irna-host ~]# echo "KUBECONFIG=/etc/rancher/k3s/k3s.yaml" >> ~/.bashrc
[root@irna-host ~]# export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

環境変数のexportを忘れるとhelmによるインストールが失敗しますので、お忘れなく。

2.2. イメージを読み込み

RNAの製品イメージを解凍するとM0DRSENというディレクトリが含まれており、この中にRNAのイメージが含まれています。さらに必要なものを解凍して、イメージをローカルリポジトリに読み込みます。
RNA1.1では24のコンテナ・イメージが読み込まれました。

[root@irna-host ~]# cd M0DRSEN
[root@irna-host M0DRSEN]# gzip -dk ./RNA/images/ibm-images-rna-core-*.tar.gz
[root@irna-host M0DRSEN]# ctr -n k8s.io -a /run/k3s/containerd/containerd.sock image import ./RNA/images/ibm-images-rna-core-*.tar

2.3. インストールスクリプトの実行

install.shを実行します。
License AgreementにAcceptするとインストールが始まります。

[root@irna-host M0DRSEN]# ./install.sh 

IBM RNA core installation is successful.と出力されたら成功です。

2.4. インストールの確認

RNAはrna-coreネームスペースにインストールされています。

[root@irna-host M0DRSEN]# kubectl get pods -n rna-core
NAME                                                    READY   STATUS      RESTARTS      AGE
rna-core-addon-ansible-75f5cb8f69-gvcfs                 1/1     Running     0             21m
rna-core-pliant-kv-store-677d9b6f46-lx8fm               1/1     Running     0             21m
rna-core-addon-napalm-6487f6b7d8-6fpwp                  1/1     Running     0             21m
rna-core-addon-themes-7458c89cb9-x2nqg                  1/1     Running     0             21m
rna-core-addon-mqws-58c8d4fc8c-p58vf                    1/1     Running     0             21m
rna-core-rabbitmq-0                                     1/1     Running     0             21m
rna-core-pliant-proxy-7cd5685f8-sn4k9                   1/1     Running     0             21m
rna-core-pliant-compiler-6d4c476c58-m7795               1/1     Running     0             21m
rna-core-addon-textfsm-6b68c5b9c-7sscr                  1/1     Running     0             21m
rna-core-pliant-front-6d4fb4bbc5-pj228                  1/1     Running     0             21m
rna-core-pliant-front-6d4fb4bbc5-nz2n2                  1/1     Running     0             21m
rna-core-mysqldb-0                                      1/1     Running     0             21m
rna-core-object-storage-0                               1/1     Running     0             21m
rna-core-pliant-flow-converter-66798f97b-jmbgm          1/1     Running     2 (21m ago)   21m
rna-core-pliant-stats-0                                 1/1     Running     0             21m
rna-core-pliant-db-migration-cccf9dbb5-fxfdk            1/1     Running     1 (20m ago)   21m
rna-core-pliant-api-5c5f9877b6-7495l                    2/2     Running     1 (20m ago)   21m
rna-core-pliant-api-5c5f9877b6-lmjcd                    2/2     Running     1 (20m ago)   21m
rna-core-license-add-job-p97wkfjb-mdd2l                 0/1     Completed   0             21m
rna-core-configure-admin-job-k9jhz                      0/1     Completed   0             21m
rna-core-configure-ui-themes-job-b5mrl                  0/1     Completed   0             21m
rna-core-pliant-app-gateway-7c96c6559d-wdjmw            1/1     Running     5 (19m ago)   21m
rna-core-pliant-scheduler-657d7cb9cc-44t4c              1/1     Running     5 (18m ago)   21m
rna-core-install-integrations-hfk67kce-5knb8            0/1     Completed   0             21m
rna-core-pliant-worker-6cbd695bcd-zmsbv                 1/1     Running     6 (16m ago)   21m
rna-core-pliant-worker-nodejs-remote-75d5bc896d-ckhrr   1/1     Running     6 (16m ago)   21m
rna-core-pliant-worker-6cbd695bcd-pgvqj                 1/1     Running     6 (16m ago)   21m
[root@irna-host M0DRSEN]# kubectl get svc -n rna-core
NAME                          TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)                                     AGE
rabbitmq                      ClusterIP      10.43.38.9      <none>           5672/TCP                                    23m
pliant-compiler               ClusterIP      10.43.199.4     <none>           8081/TCP                                    23m
pliant-front                  ClusterIP      10.43.160.169   <none>           8000/TCP                                    23m
pliant-flow-converter         ClusterIP      10.43.1.187     <none>           8081/TCP                                    23m
addon-textfsm                 ClusterIP      10.43.223.120   <none>           5000/TCP                                    23m
pliant-db-migration           ClusterIP      10.43.225.138   <none>           3000/TCP                                    23m
addon-ansible                 ClusterIP      10.43.64.122    <none>           5000/TCP                                    23m
pliant-api                    NodePort       10.43.164.47    <none>           8080:31455/TCP                              23m
pliant-app-gateway            ClusterIP      10.43.221.212   <none>           8083/TCP,2020/TCP                           23m
addon-mqws                    ClusterIP      10.43.134.61    <none>           8084/TCP                                    23m
pliant-worker-nodejs-config   ClusterIP      10.43.226.219   <none>           3000/TCP                                    23m
addon-themes                  ClusterIP      10.43.147.40    <none>           8084/TCP                                    23m
pliant-stats                  ClusterIP      10.43.157.118   <none>           8086/TCP                                    23m
object-storage                ClusterIP      10.43.83.245    <none>           9000/TCP                                    23m
addon-napalm                  ClusterIP      10.43.122.202   <none>           5000/TCP                                    23m
pliant-kv-store               ClusterIP      10.43.64.44     <none>           6379/TCP                                    23m
mysqldb                       ClusterIP      10.43.169.22    <none>           3306/TCP,33060/TCP                          23m
pliant-proxy                  LoadBalancer   10.43.175.11    "Global IP"      80:32544/TCP,443:31086/TCP,5671:31253/TCP   23m

2.5. Web UI へのアクセス確認

adminユーザーのデフォルトパスワードは以下のコマンドで取得します。

[root@irna-host M0DRSEN]# kubectl get secret -n rna-core rna-core-pliant-secrets -o jsonpath='{.data.admin-password}' | base64 -d; echo ""

ブラウザでサービスIP(VMのIP)にアクセスします。
以下のログイン画面が表示されるので、先ほど取得したパスワードでログインします。
image.png

ログインが成功すると、以下のようなダッシュボードが表示されます。
image.png

まとめ

IRNAのセットアップについて、実際にやってみた手順をまとめました。
IRNAでのワークフローの作成例については、また別の機会に。
以上、少しでも参考になれば幸いです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0