컨트롤러 노드에서 진행
$ mysql
> CREATE DATABASE heat;
> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' IDENTIFIED BY 'a';
> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' IDENTIFIED BY 'a';
> quit
# heat 사용자 생성 및 및 service 프로젝트 연결 admin 권한 부여
$ openstack user create --domain default --password-prompt heat # 비밀번호 a
$ openstack role add --project service --user heat admin
# demo 유저 및 demo 프로젝트 추가
$ openstack user create --domain default --password-prompt demo # 비밀번호 a
$ openstack project create --domain default --description "Demo project" demo
# 서비스 추가
$ openstack service create --name heat --description "Orchestration" orchestration
$ openstack service create --name heat-cfn --description "Orchestration" cloudformation
# API 엔드포인트 추가
$ openstack endpoint create --region RegionOne orchestration public <http://172.0.0.4:8004/v1/%\\(tenant_id\\)s>
$ openstack endpoint create --region RegionOne orchestration internal <http://controller:8004/v1/%\\(tenant_id\\)s>
$ openstack endpoint create --region RegionOne orchestration admin <http://controller:8004/v1/%\\(tenant_id\\)s>
$ openstack endpoint create --region RegionOne cloudformation public <http://172.0.0.4:8000/v1>
$ openstack endpoint create --region RegionOne cloudformation internal <http://controller:8000/v1>
$ openstack endpoint create --region RegionOne cloudformation admin <http://controller:8000/v1>
# stack을 관리하기 위해 오케스트레이션 관련 추가 정보 입력
# heat 도메인 생성하여 해당 도메인에 stack용 user (heat_domain_admin)및 project 를 포함시킨다.
$ openstack domain create --description "Stack projects and users" heat
$ openstack user create --domain heat --password-prompt heat_domain_admin # 비밀번호 a
$ openstack role add --domain heat --user-domain heat --user heat_domain_admin admin
# heat_stack_owner role 생성 및 role 추가
$ openstack role create heat_stack_owner
$ openstack role add --project demo --user demo heat_stack_owner
# heat_stack_user role 생성
# Orchestration service는 stack을 deploy하는 유저에게 자동으로 heat_stack_user
# 권한을 할당합니다. 이 role은 충돌을 방지하기 위해 API를 제한합니다.
# 따라서 절대 이 권한을 유저에게 할당하지 말아야한다.
$ openstack role create heat_stack_user
# 확인
$ openstack user list #[heat, demo]
$ openstack domain list #[heat]
$ openstack service list #[heat, heat-cfn]
$ openstack project list #[demo]
$ openstack role list #[heat_stack_owner, heat_stack_user]
$ openstack endpoint list | grep heat
# 패키지 설치
$ apt install heat-api heat-api-cfn heat-engine
$ cp /etc/heat/heat.conf /etc/heat/heat.conf.org
$ grep -E '^[^#].' /etc/heat/heat.conf.org > /etc/heat/heat.conf
$ vi /etc/heat/heat.conf
[database]
connection = mysql+pymysql://heat:a@controller/heat
[DEFAULT]
transport_url = rabbit://openstack:a@controller
heat_metadata_server_url = <http://controller:8000>
heat_waitcondition_server_url = <http://controller:8000/v1/waitcondition>
stack_domain_admin = heat_domain_admin
stack_domain_admin_password = a
stack_user_domain_name = heat
[keystone_authtoken]
www_authenticate_uri = <http://controller:5000>
auth_url = <http://controller:5000>
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = heat
password = a
[trustee]
auth_type = password
auth_url = <http://controller:5000>
username = heat
password = a
user_domain_name = default
[clients_keystone]
auth_uri = <http://controller:5000>
# DB insert
$ su -s /bin/sh -c "heat-manage db_sync" heat
$ service heat-api restart
$ service heat-api-cfn restart
$ service heat-engine restart
$ service heat-api status
$ service heat-api-cfn status
$ service heat-engine status
# 검증1
# controller의 CPU 개수 만큼 heat-engine 컴포넌트가 출력되어야함
$ openstack orchestration service list
호라이즌에 heat UI 추가
$ apt install python3-heat-dashboard
$ service apache2 restart
트러블 슈팅
1. magnum 설치 이후 heat 동작이 잘안되는 경우
-> heat.conf에서 controller를 ip로 변경
-> magnum으로 쿠버네티스 클러스터 설치 시 필요한 정보를 얻을 때 컨트롤러 노드의 API 주소로
요청을 날리는데 controller가 상수로 박혀있어 API 요청이 제대로 이뤄지지 않음
2. [Qos 에러] : Unable to retrieve resources Qos policies:
The resource could not be found. Neutron server returns request_ids: ['...']
호라이즌에서 Template Generator 페이지를 열였을 때, 뉴트런 Qos가 Enable 되잇지않으면
내뱉는 에러로 neutron-qos-agent를 설치해주어야 한다. 원래는 네트워크 노드에 설치해야하는데
self-service network 아키텍처에서는 보통 네트워크 노드가 따로 존재하지 않는다.
따라서 controller 노드와 각각의 compute 노드에 neutron-qos-agent를 설치한다.
# controller, 각각의 compute 에서 실행
$ apt install neutron-qos-agent
$ systemctl start neutron-qos-agent
$ systemctl enable neutron-qos-agent
# controller 노드에서 진행
# policy 생성
$ openstack network qos policy create <policy-name>
# rule 생성
# 최대 속도가 1000Kbps 새로운 대역폭 제한 규칙 생성
$ openstack network qos rule create --type bandwidth-limit --max-kbps 1000 <policy-name>
# QoS 정책을 가상 머신의 neutron 포트와 연결
$ neutron port-update --qos-policy <policy-name> <port-id>
# 가상 머신의 포트 ID를 얻는법
$ openstack port list --server <vm-name>
'Openstack' 카테고리의 다른 글
오픈스택: octavia (0) | 2023.04.10 |
---|---|
오픈스택: magnum (0) | 2023.04.10 |
9. 오픈스택: compute 추가 (0) | 2023.04.06 |
8. 오픈스택: cinder(블록 스토리지) 설치(2) (0) | 2023.04.06 |
7. 오픈스택: cinder(블록 스토리지) 설치(1) (0) | 2023.04.06 |
댓글