Contrail Insights OpenStack Helm용 설치
OpenStack Helm은 Kubernetes 클러스터에 OpenStack 서비스를 구축하기 위한 Helm 차트를 제공하는 프로젝트입니다. Contrail Insights Kubernetes 리소스는 물론 OpenStack 리소스를 단일 Dashboard에서 모니터링하기 위해 구축할 수 있습니다.
아키텍처 및 용어
Kubernetes 클러스터 노드 | 네트워크 모니터링을 진행하는 Kubernetes 클러스터의 기본 노드 및 Contrail Insights. 이들 노드는 Contrail Insights Agent를 실행합니다. |
OpenStack 클러스터 노드 | 컨테이너에서 OpenStack 서비스(Keystone, Nova, Neutron 등)를 실행하는 클러스터의 Kubernetes 노드 |
Contrail Insights 플랫폼 노드 | 플랫폼 구성 Contrail Insights 설치할 노드 Kubernetes 클러스터 노드에 도달할 수 있습니다.
그림 1: Contrail Insights 및 OpenStack Helm 워크플로우
![]() |
요구 사항
다음은 OpenStack Helm을 위한 Contrail Insights 요구 사항입니다.
지원되는 Kubernetes 버전: 1.8.x 이상
하드웨어 및 Contrail Insights 요구 사항에 대한 자세한 일반 요구 사항을 참조하십시오.
Kubernetes API 서버에 대한 API 액세스. Contrail Insights API 서버에서 Kubernetes 클러스터에 대한 정보를 읽습니다. 구성 중에 제공되는 토큰은 읽기 전용 API 호출에 충분한 권한을 제공해야 합니다. 또한 Contrail Insights 플랫폼은 API 서버가 실행되는 호스트 및 포트에 대한 연결을 열 수 있어야 합니다.
OpenStack 서비스에 대한 API 액세스. Contrail Insights 다양한 OpenStack 서비스가 제공하는 API를 통해 OpenStack 클러스터에 대한 정보를 읽습니다. 구성 중에 제공되는 사용자 자격 증명은 읽기 전용 API 호출에 충분한 권한을 제공해야 합니다. 또한 Contrail Insights 플랫폼은 API 서버가 실행되는 호스트 및 포트에 대한 연결을 열 수 있어야 합니다.
-
참고:
업그레이드 공지: Contrail Insights 3.2.6에서 시작하여 라이선스 파일에 대한 요구 사항이 제거됩니다. 3.2.6보다 일찍 버전을 설치하는 경우 설치 전에 라이선스가 필요합니다.
라이선스 키를 에서 얻을 수 mailto:APPFORMIX-KEY-REQUEST@juniper.net. 요청 시 다음과 같은 정보를 제공합니다.
Group name: Target customers or use: Cluster type: OpenStack on Kubernetes Number of hosts: Number of instances:
워크플로
설치는 다음과 같은 단계로 구성됩니다.
최초 설정.
Agent 설치를 위한 사전 사전 전제
Kubernetes 구성.
Configuring OpenStack.
설치 Contrail Insights.
구성 옵션.
최초 설정
초기 설정을 위해 다음 명령을 실행합니다.
이 필수 패키지를 Contrail Insights 플랫폼 노드에 설치하십시오.
#Ubuntu apt-get update apt-get install python-pip python-dev build-essential libssl-dev libffi-dev pip install ansible==2.3.0.0 markupsafe httplib2
#RHEL/CentOS yum install epel-release #Enable EPEL repository In case the above command does not work, manually download and install the epel-release package with one of the below commands, depending on your system’s version. yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm yum groupinstall 'Development Tools' #Install development tools yum install openssl-devel libffi libffi-devel #Dependencies yum install python-pip python-devel #Install Pip pip install ansible==2.3.0 #Install Ansible 2.3 pip install markupsafe httplib2 #Dependencies
참고:RHEL의 경우 포트 9000에 액세스하려면 다음 iptable 규칙이 필요합니다.
iptables -t filter -A IN_public_allow -p tcp --dport 9000 -j ACCEPT
Contrail Insights 플랫폼 노드에서 /etc/hosts 파일을 편집하고 Kubernetes 클러스터 노드에서 OpenStack의 IP 주소를 입력합니다.
vi /etc/hosts <kube-master-ip> k8s-master <kube-worker1-ip> k8s-node1 <kube-worker2-ip> k8s-node2
kubernetes 클러스터 노드에서 Contrail Insights 플랫폼 노드와 OpenStack 간에 암호가 없는 SSH를 설정합니다. 다음 명령을 실행하여 SSH 공용 키를 모든 노드에 생성하고 복사합니다.
ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub root@k8s-master ssh-copy-id -i ~/.ssh/id_rsa.pub root@k8s-node1 ssh-copy-id -i ~/.ssh/id_rsa.pub root@k8s-node2 ssh-copy-id -i ~/.ssh/id_rsa.pub root@<IP of Contrail Insights Platform node>
Agent 설치를 위한 사전 전제
Contrail Insights 라이브러리를 사용하여 OpenStack 컴퓨팅 노드에서 실행되는 가상 머신에서 데이터를 libvirt
수집합니다. 모든 OpenStack 컴퓨팅에서 다음 명령을 실행하여 라이브러리를 설치합니다.
On Ubuntu hosts: sudo apt-get install libvirt0:amd64 On Centos hosts: sudo yum install libvirt-client
Kubernetes 구성
Contrail Insights Kubernetes 클러스터의 리소스에 대한 정보를 읽습니다. 소프트웨어는 클러스터의 모든 객체에 읽기 전용 액세스를 제공하는 역할 또는 또 다른 cluster-admin
역할을 필요로 합니다. 새로운 서비스 계정을 생성하고 Contrail Insights 할당하는 것이 cluster-admin
좋습니다. 새 Service Account를 생성하지 않는 경우, 서비스 구성 시 필요한 액세스 권한을 보유한 기존 Service Account에서 토큰을 Contrail Insights.
액세스가 필요한 새 Service Account를 Contrail Insights Kubernetes 클러스터 기본 노드의 OpenStack에서 다음 단계를 수행합니다.
YAML 파일을 다음과 같이 작성합니다.
apiVersion: v1 kind: ServiceAccount metadata: name: appformix
1단계에서 생성된 파일을
appformix
사용하여 Service Account를 생성합니다.$ kubectl create -f <file>.yaml
Service Account가 생성된지 확인 네임스페이스에 주목해야 합니다.
$ kubectl describe serviceaccount appformix Name: appformix Namespace: default Labels: <none> Annotations: <none> Image pull secrets: <none> Mountable secrets: appformix-token-pkljk Tokens: appformix-token-pkljk Events: <none>
다음과
cluster-admin
같이 Service Account에 역할을 추가하고 3단계에 언급된 네임스페이스에 대한 네임스페이스를appformix
변경합니다.$ kubectl create clusterrolebinding appformix-binding --clusterrole=cluster-admin --serviceaccount=<namespace>:appformix
다음 명령을 실행하여 Service Account에 필요한 액세스
appformix
권한을 부여합니다.$ kubectl auth can-i get nodes --as=system:serviceaccount:<namespace>:appformix --all-namespaces
명령의 출력은 를 통해 나타날 수
yes
있습니다.Contrail Insights Kubernetes 클러스터와 통신하도록 구성해야 합니다. Kubernetes 클러스터에서 설치하는 동안 사용할 Kubernetes Contrail Insights.
kubernetes_cluster_url Kubernetes API Server의 URL입니다. 이 가치를 얻기 위해 Kubernetes 클러스터의 OpenStack에서 다음 명령을 실행합니다.
$ kubectl cluster-info | grep 'Kubernetes master' Kubernetes master is running at https://172.24.1.173:6443
kubernetes_auth_token 이는 Service
appformix
Account의 인증 토큰입니다. 이 값을 얻기 위해 Kubernetes 클러스터의 OpenStack에서 다음 명령을 실행합니다.$ kubectl describe serviceaccount appformix Name: appformix Namespace: default Labels: <none> Annotations: <none> Tokens: appformix-token-pkljk [...] $ kubectl describe secret appformix-token-pkljk Name: appformix-token-pkljk Namespace: default [...] token: eyJwb[...]
모든 구성에 대한 OpenStack 관리자 Contrail Insights
Contrail Insights OpenStack 클러스터에 구성된 모든 프로젝트에 대한 정보를 읽습니다. 소프트웨어는 관리자 권한을 요구합니다. 새 관리자 계정을 생성하여 Contrail Insights. 새 관리자 계정을 생성하지 않는 경우 새 관리자 계정을 구성하는 동안 기존 관리자 계정의 사용자 이름과 암호를 Contrail Insights.
운영자에 대한 관리자 Contrail Insights OpenStack Horizon 대시보드에서 다음 단계를 수행합니다.
사용자 계정을 생성하고 이름을 appformix 지정합니다.
사용자 계정에 대한 새 프로젝트를 선택합니다.
으로 역할을 admin 선택합니다.
설치 Contrail Insights
설치하려면 Contrail Insights:
소프트웨어 다운로드에서 Contrail Insights 플랫폼 노드로 배포하는 Contrail Insights 패키지를 다운로드하십시오. 아래 파일 다운로드:
contrail-insights-<version>.tar.gz contrail-insights-dependencies-images-<version>.tar.gz contrail-insights-kubernetes-images-<version>.tar.gz contrail-insights-openstack-images-<version>.tar.gz contrail-insights-platform-images-<version>.tar.gz
3.2.6보다 일찍 버전을 설치하는 경우 Contrail Insights 플랫폼 노드에 Contrail Insights 라이선스 파일을 복사합니다.
을
contrail-insights-<version>.tar.gz
언지프(Unzip) 이 패키지에는 설치에 필요한 모든 Ansible 플레이북이 Contrail Insights.tar -xvzf contrail-insights-<version>.tar.gz cd contrail-insights-<version>/
참고:나머지 단계는 디렉토리 내에서
contrail-insights-<version>/
실행됩니다. 제품 이름이 "AppFormix"에서 "Contrail Insights"로 변경됐지만, UI 및 내부 명령 경로는 계속 AppFormix 표시되고 나중에 새 이름을 반영합니다.템플릿으로
sample_inventory
사용하여 설치를 위한 인벤토리 파일을 만듭니다. 섹션에 Kubernetes 클러스터 노드와 섹션의 Contrail Insightscompute
플랫폼 노드를appformix_controller
설명합니다. 섹션에서 OpenStack 컨트롤러 서비스를 실행하는 노드를openstack_controller
설명합니다.cp sample_inventory inventory vi inventory [compute] k8s-master k8s-node1 k8s-node2 [appformix_controller] <IP of the Contrail Insights Platform node> [openstack_controller] <IP of the Kubernetes node(s) running OpenStack controller services>
으로 불리는 디렉토리를
group_vars
생성합니다. 에서 요구하는 구성 변수를 사용하여 이 디렉토리 내부에all
이름을 Contrail Insights.mkdir group_vars vi group_vars/all appformix_docker_images: - /path/to/contrail-insights-platform-images-<version>.tar.gz - /path/to/contrail-insights-dependencies-images-<version>.tar.gz - /path/to/contrail-insights-kubernetes-images-<version>.tar.gz - /path/to/contrail-insights-openstack-images-<version>.tar.gz appformix_dns_version: 2 kubernetes_platform_enabled: True openstack_platform_enabled: True kubernetes_cluster_url: <URL from Configuring Kubernetes step 4 above> kubernetes_auth_token: <token from Configuring Kubernetes step 4 above>
3.2. Contrail Insights 6보다 일찍 버전을 설치하는 경우
group_vars/all
appformix_license: path/to/<contrail-insights-license-file>.sig
Ansible 플레이북이 실행될 환경의 OpenStack Controller 노드에서 파일을 소스로
openrc
소스합니다. 파일에는 다음과 같이 표시됩니다.$ cat openrc export OS_CLOUD=openstack_helm export OS_USERNAME='admin' export OS_PASSWORD='password' export OS_PROJECT_NAME='admin' export OS_PROJECT_DOMAIN_NAME='default' export OS_USER_DOMAIN_NAME='default' export OS_AUTH_URL='http://keystone.openstack.svc.cluster.local/v3' $ source openrc
Ansible 플레이북을 실행합니다.
ansible-playbook -i inventory appformix_openstack_on_kubernetes.yml
오류 없이 플레이북을 실행하여 완료해야 합니다.
다음의 Contrail Insights 대시보드에 로그인합니다.
http://<contrail-insights-platform-node-ip>:9000
Auth Service 드롭다운 목록에서 다음과 같은 3가지 옵션이 제공됩니다.
OpenStack OpenStack 자격 증명으로 로그인하고 OpenStack 리소스만 볼 수 있습니다.
Kubernetes 자격 증명을 Contrail Insights 로그인하고 Kubernetes 리소스만 볼 수 있습니다.
AppFormix 자격 증명을 Contrail Insights 로그인하고 OpenStack 및 Kubernetes 리소스 모두를 볼 수 있습니다.
마지막 두 가지 옵션의 경우 로그인에 사용하는 토큰은 Contrail Insights 플랫폼 노드에서 /opt/appformix/etc/appformix_token.rst에서 사용할 수 있습니다.
옵션 구성
클러스터에 Contrail Insights 인증된 플러그인을 설치하려면 파일에 다음과 같은 변수를 group_vars/all
포함합니다.
appformix_plugins: <list of certified plugins to be installed> appformix_openstack_log_plugins: <list of OpenStack log plugins to be installed>
예를 들어:
appformix_plugins: - { plugin_info: 'certified_plugins/cassandra_node_usage.json' } - { plugin_info: 'certified_plugins/contrail_vrouter.json' } - { plugin_info: 'certified_plugins/zookeeper_usage.json' } - { plugin_info: 'certified_plugins/heavy_hitters.json' } appformix_openstack_log_plugins: - { plugin_info: 'certified_plugins/cinder_api_logparser.json', log_file_path: '/var/log/cinder/cinder-api.log' } - { plugin_info: 'certified_plugins/glance_logparser.json', log_file_path: '/var/log/glance/glance-api.log' } - { plugin_info: 'certified_plugins/keystone_logparser.json', log_file_path: '/var/log/apache2/keystone_access.log,/var/log/httpd/keystone_wsgi_admin_access.log,/var/log/keystone/keystone.log' }
설치할 수 Contrail Insights 인증 받은 플러그인의 목록은 파일에서 시작하는 항목을 plugin_info
찾아야 roles/appformix_defaults/defaults/main.yml
합니다.
OpenStack 로그 파서 플러그인은 각 OpenStack 서비스의 API 로그 파일을 파서 분석하여 API 통화 및 응답 상태 코드에 대한 메트릭을 수집합니다. 위의 플러그인을 설치하려면 위의 변수에 appformix_openstack_log_plugins
group_vars/all
플러그인을 추가하십시오. 이 목록의 각 플러그인 엔트리에는 지정해야 하는 매개 log_file_path
변수가 필요합니다. 이 매개 변수는 OpenStack Controller 노드의 서비스 API 로그 파일에 대한 전체 경로로 설정해야 합니다. 다중 COMMA 분리 경로를 지정할 수 있습니다.
에 지정될 올바른 로그 파일을 식별하려면 클라이언트 IP 주소, REST 호출 유형 및 응답 상태 코드를 포함하는 다음과 같은 항목을 log_file_path
찾아야 합니다.
2019-04-02 06:50:13.103 3465 INFO nova.osapi_compute.wsgi.server [req-d07e953a-6921-4224-a056-afb6ff69adde 953ea56a96b944b3b170a299af9e87bd 10c9e8809feb4bd1b55955d9c2ed5aba - - -] 172.18.0.6 "GET /v2/10c9e8809feb4bd1b55955d9c2ed5aba/os-hypervisors/detail HTTP/1.1" status: 200 len: 1427 time: 0.0208740 2019-04-02 06:50:13.183 3465 INFO nova.osapi_compute.wsgi.server [req-34b2f686-9eb5-4112-b3fc-e0b37798a302 953ea56a96b944b3b170a299af9e87bd 10c9e8809feb4bd1b55955d9c2ed5aba - - -] 172.18.0.6 "GET /v2/10c9e8809feb4bd1b55955d9c2ed5aba/servers/detail?all_tenants=1&status=SHELVED_OFFLOADED HTTP/1.1" status: 200 len: 211 time: 0.0754580
이들 파일의 기본 위치는 의 변수에 appformix_openstack_log_factory_plugins
나열되어 roles/appformix_defaults/defaults/main.yml
있습니다.
컨테이너화된 OpenStack 환경에서는 OpenStack 서비스를 실행하는 컨테이너 내부에서 로그 파일이 생성됩니다. 그러나 이 컨트롤러는 openStack 컨트롤러 호스트에서 Contrail Insights 플러그인을 읽을 수 있도록 제공해야 합니다. 지정된 경로는 OpenStack Controller 호스트의 파일 위치 log_file_path
입니다.
3.0 Contrail Insights 에서는 모든 OpenStack 로그 파서 플러그인을 변수에 지정해야 appformix_openstack_log_plugins
합니다. 이전 버전에서 3.0으로 업그레이드할 때 에 정의된 모든 OpenStack 로그 파서 플러그인을 으로 appformix_plugins
appformix_openstack_log_plugins
이동하십시오. 또한, Contrail Insights 3.0에서 위와 같이 이 목록의 모든 엔트리는 값으로 log_file_path
지정해야 합니다.
노드를 다른 노드에서 Contrail Insights
인벤토리 파일을 편집하고 제거하려는 각 노드에 appformix_state=absent
Contrail Insights.
# Example naming schemes are as below: # hostname ansible_ssh_user='username' ansible_sudo_pass='password' # List all Compute Nodes [compute] 172.16.70.5 appformix_state=absent 172.16.70.17
편집된 인벤토리 파일로 Ansible을 실행합니다.
ansible-playbook -i inventory appformix_openstack_on_kubernetes.yml
그러면 노드와 모든 리소스가 Contrail Insights.