이 페이지의 내용
주니퍼 경고 형식 릴레이 설치
요약 주니퍼 경고 형식 릴레이를 설치하려면 설치 전 체크리스트와 이 모든 절차를 완료하십시오.
설치 전 체크리스트
-
설치를 완료하는 데 필요한 정보를 수집합니다. 설치에 필요한 정보를 참조하십시오.
-
설치에 사용할 수 있는 새로 설치된 가상 머신(VM)이 세 개 있는지 확인합니다. 가상 머신 사양을 참조하십시오.
-
세 개의 VM 모두에 대해 다음을 확인합니다.
-
SSH를 통해 VM에 연결할 수 있습니다.
-
VM은 다음에 도달할 수 있습니다.
-
기본 게이트웨이
-
APT/YUM 리포지토리/미러
-
주니퍼 Mist 클라우드 API 게이트웨이
-
네트워크 모니터링 도구
-
SYSLOG 서버
-
-
NTP가 구성되고 시간이 모든 VM에서 동기화됩니다.
-
DNS가 구성되고 DNS 확인이 작동하고 있습니다.
-
VM 호스트 준비
- 배포자 VM에 로그인하고 /opt 아래에 afr 디렉터리를 생성합니다.
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 업데이트합니다. 웹훅에 대한 소스 IP의 전체 목록은 .를 참조하십시오. /.. /.. 주니퍼 Mist 관리 가이드의 /mist-management/topics/ref/firewall-ports-to-open.html#section_cx4_bxp_yxb에 있습니다.™
공용 CA 인증서가 있는지 여부에 따라 아래의 적절한 작업을 수행합니다.
-
공용 CA 인증서가 있는 경우:
-
overrides.yml 파일에서와 같이 false ingress_use_self_signed_certs 설정합니다.
-
인증서 및 키 파일을 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 파일 로드를 참조하십시오.