8.1 오케스트레이션의 기본과 템플릿 구문
8.1.1 오케스트레이션과 오토메이션의 개요
DevOps, 클라우드, 오케스트레이션, 오토메이션의 관계
|
오케스트레이션(자동화 태스크) |
오토메이션(자동화) |
DevOps |
조직의 DevOps 프로세스를 자동화 툴의 태스크로 만든다. |
|
AWS 나 오픈스택과 같이 API 로 제어되는 클라우드 관리 플랫폼상 구현된다. | 지속적 통합을 위해 CI 툴을 사용하여 소프투웨어 빌드를 한다.
|
| 클라우드 인프라 | 클라우드 관리 플랫폼에는 다음과 같은 네 가지 기능 레이어가 있다.
-
API 포털 엑세스 레이어
-
서비스 관리 레이어
-
오케스트레이션 레이어
-
리소스 관리 레이어 | 다음 절차를 클라우드 툴로 자동화 한다.
-
베어메탈 서버에 가상 서버 디플로이
2 운영체제 설치
-
네트워크 구축 및 설정 작업
-
애플리케이션 설치 및 설정 작업 (클라우드 관리 플랫폼의 기능 범위 밖) |
Infrastructure as Code
- 클라우드 인프라나 시스템의 상태를 표현할 때 사람에게 친숙한 텍스트 파일 (YAML, JSON 등)으로 정의하면 오케스트레이션 툴이나 API, 각종 스크립트 언어, 오토케이션 툴들이 이를 해석하고 작업들을 자동으로 처리한다.
- 대부분 멱등성을 지키도록 설계되어 진다.
- 오케스트레이션 및 오토메이션의 접근 방법은 아래 두 가지 형태로 분류 된다.
- 프로그래밍 언어처럼 애플리케이션 설치나 설정 순서를 열거한 다음 그것들을 자동화하도록 절차형 툴을 사용한다. (Chef, Puppet, Ansible 등)
- 애플리케이션에 최적화된 인프라 상태를 템플릿 형태로 정의하고 이것을 관리하는 선언형 기능을 사용한다. (AWS Cloudformation, Heat, Terraform 등)
선언형 툴과 절차형 툴의 적용 범위
- 시스템을 Deploy 하는 과정을 시스템의 레이어의 관점에서 바라보면 하위 레이어에서 상위 레이어 순으로 시스템이 구축되는 과정은 다음과 같다.
- 네트워크 및 블록 스토리지를 준비 (인프라)
- 이미지를 사용한 서버 기동 (인프라)
- OS 설치 (OS)
- 애플리케이션 설치 (미들웨어와 애플리케이션 영역
- 위에서
1, 2
부분이 클라우드 서비스의 제어 범위에 들어간다.
3, 4
부분은 클라우드 서비스의 제어범위에 들어가지 않는다.
- Ansible 등의 절차형 툴을 활용한다.
- AWS CoudFormation 에서는
cfn-init
, cfn-signal
, cfn-ge-metadata
, cfn-hub
와 같은 헬퍼 스크립트나 user-data
기능을 사용해서 설정한다.
8.1.2 오케스트레이션과 리소스 집합체의 기본 사상
- 서버, 블록 스토리지, 네트워크와 같은 개별 리소스에 대해 REST API 를 실행하여 리소스를 제어해도 무방하지만 리소스가 많아질수록 관리가 어려워 지고, 그룹으로 묶어서 관리를 해야 할 상황이 생기게 된다.
- 오케스트레이션이랑 궁극적으로는 리소스의 집합체를 정의하는 기술
- 오케스트레이션의 도입은 액션에 해당하는 API 를 중심으로 처리하던 방식에서 리소스의 그룹을 중심으로 처리하는 방식으로의 패러다임 전환
8.1.3 오케스트레이션과 API
- 오케스트레이션에서는 각종 제어를 할 때 스택을 기본 단위로 한다.
오픈스택 Heat