Juniper Alert Format Relayのインストール
概要 Juniper Alert Format Relayをインストールするには、インストール前のチェックリストとこれらすべての手順を完了してください。
インストール前のチェックリスト
-
インストールを完了するために必要な情報を収集します。 インストールに必要な情報を参照してください。
-
インストールに使用できる 3 つの新しくインストールされた仮想マシン (VM) があることを確認します。「 仮想マシンの仕様」を参照してください。
-
3 つの VM すべてについて、次のことを確認します。
-
SSH 経由で VM にアクセスできます。
-
VM は以下に到達できます。
-
デフォルトゲートウェイ
-
APT/YUM リポジトリ/ミラー
-
クラウドAPIゲートウェイJuniper Mist
-
ネットワーク監視ツール
-
SYSLOGサーバ
-
-
NTP が構成され、時刻はすべての VM で同期されます。
-
DNSが構成され、DNS解決が機能しています。
-
VM ホストを準備する
- デプロイ機能 VM にログインし、afr ディレクトリを /opt の下に作成します。
mkdir -p /opt/afr
- インストール バンドル TAR ファイル afr-release-<RELEASE-TAG>.tar.gz をデプロイ機能 VM にコピーし、インストール バンドルを /opt/afr の下に抽出します。
tar -xzvf afr-release-<RELEASE-TAG>.tar.gz -C /opt/afr
- /opt/afr/ で、afr-release-<RELEASE-TAG> ディレクトリに移動します。
cd /opt/afr/afr-release-<RELEASE-TAG>
残りの手順では、現在の作業ディレクトリとして /opt/afr/afr-release-<RELEASE-TAG>から作業を続けます。
- クラスター SSH キーを作成します。
ssh-keygen -t rsa -b 4096 -f /root/.ssh/kube_cluster_key chmod 600 /root/.ssh/kube_cluster_key
ローカルレジストリの設定
- 4 つのノードすべての /etc/hosts に afr-registry エントリを追加します。
#On Deployer VM echo "127.0.0.1 afr-registry" >> /etc/hosts #AFR VMs echo "<deployer-vm-ip> afr-registry" >> /etc/hosts
- afr.env ファイルに必要な環境変数を入力します。
afr.env ------- RELEASE_TAG=v0.0.x ANSIBLE_SSH_USER=root ANSIBLE_SSH_KEY=/root/.ssh/kube_cluster_key MIST_API_URL= MIST_API_TOKEN= SNMP_VERSION=<v2c|v3> SNMP_COMMUNITY= SNMP_USER_NAME= SNMP_ENGINE_ID= SNMP_AUTH_PASS= SNMP_PRIV_PASS= SNMP_ADDR=<SNMPMaangerIP>:<Port> SNMP_AUTH_PROTO=<MD5|SHA> SNMP_PRIV_PROTO=<DES|AES> SYSLOG_ADDR=tcp|udp://<SyslogServerIP>:<Port>
- 環境変数を適用します。
export $(cat afr.env | xargs)
- setup-registry.sh を実行して、ローカルレジストリを起動します。
chmod +x setup-registry.sh ./setup-registry.sh
手記:このスクリプトは、コンテナー レジストリ、ファイル サーバー、および Helm リポジトリとして機能する afr-registry を起動します。このスクリプトは、docker コマンドを使用してコンテナーを起動します。
構成の更新
- デプロイ機能 VM で、インベントリ ディレクトリに移動し、hosts.yml ファイルと overrides.yml ファイルを更新します。
手記:
提供されたサンプルのコピーを作成し、詳細を更新できます。
- hosts.ymlファイルで、vars セクションの VM の IP アドレスを更新します。
# Sample Ansible hosts file # Replace node names according to need. --- all: hosts: node1: ansible_host: "{{ node1_ip }}" ip: "{{ node1_ip }}" access_ip: "{{ node1_ip }}" ansible_ssh_user: "{{ lookup('env', 'ANSIBLE_SSH_USER') }}" ansible_ssh_private_key_file: "{{ lookup('env', 'ANSIBLE_SSH_KEY') }}" node2: ansible_host: "{{ node2_ip }}" ip: "{{ node2_ip }}" access_ip: "{{ node2_ip }}" ansible_ssh_user: "{{ lookup('env', 'ANSIBLE_SSH_USER') }}" ansible_ssh_private_key_file: "{{ lookup('env', 'ANSIBLE_SSH_KEY') }}" node3: ansible_host: "{{ node3_ip }}" ip: "{{ node3_ip }}" access_ip: "{{ node3_ip }}" ansible_ssh_user: "{{ lookup('env', 'ANSIBLE_SSH_USER') }}" ansible_ssh_private_key_file: "{{ lookup('env', 'ANSIBLE_SSH_KEY') }}" localhost: ansible_connection: local ansible_python_interpreter: "/usr/local/bin/python3" children: ansible_controller: hosts: localhost: kubespray: hosts: localhost: kube_control_plane: hosts: node1: node2: node3: kube_node: hosts: node1: node2: node3: etcd: hosts: node1: node2: node3: k8s_cluster: children: kube_control_plane: kube_node: keepaliveds: children: k8s_cluster: calico_rr: hosts: {} vars: node1_ip: <AFR-VM1-IP> node2_ip: <AFR-VM2-IP> node3_ip: <AFR-VM3-IP> - overrides.yml ファイルで、VIP アドレスと DNS サーバー IP アドレスを更新します。MIST ソース IP を使用してwebhook_whitelist_rangeを更新します。Webhook の送信元 IP の完全な一覧については、を参照してください。/../..「Juniper Mist管理ガイド」の「/mist-management/topics/ref/firewall-ports-to-open.html#section_cx4_bxp_yxb」を参照してください。™
パブリック CA 証明書があるかどうかに応じて、以下の適切なアクションに従います。
-
パブリック CA 証明書がある場合:
-
ingress_use_self_signed_certs overrides.ymlファイルの false として設定します。
-
証明書とキー ファイルを afr-deployer コンテナーに配置します。
-
overrides.yml ファイル内の証明書とキーのパスを更新します。
ingress_use_self_signed_certs: false ingress_tls_cert_path: "/tmp/tls.crt" ingress_tls_key_path: "/tmp/tls.key"
-
-
パブリック CA 証明書がない場合:
-
ingress_use_self_signed_certs trueに設定します。
.この構成では、自己署名証明書が自動的に生成され、適用されます。
ingress_use_self_signed_certs: true
-
--- # Sample Ansible Overrides ## Alert Format Relay # O F F L I N E offline_setup: true # Registry overrides registry_host: "afr-registry:8443" files_repo: "https://afr-registry:8443/files" ## Kubespray K8s installer vars kubespray_container_name: kubespray kubespray_config_dir: "/etc/{{ kubespray_container_name }}/inventory" kubespray_log_dir: "/etc/{{ kubespray_container_name }}/logs" # Kubernetes version kube_version: v1.27.5 kube_log_level: 2 image_arch: amd64 etcd_version: v3.5.7 cni_version: v1.3.0 crictl_version: v1.27.1 calico_version: v3.25.2 helm_version: v3.12.3 containerd_version: 1.7.5 nerdctl_version: 1.5.0 # K8s networking kube_service_addresses: "172.16.0.0/16" kube_pods_subnet: "192.168.0.0/16" # cluster_name: cluster.local # container_manager: containerd # kube_network_plugin: calico # helm_enabled: true # MetalLB kube_cluster_vip: "<AFR-VIP>" # DNS upstream_dns_servers: - <DNS-Server> # Ingress ingress_use_self_signed_certs: true # specify if CA cert has to be loaded ingress_tls_cert_path: "/tmp/tls.crt" ingress_tls_key_path: "/tmp/tls.key" # Ingress LB service ingress_service_name: ingress-nginx-svc ingress_tls_secret_name: ingress-tls ingress_controller_name: ingress-nginx-controller ingress_controller_ns: ingress-nginx ## AFR Infra overrides # Base Path for K8s local Persistent volumes storage local_storage_base_dir: "/mnt/disks" ## Juniper Alert Format Relay (AFR) apps ## webhook_whitelist_range: 54.193.71.17, 54.215.237.20 webhook_whitelist_range: <MIST-Webhook-SourceIPs> afr_overrides: webhook: app_container_name: webhook app_image_name: "{{ registry_host }}/webhook:{{ afr_release }}" transformer: app_container_name: transformer app_image_name: "{{ registry_host }}/template_engine:{{ afr_release }}" api-client: app_container_name: api-client app_image_name: "{{ registry_host }}/api_client:{{ afr_release }}" dispatcher-syslog: app_container_name: dispatcher-syslog app_image_name: "{{ registry_host }}/dispatcher:{{ afr_release }}" dispatcher-snmp: app_container_name: dispatcher-snmp app_image_name: "{{ registry_host }}/dispatcher:{{ afr_release }}" -
インストールパッケージの展開
- afrディレクトリに移動します。
cd /opt/afr/afr-release-<RELEASE-TAG>
- デプロイ機能コンテナを設定し、コンテナシェルにログインします。
# Bring up the deployer container docker run \ -v "${PWD}/inventory:/deployer/ansible/inventory" \ -v "/root/.ssh/kube_cluster_key:/root/.ssh/kube_cluster_key" \ -v "/etc/kubespray:/etc/kubespray" \ -v "/var/run/docker.sock:/var/run/docker.sock" \ --env-file "${PWD}/afr.env" \ --add-host=afr-registry:host-gateway \ --name afr-deployer \ -d afr-registry:8443/deployer:${RELEASE_TAG} sleep infinity # Shell into the container docker exec -it afr-deployer bash手記:新しいセッションを開き、install.logを開くことで、インストールの進行状況を監視できます。
tail -f /etc/kubespray/logs/install.log
- Kubernetesをデプロイします。
# Container Shell (afr-deployer) cd /deployer/ansible (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-kubernetes.yml # Post Deploy (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/post-deploy.yml - インフラストラクチャ アプリケーションをデプロイします。
(afr-deployer) cd /deployer/ansible # OLM (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-olm.yml # Kafka (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-kafka.yml # Redis (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-redis.yml # Prometheus (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-prometheus.yml # Grafana (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-grafana.yml - ジュニパーアラート形式リレーアプリケーションの導入:
(afr-deployer) cd /deployer/ansible # Webhook (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-webhook.yml # Transformer (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-transformer.yml # Dispatcher (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-dispatcher.yml # API Client (afr-deployer) ansible-playbook \ -i inventory/hosts.yml \ -e @inventory/overrides.yml \ playbooks/deploy-api-client.yml - 展開プロセスを完了するには、MIB ファイルを取得し、それをネットワーク監視ツールにロードしてトラップを処理します。
/opt/afr/afr-release-<RELEASE-TAG>/mibs
MIB ファイルの読み込みを参照してください。