4. 클라우드 컴퓨팅: 개념
대형 전력회사에서 전기를 받아쓰듯이 중앙집중화 된 대형 데이터센터에서 서비스를 받고, 소프트
웨어 프로그램들도 인터넷 망을 통해서 자유롭게 빌려 쓴다. IT 자원을 구매하거나 소유할 필요 없
이, 필요한 만큼 사용료를 주고 쓰는 개념이 바로 “클라우드컴퓨팅” 이다.
- 세계적 IT 미래학자 니컬러스 카
6. 클라우드 컴퓨팅: 경제성
• 실제 자원 활용률: 5%~20%
• 특정 시점에서만 활용률이 높음
- 스포츠 시즌: 영상 스트리밍
- 쇼핑 시즌: 초콜릿 쇼핑몰
(예: 발렌타인데이/빼빼로데이)
7. 클라우드 컴퓨팅: 관련 용어
Cloud Council, “Cloud Computing Use Cases White Paper’
8. 클라우드 컴퓨팅: 제공 유형에 따른 분류
Iaa
S
인프라 제공 서비스
프로세싱 파워, 서버, 네트워크, 가상화 및 OS와 같은 기본적인 컴퓨팅 자원을
제공하는 클라우드 서비스
Paa
S
플랫폼 제공 서비스
클라우드 컴퓨팅 환경을 통해 어플리케이션 개발 플랫폼을 제공하는 서비스.
단말을 위한 API를 제공하거나 다양한 이기종 간의 단말에서의 개발 환경을 제
공
Saa
S
소프트웨어 제공 서비스
별도의 전용 소프트웨어를 제공하여 소비자가 단지 어플리케이션만을 사용하
고 어플리케이션이 실행되는 운영체제, 하드웨어 또는 네트워크 인프라는 제
어하지 않는 클라우드 서비스
9. 클라우드 컴퓨팅: 사용 유형에 따른 분류
Public
공용 클라우드
제3의 회사 (예: Amazon AWS, Microsoft Azure, Google Cloud, KT
uCloud, NAVER Cloud, TOAST)에서 제공하는 클라우드를 인터넷으로
접속해 사용
Private
사설 클라우드
인터넷을 통하지 않고 사내 등에 직접 하드웨어 구입 후 클라우드를 구축
. 네트워크 속도, 보안 및 법적인 문제에 따라 사용하는 경우가 많음
Hybrid
하이브리드 클라우드
공용 클라우드와 사설 클라우드의 적절한 조합
11. 클라우드 컴퓨팅: 클라우드와 가상화
서버 가상화 vs. 네트워크 가
상화
• 서버 가상화는 매우 빠르게 성장하여 클라우드를 이루는 기반 기술이 되었습니다
✓ 하이퍼바이저: VMware ESXi, Citrix XenServer, Microsoft Hyper-V, …
✓ 하드웨어 지원: Intel VT/VT-x, AMD-v
• 네트워크 가상화를 통해 가상화된 서버 자원을 묶어 독립적인 네트워크로 사용합
니다
12. 클라우드 컴퓨팅: 컨테이너 & 베어베탈
• 가상 머신은 하이퍼바이저 위에서 별도의 운영체제와 함께 동작합니다
• 컨테이너는 공통된 운영체제 (커널)를 기반으로 독립적으로 응용프로그램을 실행
합니다
• 베어베탈은 가상화 / 컨테이너 기반이 준비되어 있지 않은 물리 서버로, 베어메탈
에 가상화 / 컨테이너 서비스를 구축하여 클라우드 컴퓨팅 서비스를 만듭니다
13. 클라우드 컴퓨팅: 프로그래머블 / 소프트웨어 정의 인프라
• 원하는 때 원하는 만큼 자원을 확장하거나 줄이는 과정을 수동이 아닌 프로그래밍
가능한 인프라 환경을 통해 자동으로 이루어집니다
• 인프라 전체를 소프트웨어 기반으로 제어하는 환경을 소프트웨어 정의 인프라 /
소프트웨어 정의 데이터센터 등 용어로 이야기하기도 합니다
CLOUD API
14. 클라우드 컴퓨팅 관련 공개 소프트웨어
• 클라우드 컴퓨팅 구축
• 소프트웨어 기반 자동화
• 가상화 기술
• 가상 머신 운영체제 & 프로그램
• 모바일 클라우드 컴퓨팅
• 네트워크 관리
• …
16. OpenNebula
• 2008년 3월 기술 프리뷰 버전을 오픈소스로 릴리즈하면서 발전
• 현재는 OpenNebula Systems (이전 C12G Labs) 회사에서 운영 및 유지보수 중
• 2017년 7월 기준 버전 5.4.0으로, 3.8부터는 상업용 제품에 대해서만 유지보수 중
• 지원 하이퍼바이저: KVM, Xen, VMware ESXi, Hyper-V
• 라이선스: Apache License 2
17. Eucalyptus
• “Elastic Utility Computing Architecture for Linking Your Programs To Useful
Systems” 에 대한 약어
• 클라우드 컴퓨팅 시스템에 대한 활발한 연구와 커뮤니티를 조성하기 위해 미국
UC 산타바바라 대학에서 시작된 오픈소스 프로젝트
• 2014년 9월 휴렛펙커드 (HP)에서 인수
• 현재는 DXC Technology에서 유지보수
• 라이선스: BSD
18. CloudStack
• Cloud.com 사가 개발한 오픈소스 클라우드 환경 구축 소프트웨어
• GUI 기반 관리 콘솔, 멀티 하이퍼바이저, 소프트웨어 방화벽, 로드밸런서를 기본
제공
• 2011년 7월 Citrix Systems로 인수되었다가 2012년 4월 Apache 재단에 Donate
• 2017년 8월 기준 버전 번호: 4.10.0.0
• 라이선스: Apache License 2
19. OpenStack
• Python으로 구현된 클라우드 관리를 위한 오픈소스로, 활발한 커뮤니티 활동과
함께 발전 중
• 한국 커뮤니티: 오픈스택 활성화, 대시보드 & 문서 번역 활동 등
• 라이선스: Apache License 2
20. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택 소개
최영락, 오픈스택 한국 커뮤니티 3기 대표
Ocata / Pike
23. OpenStack에 대한 다른 정의들
• OpenStack은 공용 (Public) 클라우드와 사설 (Private) 클라우드 구축을 가능하게
하는 오픈 소스 소프트웨어
• OpenStack은 서버, 스토리지, 네트워크들과 같은 자원들을 모두 모아, 이들을
제어하고 운영하기 위한 클라우드 Operating System
• OpenStack은 오픈 소스를 기반으로 클라우드를 구축하고 운용하고자 하는 오픈
소스 개발자, 회사, 사용자들이 주축이 되어 발전하는 커뮤니티
• IaaS 형태의 클라우드 컴퓨팅 오픈 소스 프로젝트로 컴퓨팅, 스토리지, 네트워킹
자원을 관리하는 여러 개의 하위 프로젝트들로 이루어짐
• …
24. • 빠른 글로벌 오픈 소스 커뮤니티 성장세
OpenStack의 성장
COMPANIES
TOTAL CONTRIBUTORS
AVERAGE MONTHLY
CONTRIBUTORS
CODE CONTRIBUTIONS
1,036 238 70,137
231
10,149
INDIVIDUAL MEMBERS
COUNTRIES
121
As of July 2013
[1] OpenStack Foundation, OpenStack 3rd Birthday Presentation, Jul 10 2013
[2] http://docs.openstack.org/ko_KR/upstream-training/workflow-metrics.html#2 (Oct 2015)
[3] OpenStack Foundation, OpenStack 6th Birthday Presentation, July 2016
(2015년 10월)
(2016년 7월)
25. • 코어 >= 5,000,000 개가 Production 환경에서 사용 중 (2017년 4월 통계)
• 전체 OpenStack 환경 중 2/3 (그 외: 개발용, QA용, PoC, …)
OpenStack: Production 환경
Source: User Survey, April 2017
27. OpenStack 역사
• OpenStack 핵심 컨트리뷰터
• 초기: Rackspace & NASA
• Rackspace: OpenStack의 Object Storage라고 하는 “Cloud Files”
부분 플랫폼을 개발하는 데 기여하기 시작
• NASA: 기존 "Nebula" 플랫폼을 발전시켜 컴퓨팅 자원 플랫폼을
개발하는 데 기여
• 2012년 5월: NASA와 OpenStack 관계 종료
• 2012년 9월: VMWare社가
OpenStack foundation에 가입
• 그리고, 많은 회원사 & 참여자
들이 참여하고 있음!
[1] http://www.wired.com/wiredenterprise/2012/04/openstack/
The library of the Rainbow Mansion
28. OpenStack 릴리즈
• 6개월 주기로 릴리즈 발표
• 릴리즈: 개발자 서밋 & 미팅에 맞추어 계획됨
• 2016년까지 OpenStack Summit에서 개발자 회의가
진행됨 (OpenStack Design Summit)
• 2017년부터 PTG (Project Team Gathering)이라는
이름으로 별도 개발자 행사 개최
• 기본적으로 업그레이드 버전업 미지원 (최근부터
지원하기 시작)
• 새로운 특징 및 핵심 기능들은 보통 1년을 주기로
많은 변화가 생김
릴리즈
이름
릴리즈
일자
포함된 컴포넌트
코드 이름
Austin 21 October 2010 Nova, Swift
Bexar 3 February 2011 Nova, Glance, Swift
Cactus 15 April 2011 Nova, Glance, Swift
Diablo
22 September
2011
Nova, Glance, Swift
Essex 5 April 2012 Nova, Glance, Swift, Horizon, Keystone
Folsom
27 September
2012
Nova, Glance, Swift, Horizon, Keystone,
Quantum, Cinder
Grizzly 4 April 2013
Nova, Glance, Swift, Horizon, Keystone,
Quantum, Cinder
Havana 17 October 2013
Nova, Glance, Swift, Horizon, Keystone,
Neutron, Cinder, Heat, Ceilometer
Icehouse 17 April 2014 + Trove
Juno 16 October 2014 + Sahara
Kilo 30 April 2015 + Ironic
Liberty 15 October 2015
+ Zaqar, Manila, Designate, Barbican,
Searchlight
Mitaka 7 April 2016 + Magnum
Newton 6 October 2016
+ >10 components
Ocata 22 February 2017
Pike 30 August 2018
Queens 28 February 2018
Rocky 2018년 8월 예정
29. OpenStack 릴리즈 이름
• 차후 Summit이 개최되는 장소와 관련된 지명 등을 중심으로 설문 후 법적 이슈가 없는
이름을 선택
• N: Austin 서밋이 개최된 근처에 Newton House가 있음
• O: Olimpic이 설문 1위였으나, Olympic과의 유사성 등으로 3위로 선정된 Barcelona 근처 해변
이름인 Ocata가 선정
30. OpenStack 구성 요소
Compute (컴퓨팅)
Storage (스토리지)
Network (네트워크)
Nova
Swift (Objects)
Glance (Images)
자원 종류
OpenStack
구성 요소 이름
(Quantum) Neutron
Cinder (Block)
Identity (인증) Keystone
31. OpenStack 구성 요소 ➔ (조금 더 쉽게 보면…)
• Nova
• Swift
• Glance
• Keystone
• Horizon
• Cinder
• Neutron
• Heat
• Ceilometer
• …
VM 인스턴스 관리
Object 스토리지
관리
VM 이미지 관리
통합 인증 관리
웹 관리 포털
Block
스토리지
관리
(가상) 네트워크 관리
템플릿
관리
Metering
관리
32. 소프트웨어로 클라우드 인프라를 자동화하는 OpenStack
단일 플랫폼
가상 머신, 컨테이너,
베어 메탈
프로그래머블 인프라
Compute, 네트워킹,
스토리지를 관리하는
API 공통 집합
➔ “오픈” 소스, 디자인, 개발, 커뮤니티
40. 가상 서버 준비하기 – Hypervisor 설치 전 준비
➡CPU : 4 core 이상
➡Memory : 4GB 이상
➡Disk : 500GB
➡Memory : 8GB 이상 (single instance 이상의
경우 인스턴스 메모리 크기 x 인스턴스의 개수)
최소 사양 권장 사양
44. 네트워크 테스트 베드 구성하기
인터넷
모뎀인터넷 공유기
(라우터)
무선 네트워크
유선 네트워크 출처 : 오픈스택을 다루는 기술 (장현정) - 길벗출판사
45. 네트워크 구성도
인터넷
AP 192.168.0.1
Ubuntu 16.04 Server
HOST IP (enp0s3) 192.168.0.20
Nova
Nova-api
Nova-network
Nova-
compute
Cinder
KVM
Keystone
Glance
OpenStack
VM5
10.0.0.6
VM4
10.0.0.5
VM3
10.0.0.4
VM2
10.0.0.3
VM1
10.0.0.2
10.0.0.0/20 fixed IP 범위
로컬 네트워크 IP 영역
192.168.0.20
enp0s3
br100
VirtualBox를 이용한 오픈스택 설치
192.168.0.101
Fixed IP Range
10.0.0.0/20
Floating IP Range
192.168.0.128/28
출처 : 오픈스택을 다루는 기술 (장현정) - 길벗출판사
49. DevStack이란?
- 복잡한 오픈스택 시스템을 자동으로 설치하여 어떻게 동작하는지 알기 위한 프로젝트
- 오픈스택을 처음 접하는 유저에게 추천
- 오픈스택의 프로젝트의 All-in-One 설치를 제공하며, 어떤 구성요소들이 있는지 확인할 수 있음
https://docs.openstack.org/devstack/latest/
50. DevStack설치를 위한 사전 준비
✓최신 버전의 Virtualbox (https://www.virtualbox.org/wiki/Downloads)
✓Intel : VT-d, VT-x / AMD : AMD-V를 지원하는 64비트 CPU
✓8GB 이상의 RAM
✓Ubuntu Server LTS 최신버전 VM에 설치 (https://www.ubuntu.com/download/server)
✓DevStack 프로젝트 repository (git://git.openstack.org/openstack-dev/devstack.git)
✓VM으로 DevStack Clone
✓local.conf 설정
56. DevStack 설치 후 주의사항
✓DevStack이 설치된 VM의 OS를 종료하지 말고 스냅샷을 만드십시오
✓DevStack을 VM 내에서 종료해야 할 경우 unstack.sh를 이용하십시오
✓github에서 DevStack을 Clone한 뒤 실행 전 branch를 버전에 맞게 checkout하여 주십시오
✓Virtualbox에서 32bit 옵션만 있는 경우 BIOS에서 Virtualization Technology 활성화와 Hyper-V가
꺼져 있는지 확인하여 주십시오
57. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택 매뉴얼 설치: Newton 버전 (1)
신호철 & 최영락, 오픈스택 한국 커뮤니티 3기 운영진
Ocata / Pike
58. Agenda
• OpenStack Newton 버전 소개
• 한글 설치 가이드 소개
• 설치 개요
• 설치 과정 (1/2)
- 기본 환경 구성
- 인증 서비스 (Keystone) 구성
- 이미지 서비스 (Glance) 구성
- Compute 서비스 (Nova) 구성
59. OpenStack Newton 버전
• 2016년 10월 6일 출시
• OpenStack 14번째 릴리즈
• 2018년 기준, 실제
Production에서도 많이
사용하는 안정 버전
60. OpenStack 한글 설치 가이드 소개
• https://docs.openstack.org/ko_KR/ 에서 여러 릴리즈에 대한 설치 가이드 확인 가능
(또는 docs.openstack.org -> “More Releases & Languages” -> “한국어 (Korean)”
61. OpenStack Newton 설치 가이드
• 본 설치 과정은 Ubuntu 16.04에서 Newton 버전을 설치
: https://docs.openstack.org/newton/ko_KR/install-guide-ubuntu/
62. 설치 개요
• 설치 과정 참고: http://bit.ly/openstack-newton-manual-steps
• 1편
- 기본 환경 구성 (VirtualBox 하드웨어 설정, hosts 설정, ping 테스트, chrony 설치)
- 인증 서비스 (Keystone), 이미지 서비스 (Glance), Compute 서비스 (Nova) 구성
• 2편
- 네트워킹 서비스 (Neutron), 대시보드 서비스 (Horizon),
블록 스토리지 서비스 (Cinder) 구성
63. 기본 환경 구성 - VirtualBox 예시
• https://www.ubuntu.com/download 에서 Ubuntu Server 또는 Desktop iso 다운로드
• 가상 머신 2대 준비 & 설치
### Controller node
- network device 1: 호스트전용 네트워크 (enp0s3)
- network device 2: 브리지모드 (enp0s8)
- network device 3: NAT (enp0s9)
- disk : 20G ( OS용)
- HOST NAME : controller
### Compute node
- network device 1: 호스트전용 네트워크 (enp0s3)
- network device 2: 브리지모드 (enp0s8)
- network device 3: NAT (enp0s9)
- disk : 20G ( OS용 )
- disk 1 : 8G ( Block Storage service)
- disk 2 : 8G * 3ea ( Object Storage services )
- HOST NAME : compute
64. 설치 Demo
• 참고 사항
- 설치 데모에서는 vi 편집기 사용을 가정하였습니다.
익숙하지 않은 경우, vi 대신 nano 편집기를 사용합니다.
: “vi /etc/network/interfaces” 대신 “nano /etc/network/interfaces” 사용
=> Ctrl+O: 파일 저장, Ctrl+X: 편집기 종료
- 언급하였던 http://bit.ly/openstack-newton-manual-steps 및
https://docs.openstack.org/newton/ko_KR/install-guide-ubuntu/ 문서를
참고하여 설치 과정을 자세히 확인할 수 있습니다.
- 다른 배포판 (CentOS, SUSE) 설치시, 배포판 특성에 따른 차이는 있으나,
전체적인 설치 과정은 동일합니다.
65. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택 매뉴얼 설치: Newton 버전 (2)
신호철 & 최영락, 오픈스택 한국 커뮤니티 3기 운영진
Ocata / Pike
66. Agenda
• 설치 개요
• 설치 과정 (2/2)
- 네트워킹 서비스 (Neutron) 구성
- 대시보드 서비스 (Horizon) 구성
- 블록 스토리지 서비스 (Cinder) 구성
67. OpenStack Newton 설치 가이드
• 본 설치 과정은 Ubuntu 16.04에서 Newton 버전을 설치
: https://docs.openstack.org/newton/ko_KR/install-guide-ubuntu/
68. 설치 개요
• 설치 과정 참고: http://bit.ly/openstack-newton-manual-steps
• 1편
- 기본 환경 구성 (VirtualBox 하드웨어 설정, hosts 설정, ping 테스트, chrony 설치)
- 인증 서비스 (Keystone), 이미지 서비스 (Glance), Compute 서비스 (Nova) 구성
• 2편
- 네트워킹 서비스 (Neutron), 대시보드 서비스 (Horizon),
블록 스토리지 서비스 (Cinder) 구성
69. 설치 Demo
• 참고 사항
- 설치 데모에서는 vi 편집기 사용을 가정하였습니다.
익숙하지 않은 경우, vi 대신 nano 편집기를 사용합니다.
: “vi /etc/network/interfaces” 대신 “nano /etc/network/interfaces” 사용
=> Ctrl+O: 파일 저장, Ctrl+X: 편집기 종료
- 언급하였던 http://bit.ly/openstack-newton-manual-steps 및
https://docs.openstack.org/newton/ko_KR/install-guide-ubuntu/ 문서를
참고하여 설치 과정을 자세히 확인할 수 있습니다.
- 다른 배포판 (CentOS, SUSE) 설치시, 배포판 특성에 따른 차이는 있으나,
전체적인 설치 과정은 동일합니다.
70. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택 사용하기 - Horizon 대시보드
신호철 & 최영락, 오픈스택 한국 커뮤니티 3기 운영진
Ocata / Pike
71. Agenda
• Horizon 대시보드란
• Horizon 대시보드 사용해보기
• 네트워크 생성
• 이미지 생성
• flavor 생성
• 인스턴스 생성
• 블록 스토리지 생성
• ssh 접속과 볼륨 연결 확인
72. Horizon 대시보드란
• 웹 대시보드를 통해 OpenStack 자원을 관리하는 프로젝트
• Python Django + Angular JS로 구현됨
76. Horizon 대시보드 사용해보기 – 주요 용어
• 사용자 (User)와 프로젝트 (Projects)
➢ 한 사용자는 여러 프로젝트에 속할 수 있습니다.
• 인스턴스 (Instance)
➢ OpenStack에서는 설치 환경 내에서 가상 머신이 실행 중인 대상을 이야기합니다.
• 인스턴스 유형 (Instance Type)
➢ OpenStack은 VirtualBox와 달리, 미리 인스턴스 유형을 지정하고 (CPU, 램, 디스크
용량 등), 해당 인스턴스 유형을 사용하도록 되어 있습니다.
• OpenStack에 있는 2가지 유형의 IP 주소
➢ Fixed IP: 인스턴스가 생성된 이후 종료될 때까지 변하지 않는 IP 주소 (관리용)
➢ Floating IP: 서비스를 위해 필요에 따라 인스턴스에 연결/해제하는 IP 주소 (서비스용)
77. Horizon 대시보드 사용해보기 – 네트워크 유형
• 프로바이더 네트워크
➢ 사용하는 환경 내에서
주어지는 라우터 등 네트워크
인프라를 사용하는 경우
➢ 다른 네트워크 장비와 같이
서비스를 구성하는 경우 보통
사용
• 셀프 서비스 네트워크
➢ OpenStack Neutron에서 가상
네트워크 라우터 등을 통해
네트워크를 연계하여 사용
78. Horizon 대시보드 사용해보기 – 살펴볼 과정
1. 외부 네트워크 생성: 물리 네트워크 인프라와 연계
2. 내부 네트워크 생성: 인스턴스가 사용할 가상 네트워크
3. 이미지 생성: 사용할 인스턴스 이미지 직접 등록
4. Flavor 생성: 인스턴스 유형을 미리 정하기
5. 인스턴스 생성: 1~4를 기반으로 인스턴스를 생성
6. 블록 스토리지 생성: 가상 디스크 추가 가능
7. ssh 접속과 볼륨 연결 확인: 인스턴스 접속
Internet
CPU 2개
램 4GB
83. 인스턴스 생성
1. Compute
2. 인스턴스
3. 인스턴시작
4. 인스턴스 이름
5. 이미지 선택
6. flavoer 선택
7. 네트워크 선택
8. 보안그룹 선택
9. 키페어 생성
10. 인스턴스 시작
84. 블록 스토리지 사용
1. Compute
2. 볼륨
3. 볼륨생성
4. 볼륨이름
5. 크기
6. 볼륨생성
85. ssh 접속과 볼륨 연결 확인
Cirros 접속 정보
USER ID : cirros
Password : cubswin:)
86. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택 사용하기 - 명령어기반(CLI)
신호철 & 최영락, 오픈스택 한국 커뮤니티 3기 운영진
Ocata / Pike
87. Agenda
• OpenStack CLI 소개
• OpenStack CLI 활용하기
• 이미지 올리기
• 프로젝트 네트워크 생성
• 인스턴스 생성
• 블록 스토리지 사용
88. OpenStack CLI 소개
• CLI: Command-Line Interfaces
• OpenStack 각 구성 요소에 대한 API를 직접 호출하여 원하는 작업을 명령어로 수행
➢ 참고: OpenStack은 각 구성요소별로 API 제공
✓ Nova (Compute API): https://developer.openstack.org/api-ref/compute
✓ Neutron (Networking API): https://developer.openstack.org/api-ref/networking
✓ Keystone (Identity API): https://developer.openstack.org/api-ref/identity
✓ …
• 통합 CLI 툴 제작
➢ 이전에는 nova / neutron / keystone 등 따로 CLI 명령어를 사용해야 했음
➢ 현재 통합 클라이언트: openstackclient
(명령어: “openstack”)
89. OpenStack CLI 활용하기
• 참고 문서: 한글 OpenStack 설치 가이드
(URL: https://docs.openstack.org/ko_KR/install-guide )
• 데모는 Ocata 버전을 기준으로 하나, 차후 버전에서도 동일 방식으로 사용 가능
➢ 클라이언트 환경 스크립트
: https://docs.openstack.org/ocata/ko_KR/install-guide-ubuntu/keystone-openrc.html
(참고: DevStack 환경에서는 “source openrc [사용자명] [프로젝트명]”을 사용)
➢ 이미지 올리기
: https://docs.openstack.org/ocata/ko_KR/install-guide-ubuntu/glance-verify.html
➢ 인스턴스 생성 (네트워크, 볼륨 등 포함)
: https://docs.openstack.org/ocata/ko_KR/install-guide-ubuntu/launch-instance.html
90. 이미지 올리기( glance service)
각종 OS 이미지 다운로드 URL : https://docs.openstack.org/image-guide/obtain-
images.html
이미지 업로드시 사용하는 CLI 명령어
openstack image create
옵션
--file cirros-0.3.5-x86_64-disk.img 파일 명을 지정
--disk-format qcow2 디스크 포맷 방식
--container-format bare 컨테이넛 포맷 방식
--public 모든 프로젝트가 공유가 할진거지 정의
디스크 포맷 방식에 종류 URL: https://docs.openstack.org/image-
guide/image-formats.html
4. 이미지 리스트 확인
91. 프로젝트 네트워크 생성
1. 컨트롤러 노드에서 admin credential 을 소스로 하여 사용자 전용 CLI 명령에 대한 엑세스를 갖습니다.
2. 네트워크 생성
3. 네트워크 서브넷 생성
openstack subnet create --
network provider
--allocation-pool
start=START_IP_ADDRESS,en
d=END_IP_ADDRESS
--dns-nameserver
DNS_RESOLVER --gateway
PROVIDER_NETWORK_GATE
WAY
--subnet-range
PROVIDER_NETWORK_CIDR
provider
92. 프로젝트 네트워크 생성(self service)
1. 컨트롤러 노드에서 demo credential 을 소스로 하여 사용자 전용 CLI 명령에 대한 엑세스를 갖습니다.
2. 네트워크 생성
3. 네트워크에 서브넷 을 생성
openstack subnet create --network selfservice
--dns-nameserver DNS_RESOLVER --gateway
SELFSERVICE_NETWORK_GATEWAY
--subnet-range SELFSERVICE_NETWORK_CIDR
selfservice
94. 인스턴스 생성
가장 작은 디폴트 flavor는 인스턴스 당 512 MB 메모리를 소비합니
다.
4 GB보다 적은 메모리를 갖는 compute 노드 환경에서는, 인스턴스
당 64 MB만을 필요로 하는 m1.nano flavor로 생성할 것을 권장
테스트 목적으로 CirrOS 이미지를 해당 flavor로 사용합니다
flavor
95. 인스턴스 생성
1. demo 프로젝트 credential을 소스로 사용
2. 키 패어를 생성하고 퍼블릭 키를 추가하세요:
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
3. 키 페어 추가 확인
openstack keypair list
키페어
98. 블록 스토리지
1. 볼륨을 인턴스에 연결
2. 볼륨 목록
3. SSH 상용하여 인스턴스에 엑세스 하고 /dev/vdb 블록 스토리지 장치에 대한 볼륨 검증 fdisk 명령어 사용
openstack server add volume INSTANCE_NAME VOLUME_NAME
openstack volume list
+--------------------------------------------+--------------+--------+------+-----------------------------------------------+
| ID | Display Name | Status | Size | Attached to |
+--------------------------------------------+--------------+--------+------+-----------------------------------------------+
| a1e8be72-a395-4a6f-8e07-856a57c39524 | volume1 | in-use | 1 | Attached to provider-instance on /dev/vdb |
+--------------------------------------------+--------------+--------+------+-----------------------------------------------+
102. What is Object Storage?
• Object : 그림, 영상, 문서와 같이 형태가 각기 다른 비정형 데이터
• Object Storage : 비정형 데이터를 저장/관리하기 위한 스토리지
< 특징 >
• 계층 구조를 가지지 않고, 평평한 구조를 갖는다
• Object 의 일부분만 수정할 수 없다
• HTTP 기반의 REST API를 이용하여 Object 를 다룬다
103. • Openstack 에서 제공하는 Object
Storage
• 독립적으로 구축이 가능하다
• 스토리지의 확장이 용이하다
• 기본 3개의 데이터 복제본을 가진다
• Eventually Consistency Storage 이다
Openstack Swift
104. Openstack Swift 의 개념 구성 요
소
• Account
swift 의 최상위 개념으로 swift 를 이용하기 위한 계정
Account 는 container를 정의하기 위한 namespace
• Container
Object 를 저장하는 공간.
Container 이름은 하나의 Account 내에서는 중복될 수
없다
• Object
문서, 이미지, 영상 과 같은 비정형 데이터
swift 에서는 단일 object 에 대해 최대 5GB까지 지원한
다.
(그 이상의 파일은 일정 단위로 쪼개어 업로드해야한다)
Account
Container Container
Container Container
Object
105. Openstack Swift의 구성 요소 (서
버)
• Proxy-Server
클라이언트의 요청을 받아, 인증/로깅/과금 등을 처리하고 요청을 적절한 서버로 전달해주는 서버
요청을 해석하여, account/container/object 로 요청을 전달한다
• Account-Server
account 정보를 저장하는 서버
• Container-Server
Container 정보를 저장하는 서버
• Object-Server
Object 를 실제 디스크에 저장하는 서버
106. Ring 이란 ?
• Openstack Swift 는 데이터를 분산하여 저장하는 분산 스토리지
• Account / Container / Object 가 어디에(어느 서버의 어느 디스크에) 저장되어야 할지 혹은 저장되어
있는지 기록하는 파일
• Proxy, Account, Container, Object 모든 서버가 동일한 내용의 Ring 을 가지고 있어야한다
107. Ring 의 구조
• device 목록 테이블
0 1 2 3
dict of device: 0
region: 1
ip: 10.1.1.4
port: 3345
device: /dev/sdb1
dict of device: 1
region: 2
ip: 10.1.1.5
port: 3345
device: /dev/sdb1
dict of device: 2
region: 1
ip: 10.1.1.6
port: 3345
device: /dev/sdb1
dict of device: 3
region: 2
ip: 10.1.1.4
port: 3345
device: /dev/sdb2
108. Ring 의 구조
• devices lookup table
0 1 2 3
0 1 3 3 19
1 14 1 1 34
2 18 39 10 64
Partition
Replicas
Index of
Device List
109. Ring 의 구조 - 위치 결정하기
• Openstack Swift는 각 요소의 이름의 md5 값을 구합니다.
• 예) account - md5(/AUTH_user1)
• 예) container - md5(/AUTH_user1/container1)
• md5 값을 Ring 을 생성할 때 지정한 partition 값으로 mod 연산을 합니다.
• 예) “2205229274494a49243f23f7e653088c” % 2048 = 140
• 140 이라는 값은 device lookup table 에서의 partition 열의 번호입니다.
• 해당 열의 replica 로 지정된 device 번호를 이용하여 데이터 위치를 결정합니다.
110. Proxy-Server
Openstack Swift 의 처리 흐름
Proxy-Server
Account-Server Container-Server Object-ServerAccount-ServerAccount-Server Container-ServerContainer-Server Object-ServerObject-Server
HTTP 기반 REST API 통신
111. Openstack Swift 설치하기
● Devstack 으로 설치하기
○ 스크립트 기반의 자동 설치
○ 쉽고 빠르게 구축 가능
○ Keystone 을 기본 인증체계로 사용
● SAIO (Swift All In One) 으로 설치하기
○ Openstack Swift 의 모든 요소를 수동으로 설치/설정
○ 구성 내용에 대해 상세하게 알 수 있음
○ tempauth 를 기본 인증체계로 사용
○ https://docs.openstack.org/swift/latest/development_saio.html
112. VirtualBox VM 설정
● CPU : 최소 2코어
● 메모리 : 4GB
● Disk : 30GB
● OS : Ubuntu 16.04 LTS Server
● Network
○ enp0s3 : NAT
○ enp0s8 : Host-only network
114. # 환경변수를 설정합니다.
source /opt/stack/devstack/openrc admin admin
# container 생성
swift post <container_name>
# container 목록 보기
swift list
# 오브젝트 업로드
swift upload <contianer> <object>
Openstack Swift 사용해보기
115. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택 공개 소프트웨어
- 오픈스택 Swift 개발 환경 구성 & 테스트
오픈스택 한국 커뮤니티 3기 운영진
Ocata / Pike
117. Openstack Swift의 구성 요소
• Proxy-Server
클라이언트의 요청을 받는 서버
• Account-Server
account 정보를 저장하는 서버
• Container-Server
Container 정보를 저장하는 서버
• Object-Server
Object 를 실제 디스크에 저장하는 서버
• Replicator
누락된 데이터를 복제하는 데몬
• Updator
Container/Object 리스트를 갱신하는 데몬
• Auditor
Account/Container/Object 를 Audit 하는 데몬
118. Openstack Swift 소스코드 다운로드
• Github : https://github.com/openstack/swift
• Main Repository : http://git.openstack.org/cgit/openstack/swift/
• $ git clone https://github.com/openstack/swift
• $ git checkout stable/ocata
120. Openstack Swift 개발환경 구축
• 사용할 IDE : PyCharm Professional Edition
- 이유: line by line debugging, Remote Debugging 이 가능.
• Community Edition 을 사용할 경우
- ubuntu desktop 버전으로 devstack 설치
- VM안에 PyCharm Community Edition 을 설치하여 개발환경 구축
- 자세한 방법
- https://github.com/openstack-kr/openstack-study/blob/master/2017-first-swift/20170425/README.md
122. 현재 Swift 서버가 실행되는 구조
devstack vm
/usr/bin/python2.7
devstack vm안에서 직접 실행되어있다.
123. Remote debugging with Remote interpreter
devstack vm
/usr/bin/python2.7
Pycharm이 vm의 Python Interpreter 를 직접 실행하도록 설정
124. 개발환경 구성하기 1 - 소스코드 다운로드 및 동기화
1. 로컬에 swift ocata 버전의 소스코드를 다운로드 받는다.
2. devstack 으로 설치한 swift 소스코드와 동기화 구성을 한다
125. 개발환경 구성하기 2 - Remote Interpreter 설정
1. PyCharm 의 Remote Interpreter 를 설정한다
2. proxy-server 실행환경 설정
126. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택 공개 소프트웨어
- 개발 에코시스템 소개 -
최영락, 오픈스택 한국 커뮤니티 3기 대표
Ocata / Pike
127. Agenda
• OpenStack에서 바라보는 개방성: Four Opens
• Python으로 구현된 OpenStack
• OpenStack 프로젝트 저장소 및 개발 관리
• PyPI: Python Package Index와 OpenStack
• requirements와 tox
• 실습: 저장소 clone, tox 실행 및 requirements 확인
• 더 알아야 할 에코시스템: 버그 & 패치 & 릴리즈 관리
128. OpenStack에서 바라보는 개방성: Four Opens
• Open Source
(개방형 오픈 소스)
• Open Design
(개방형 디자인)
• Open Development
(개방형 개발)
• Open Community
(개방형 커뮤니티)
129. Four Opens – 1. 개방형 오픈 소스
재사용 및 확장 가능한 진정한
의미에서의 오픈 소스
No “Enterprise Edition”
130. Four Opens – 2. 개방형 디자인
요구 사항 수집 및 로드맵 승인 등
모든 절차를 대중에게 공개
모든 설계 과정을 open
131. Four Opens – 3. 개방형 / 열려있는 개발
모든 소스 코드 공개를 개방된
코드 리뷰 과정을 거치며, 모든
과정은 투명하게 문서화됨
132. Four Opens – 4. 개방형 / 오픈 커뮤니티
커뮤니티를 통해 설계 과정을 결정
모든 프로젝트 미팅은 공개 IRC
채널을 통해 열리며 기록
134. Python으로 구현된 OpenStack
• OpenStack 핵심 구성 요소, 대시보드, API,
SDK (Software Development Kit) 등이 모두
Python으로 구현되어 있음
- 참고: “Python 초심자의 OpenStack”
https://www.slideshare.net/openstack_kr/openstack-48778397
• 코딩 규칙, 패키지 관리, 문서화 등 또한 일반적인
Python 관리 방식을 따르고 있음
- 참고: “Rst와 함께 하는 Python 문서 작성...”
https://www.slideshare.net/ianychoi/pycon-kr-2017-rst-python-openstack
• PEP 8이라는 Python 스타일 가이드를 따르며, 추
가적으로 Hacking 이라는 스타일 확인 프로그램
제작
https://docs.openstack.org/hacking/
135. OpenStack 프로젝트 저장소 및 개발 관리
• 프로젝트 저장소: Git을 사용함
- git.openstack.org 를 메인으로 사용
- github.com/openstack 에 미러링
136. OpenStack 프로젝트 저장소 및 개발 관리
• 예: nova 저장소 (URL: http://git.openstack.org/cgit/openstack/nova)
- master 브랜치: 가장 최신 소스가 반영
- 안정 (stable) 브랜치: 최종 릴리즈 (예: Ocata, Pike)가 이루어졌을 때 만들어 관리
- 태그: 특정 커밋을 기준으로 하여 버전 번호를 붙임
137. PyPI – the Python Package Index
• Python 패키지들에 대한 버전, 의존성을 관리
• 홈페이지: https://pypi.python.org/pypi
138. PyPI – the Python Package Index와 OpenStack
• 모든 OpenStack 프로그램들은 PyPI 패키지로 업로드되어 있음 (총 >500개)
• 각 OpenStack 패키지는 보통 다른 PyPI 패키지를 의존성으로 포함
139. requirements
• 프로젝트 개발에 있어 의존성있는 라이브러리 버전을 규정함
- openstack/requirements 저장소에서 공통 requirements 관리
- test-requirements.txt 파일에 해당 저장소에 의존성있는 라이브러리 정의
145. 어떻게 오픈스택 프로젝트에 기여할 수 있는가?
✓클라우드를 구축하는 분이시라면
✓멘토링과 멘티
✓개발자이신 경우
✓테스터이신 경우
✓시큐리티 분야에서 활동하시는 경우
✓문서 분야에서 활동하시는 경우
✓UX에 관심이 있으신 디자이너
✓번역에 관심이 있으신 경우
✓커뮤니티 빌더 이신 경우
Source : https://wiki.openstack.org/wiki/How_To_Contribute
146. 어떻게 오픈스택 프로젝트에 기여할 수 있는가?
✓클라우드를 구축하는 분이시라면
✓멘토링과 멘티
✓개발자이신 경우
✓테스터이신 경우
✓시큐리티 분야에서 활동하시는 경우
✓문서 분야에서 활동하시는 경우
✓UX에 관심이 있으신 디자이너
✓번역에 관심이 있으신 경우
✓커뮤니티 빌더 이신 경우
Source : https://wiki.openstack.org/wiki/How_To_Contribute
148. OpenStack Upstream Training
✓OpenStack 개발자를 위해 OpenStack 프로젝트 technical tool 및
social interaction이 어떻게 이루어지는지 학습
✓실제 OpenStack 프로젝트 내에서 bug를 선택하여 OpenStack
upstream 소스 저장소에 반영하는 것을 목표로 함
✓보통 OpenStack Summit 행사 이전에 열리며, 한국에서도 별도로 실시
Source : https://docs.openstack.org/ko_KR/upstream-training/
149. 오픈스택에 기여하기 – 클라우드 운영자
✓클라우드를 구축하는 분이신 경우
• 오픈스택 문서를 읽고 수정하고 싶으시다면 → git repository 이용
• 문서 내용의 문제점을 발견하셨다면 → bug report
• OpenStack-operators mailing list에 가입하여 질문 답변 해주기
• User survey를 통해 커뮤니티와 소프트웨어 발전 방향 참여
150. 오픈스택에 기여하기 – 개발자
✓오픈스택 개발에 기여하고자 하시는 분
• Project Team Guide와 Infra Manual을 먼저 읽어주세요
• Gerrit review system 파악 필요
• Launchpad에 접속하여 Blueprint와 Bugs 관리 환경 살펴보기
• Contributor License Agreement 동의 필요
• Code review하기
• OpenStack developers mailing list 구독하기
• #openstack-dev IRC 채널 접속
151. 오픈스택에 기여하기 – 문서 기여자
✓오픈스택 문서에 기여하고자 하시는 분
• Openstack-manuals 혹은 각 개별 프로젝트에 참여 가능
• launchpad bug를 통해 문서의 bug report 하기
• 각 프로젝트의 문서를 정독하면서 시작
152. 오픈스택에 기여하기 – 번역자
✓오픈스택 문서를 번역하고자 하시는 분
• Internationalization team에 가입
• 약 22개국의 localization team에 참가(한국 포함)
• 한국어 번역을 위한 문서 :
https://wiki.openstack.org/wiki/I18nTeam/team/ko_KR
• Zanata 라는 번역 플랫폼을 이용하여 손쉽게 문장 및 단어를 번역
• 번역자와 리뷰어 두 부분이 존재
• 현재 사용하고 있는 오픈스택 모든 버전의 한글화가 contributor들의
번역으로 탄생
153. 오픈스택에 기여하기 위한 계정 가입 및 설정
✓오픈스택 테스트를 위한 Linux VM 1개 준비
✓www.openstack.org → Foundation Member로 가입
✓www.launchpad.net → Ubuntu One 계정 가입
✓review.openstack.org → launchpad 계정으로 로그인 한 후 username 생성, ICLA 동의
✓SSH 공개키 생성 및 등록
✓Zanata ID 가입
✓Github ID : 없어도 되지만, contribution이 Github에 보이도록 하고 싶다면 Gerrit
✓ username 및 이메일을 동일하게 사용할 것
166. 오픈스택 번역하기 - Zanata
✓번역 단어집 : https://wiki.openstack.org/wiki/단어집
✓번역을 수정 할 수 있는 사람 : reviewer / coordinator
✓Zanata에는 남은 비율에 비례하여 시간 표기
✓메뉴에서 Incomplete 체크 -> Fuzzy와 Rejected 체크 해제
✓화살표에서 파란색 bar는 일반 참여자가 수정할 수 없음
✓‘WORDS’ 뒤에 반드시 한글로 번역 할 때에는 띄어쓰기가 있어야 함.
• Eg) deployments (bug 1508571 <https://bugs.launchpad.net/horizon/+bug/1508571>__)
✓%s의 경우 반드시 번역시에도 넣어줘야 함.
167. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택 컨트리뷰터 도전 : 개발
장태희, 오픈스택 한국 커뮤니티 3기 스터디 매니저
Ocata / Pike
168. Agenda
• 오픈스택 개발 컨트리뷰션 개요
• 오픈스택 개발 컨트리뷰션을 위한 계정 설정
• 오픈스택 개발 컨트리뷰션을 위한 개발 환경 준비
• 컨트리뷰션 사례 공유
169. 어떻게 오픈스택 프로젝트에 기여할 수 있는가?
✓클라우드를 구축하는 분이시라면
✓멘토링과 멘티
✓개발자이신 경우
✓테스터이신 경우
✓시큐리티 분야에서 활동하시는 경우
✓문서 분야에서 활동하시는 경우
✓UX에 관심이 있으신 디자이너
✓번역에 관심이 있으신 경우
✓커뮤니티 빌더 이신 경우
Source : https://wiki.openstack.org/wiki/How_To_Contribute
170. 어떻게 오픈스택 프로젝트에 기여할 수 있는가?
✓클라우드를 구축하는 분이시라면
✓멘토링과 멘티
✓개발자이신 경우
✓테스터이신 경우
✓시큐리티 분야에서 활동하시는 경우
✓문서 분야에서 활동하시는 경우
✓UX에 관심이 있으신 디자이너
✓번역에 관심이 있으신 경우
✓커뮤니티 빌더 이신 경우
Source : https://wiki.openstack.org/wiki/How_To_Contribute
171. 오픈스택에 기여하기 – 개발자
✓오픈스택 개발에 기여하고자 하시는 분
• Project Team Guide와 Infra Manual을 먼저 읽어주세요
• Gerrit review system 파악 필요
• Launchpad에 접속하여 Blueprint와 Bugs 관리 환경 살펴보기
• Contributor License Agreement 동의 필요
• Code review하기
• OpenStack developers mailing list 구독하기
• #openstack-dev IRC 채널 접속
172. 오픈스택에 기여하기 위한 계정 가입 및 설정
✓오픈스택 테스트를 위한 Linux VM 1개 준비
✓www.openstack.org → Foundation Member로 가입
✓www.launchpad.net → Ubuntu One 계정 가입
✓review.openstack.org → launchpad 계정으로 로그인 한 후 username 생성, ICLA 동의
✓SSH 공개키 생성 및 등록
✓Zanata ID 가입
✓Github ID : 없어도 되지만, contribution이 Github에 보이도록 하고 싶다면 Gerrit
✓ username 및 이메일을 동일하게 사용할 것
182. 오픈스택에 기여하기 위한 git 명령어들
✓git log
✓git status
✓git remote –v : remote URL을 추가하여 clone 받는 곳과 push 하는 repository를 다르게 설정
✓git commit 규칙 : https://medium.com/@preslavrachev/what-s-with-the-50-72-rule-8a906f61f09c
183. git review와 gerrit 이용하기
✓git-review 설치(sudo apt install git-review)
✓git config --global user.name "Firstname Lastname"
✓git config --global user.email your_email@youremail.com
✓git clone ssh://<username>@review.openstack.org:29418/openstack-dev/sandbox
✓git review –s
✓Creating a git remote called "gerrit" that maps to:
ssh://<username>@review.openstack.org:29418/openstack-dev/sandbox.git
✓ 와 같이 콘솔창에 출력되면 성공적으로 git review가 세팅
187. git review 주의사항
✓Permission Key Denied가 뜬 경우
• username을 입력하지 않았다.(git config --global gitreview.username <username>)
• Openstack Foundation Member가 아니다. (Community Member는 안됨.)
• Gerrit에서 ICLA Agree를 하지 않았다.
• Gerrit에서 Contact Information을 넣지 않았다.(review.openstack.org -> Contact
information last updated on 이 있어야 함.)
• ssh key(id_rsa 말고) 를 다른 key file을 사용하였다.
• git config에 gerrit.review가 중복된 경우.
188. git review 주의사항
✓branch를 따서 작업하던 도중 다른 사람의 commit이 올라오면 rebase를 통해서 master를 갱신해준
다음 push를 해주어야 함
✓commit 여러 개를 하고 싶으면 amend로 무조건 하거나 cherry pick으로 댕겨서 작업 후 올리기. 1
work에 1 commit 원칙
✓review에서 문제가 발생하여 patch set 2, 3을 해야하는 경우, 해당 커밋을 지우지 말고 그 상태에서
수정하여 push
189. 기타
✓기술위원회 : http://governance.openstack.org/
✓IRC 미팅 일정: http://eavesdrop.openstack.org/
✓의사소통 문서: http://docs.openstack.org/ko_KR/upstream-training/howitsmade-
communication.html#1
✓버그 수정 및 기타 자세한 사항
• https://github.com/openstack-kr/openstack-study/tree/master/2016-fall-upstream
190. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택과 REST API
최영락, 오픈스택 한국 커뮤니티 3기 대표
Ocata / Pike
191. Agenda
• 클라우드와 API
• 클라우드 API와 CLI
• OpenStack: App Hackathon 관련 내용 소개
• 클라우드 인프라를 API로 다루어 보자
• API를 제공하는 주체, 서버 파트
• API를 사용하는 주체: Curl, Postman, 모바일 앱 (with Fuse)
192. 잠깐: API에 관해서
• API (Application Programming Interface)
• 프로그램과 프로그램이 서로 명령을 주고 받기 위해 미리 약속해둔 일종의 규칙
193. API로 클라우드 인프라를 관리하려면
• API 파악시 장점
• 어떤 구성 요소가 있는지 파악 가능
• 추상화되어 있는 기능에 대한 자세한 이해
• 시스템 구축 표준화 방안 마련
• OpenStack: CLI와 API의 차이점
• CLI에서 수행하는 모든 명령어를 API 호출로 사용 가능
• API를 활용하면 다양한 아이디어를 붙여 클라우드
소프트웨어를 만들 수 있음
• 다른 클라우드와 상호 연동 가능
• OpenStack 일부 구성 요소만을 사용하여 클라우드 서비스를
구축 가능
194. OpenStack App Hackathon
• 2016년 Taiwan을 시작으로 Mexico, 호주 등 다양한 국가에서 개최
• 40여 시간동안 클라우드 API를 활용한 OpenStack App을 개발
195. OpenStack App Hackathon 관련 문서
• OpenStack App 개발을 위한 다양한 문서
https://www.openstack.org/appdev/
196. OpenStack App Hackathon 관련 문서
• FirstApp 문서: OpenStack App 첫 개발을 위한 내용을 문서로 정리
https://developer.openstack.org/firstapp-libcloud/getting_started.html
197. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 1. API를 제공하는 주체 (서버 파트)
• 2. API를 사용하는 주체 (모바일 앱 with Fuse, CLI, …)
http://linkeddataorchestration.com/2014/01/28/data-modeling-for-apis-part-2-rest-and-json/
198. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 1. API를 제공하는 주체 (서버 파트)
• “API 액세스” 메뉴에서 API 목록 확인
199. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 2. API를 사용하는 주체
• 먼저, curl로 간단히 테스트하기 전에.. 문서를 봅시다
https://developer.openstack.org/firstapp-libcloud/getting_started.html
200. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 2. API를 사용하는 주체
• 그런데.. 음, 다르군요
• http://controller:5000/v2.0
• http://10.0.1.4:identity
https://developer.openstack.org/firstapp-libcloud/getting_started.html
201. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 2. API를 사용하는 주체
• (일단 인증 기본이 되는 토큰을 가져와야 API 사용이 가능)
https://docs.openstack.org/keystone/latest/api_curl_examples.html#tokens
202. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 2. API를 사용하는 주체
• OpenStack Keystone: API v2와 v3가 있음
https://developer.openstack.org/api-ref/identity/
203. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 2. API를 사용하는 주체
• API URL을 알아냄 ➔ http://[server URL]/identity/v3/auth/tokens
https://goo.gl/b47XQf
204. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 2. API를 사용하는 주체
• Postman: GUI 환경으로 API 테스트가 용이함
205. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 2. API를 사용하는 주체
• 모바일 앱에서 테스트를 해 보려면? 일단 프로토타이핑이 필요한데..
https://github.com/stackerz/app
207. 클라우드 인프라를 API로 다루기 위해 필요한 것들
• 2. API를 사용하는 주체
• Fuse로 만드는 방법: 자바스크립트로 REST API 통신
208. [공개소프트웨어 오픈스택 입문 & 파헤치기]
오픈스택과 공개 소프트웨어
비즈니스 에코시스템
최영락, 오픈스택 한국 커뮤니티 3기 대표
Ocata / Pike
209. Agenda
• 라이선스, 문서화 & 번역
• OpenStack 공식 프로젝트
• 릴리즈 주기 및 관리
• Gerrit & OpenStack CI
• OpenStack 거버넌스
• 오픈스택 Nova: Vendor와 함께 하는 생태계 살펴보기
(사례: Hyper-V 드라이버)
• 오픈스택 생태계
210. 라이선스, 문서화 및 번역
• 비즈니스 에코시스템에서 꼭 필요한 기본적인 부분
• 라이선스: Apache License v2를 따름
• 문서화: docs.openstack.org 에서 문서 제공
• 번역: translate.openstack.org 를 통해 번역 참여 가능
212. OpenStack 공식 프로젝트
• 모든 openstack 내 git 저장소에 있는 내용이 공식 프로젝트 대상이 아님
• 누구나 가이드에 따라 github.com/openstack 에 저장소 생성 가능
- https://docs.openstack.org/infra/manual/creators.html 참고
• OpenStack 공식 프로젝트: OpenStack 목표에 따라 릴리즈에 맞추어 다른 팀과 상호 협
력하여 지속적인 개발이 이루어지는 프로젝트 (“project:official” 이라는 태그를 붙임)
- 예: openstack/i18n은 공식 프로젝트이나, openstack/stackalytics는 아님
214. 릴리즈 주기
릴리즈 이름 릴리즈 일자 포함 구성요소
Austin 21 October 2010 Nova, Swift
Bexar 3 February 2011 Nova, Glance, Swift
Cactus 15 April 2011 Nova, Glance, Swift
Diablo 22 September 2011 Nova, Glance, Swift
Essex 5 April 2012 Nova, Glance, Swift, Horizon, Keystone
Folsom 27 September 2012 Nova, Glance, Swift, Horizon, Keystone, Quantum,
Cinder
Grizzly 4 April 2013
Havana 17 October 2013 + Heat, Ceilometer
Icehouse 17 April 2014 + Trove
Juno 16 October 2014 + Sahara
Kilo 30 April 2015 + Ironic
Liberty 15 October 2015
(총 63개 공식 프로젝트 및
관련 구성요소)
Mitaka 7 April 2016
Newton 6 October 2016
Ocata 22 February 2017
Pike 30 August 2017
Queens (2018년 2월 예정)
Rocky (2018년 8월 예정)
• 6개월 주기로 릴리즈 발표
- 처음에는 하위 업그레이드를
미지원하다가 약 2년 전 즈음부터
하위 업그레이드를 지원하기 시작
- 새로운 특징 및 핵심 기능들은
보통 1년을 주기로 많은 변화가
생김
• 현재 릴리즈 버전: Pike
(2018년 1월 기준)
Source: http://en.wikipedia.org/wiki/OpenStack
http://releases.openstack.org/
215. 릴리즈 관리: 릴리즈를 이루는 것들
• OpenStack 릴리즈: 여러 프로젝트에 대해 조정이 이루어지는 과정 포함
• 릴리즈 절차: 릴리즈 관리 팀에 의해 관리가 이루어짐
• 일정 공통 주기 (약 6개월) 내에서 공식 프로젝트는 다음 모델을 따름
• 릴리즈 모델
- cycle-with-milestones: 메인 개발 마일스톤을 따르는 공통 주기
- cycle-with-intermediary: 중간 단계 릴리즈를 가진 공통 주기
- cycle-trailing: 공통 주기 끝 부분에서 릴리즈가 이루어짐
- independent: 공통 주기와 무관하게 별도 릴리즈 주기를 따름
216. 릴리즈 관리: 저장소 & 태그
• 릴리즈에 대한 문서 & 정보 집합: https://releases.openstack.org/
- 릴리즈 대상에 해당하는 프로젝트 저장소 및 버전, 해당 커밋 해시를 모두 정리
- 릴리즈 진행 스케줄, 릴리즈 노트 확인 가능
218. Gerrit 및 OpenStack CI
• 개발자 커밋은 Gerrit ( https://review.openstack.org )을 통해 패치가 관리되어
최종 머지가 이루어졌을 때 반영이 됨
• 개발자가 올린 패치를 테스트하기 위해 OpenStack CI에서 tox 등에 의해 정의된
작업을 확인함
219. OpenStack 거버넌스
• OpenStack Foundation: OpenStack을 "개발, 지원, 보호, 홍보" 하기 위해 만들
어진 비영리 재단
- 개인 멤버: www.openstack.org 에 “Foundation Member”로 가입한 모두
- 기관 멤버: 플래티넘과 골드 스폰서
- 뿐만 아니라 여러 지원을 하는 회사 및 기관이 많습니다.
• 여러 계층으로 구성된 리더쉽
- 이사회 (Board of Directors)
- 기술 위원회 (Technical Committee)
: ATC (Active Project Contributor)와 ATC (Active Technical Contributor)
- 사용자 위원회 (User Committee)
: AUC (Active User Contributor)
220. OpenStack: Nova
•Nova
• 가상 머신 자원을 관리하는 OpenStack의 구성 요소 중 하나입니다.
Asynchronous eventually
consistent communication
REST-based API
Hypervisor agnostic:
support for Xen ,XenServer, Hyper-V,
KVM, UML and ESX is coming
Horizontally and
massively scalable
Hardware agnostic:
standard hardware, RAID not required
221. OpenStack Nova의 발전
• 최초 릴리즈인 Austin에는 Nova와 Swift (오브젝트 스토리지 관리)만 존재
• 오픈 소스 하이퍼바이저 위주로 지원 시작
• Xen+Libvirt
• KVM
• XenAPI (for XenServer)
• QEMU
• 참고: 네트워크 관리에 대해서는, 가상 인스턴스 관리와 동시에 관리되어야 한다고
생각하여 Nova-network 라는 하위 구성 요소를 두어 발전 ➔ 후에 Quantum /
Neutron으로 발전
222. OpenStack & (Vendor) 드라이버
• 다양한 상용 / 오픈 소스 하이퍼바이저, 스토리지, 네트워크 장비 등과 호환성이 높음
Src.: https://www.openstack.org/marketplace/drivers/
223. 다양한 상용 하이퍼바이저 지원 시작
• 시작은 사실 XenServer부터..
• (Xen 기반 상용 하이퍼바이저이기에 상대적으로 쉬웠을 듯)
224. Nova 지원 하이퍼바이저
• http://docs.openstack.org/developer/nova/support-matrix.html
• (Note: 몇몇 정보는 업데이트되지 않았을 수 있습니다)
241. Sandbox 저장소 공간
• OpenStack Sandbox 저장소
• https://review.openstack.org
/#/admin/projects/openstack
-dev/sandbox
• Git 커밋, 패치, 리뷰 등 연습
공간 + 인프라 연동 테스트 +
컨트리뷰션을 위한 가이드 /
지원 등을 수행
242. OpenStack: Sandbox 저장소
• OpenStack 학습을 시작하기 위한 훌륭한 저장소입니다
• https://git.openstack.org/cgit/openstack-dev/sandbox
243. Gerrit을 활용한 워크플로우 확인
• Gerrit
➢ GitHub에서의 pull
request와 비슷
➢ 여러 사람에 의한
code review 가능
244. Gerrit 리뷰 과정 in OpenStack
• 점수 부여
➢ -2: 받아들일 수 없는 수정
➢ -1: 수정 필요한 사항
➢ 0 : 중립 또는 자세한 comment
작성시
➢ +1: 리뷰 결과 괜찮음
➢ +2: 해당 프로젝트의 핵심 개발자가
괜찮음을 표현
• 일반적인 코드 병합
➢ 2명의 핵심 개발자가 각각 +2를
주었을 때 병함됨
➢ Workflow를 +1로 주었을 때 최종
코드 병합 이루어짐
245. 코드 병합 (Merged) in OpenStack
• 업로드한 코드는 patch set 단위로
관리됨
• 모든 업로드 코드는 Jenkins에
의해 업로드한 코드에 대해 자동
점검 수행
• 일반적으로 해당 프로젝트 내 +2를
2번 이상 받았을 때 Workflow
+1를 주면 해당 코드에 대한
병합이 이루어짐
255. Gerrit 업로드 결과
• Gerrit 홈페이지에서 확인 가능 + 이메일로 다른 사람에게 리뷰 부탁 가능
256. (데모/실습)
• 준비 사항: Git + Git review가 동작하는 Linux/Mac OS 환경 필요
• 데모 / 실습 내용
➢ Ubuntu 16.04 LTS 환경
➢ git, git-review 설치 및 설정 구성
➢ Sandbox Launchpad에 테스트 버그 등록 및 자신 할당
➢ Sandbox 저장소에서 작업 후 커밋, 그리고 Gerrit에 보내기