BOSH는 IaaS 환경에서 Stemcell, Deployment, Release를 이용하여 VM을 관리하는 툴이다.
위 그림처럼 사용자는 CLI를 통해 접근할 수 있고 BOSH를 통해 띄워진 VM은 BOSH Agent를 가지고 있어서 개별 관리를 해준다. Release Engineering라는 개념을 사용한다. 이는 잦은 릴리즈를 뜻하는데 요즘 유행하는 개발환경과 공통점이 많아보인다. Release Engineering이라는 개념은 아래 글을 보면 빠르게 이해할 수 있다. 언제나 좋은 글을 번역해주는 분들에게 감사드린다.
http://www.looah.com/article/view/983
잘 모르겠으니, 일단 한 번 BOSH를 사용해본다. 테스트를 위해 진행된 환경은 다음과 같다.
- OS : Ubuntu 18.04.03 LTS
- Memory 8GB, HDD 120GB, CPU 2core, 인터넷이 가능한 환경
1. BOSH CLI 설치
기본적으로 OS는 전부 설치되어 있다는 가정하에 진행한다. BOSH Dependecy를 설치해준다.
sudo apt-get install -y build-essential zlibc zlib1g-dev ruby ruby-dev openssl libxslt1-dev libxml2-dev libssl-dev libreadline7 libreadline-dev libyaml-dev libsqlite3-dev sqlite3
이후 BOSH-CLI를 설치해준다.
$ mkdir -p ~/bosh-env/virtualbox
$ cd ~/bosh-env/virtualbox
$ curl -Lo ./bosh https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-5.3.1-linux-amd64
$ chmod +x ./bosh $ sudo mv ./bosh /usr/local/bin/bosh
$ bosh -v version 5.3.1-8366c6fd-2018-09-25T18:25:51Z
(2) VirtualBOX를 설치해준다.
$ sudo apt update
$ wget --content-disposition https://download.virtualbox.org/virtualbox/5.2.20/virtualbox-5.2_5.2.20-125813~Ubuntu~bionic_amd64.deb
$ sudo dpkg -i virtualbox-5.2_5.2.20-125813~Ubuntu~bionic_amd64.deb
$ sudo apt --fix-broken install
$ sudo /sbin/vboxconfig
$ VBoxManage --version
(3) bosh-release를 만든다.
먼저 git을 클론해서 필요한 정보를 다운받아준다.
git clone https://github.com/cloudfoundry/bosh-deployment.git
Cloning into 'bosh-deployment'...
remote: Enumerating objects: 98, done.
remote: Counting objects: 100% (98/98), done.
remote: Compressing objects: 100% (77/77), done.
remote: Total 6799 (delta 41), reused 58 (delta 20), pack-reused 6701
Receiving objects: 100% (6799/6799), 1.08 MiB | 1.08 MiB/s, done.
Resolving deltas: 100% (4386/4386), done.
create-env를 실행하여 BOSH 디렉터를 만들어주고, 환경을 구성해준다.
./bosh-deployment/virtualbox/create-env.sh
과정을 보면 BOSH Deirector VM이 생성되고 네트워크 경로도 추가해준다. .envrc라는 파일을 만들어주는데 적용하고 bosh 명령어를 통해 새롭게 만들어진 vbox에 접근할 수 있다.
source .envrc
bosh -e vbox env
이제 디렉터가 만들어졌으니 배포 준비가 끝났다.
(4) cloud config를 업데이트해준다.
bosh-deployment/warden/cloud-config.yml
샘플 파일로 어떻게 구성되는지 볼 수 있다.
azs:
- name: z1
- name: z2
- name: z3
vm_types:
- name: default
disk_types:
- name: default
disk_size: 1024
networks:
- name: default
type: manual
subnets:
- azs: [z1, z2, z3]
dns: [8.8.8.8]
range: 10.244.0.0/24
gateway: 10.244.0.1
static: [10.244.0.34]
reserved: []
compilation:
workers: 5
az: z1
reuse_compilation_vms: true
vm_type: default
network: default
이 파일을 통해 몇 개의 존을 만들지, 네트워크는 어떻게 할지, 워커는 어디에 몇 개 만들지 정할 수 있다. 적용해본다.
bosh -e vbox update-cloud-config bosh-deployment/warden/cloud-config.yml
맹숭맹숭하게 적용된다.
(5) stemcell을 업로드해준다. (+release도 가지고 있음)
얘는 배포시 필요한 패키지나 OS 이미지를 가지고 있다.
bosh -e vbox upload-stemcell https://bosh.io/d/stemcells/bosh-warden-boshlite-ubuntu-xenial-go_agent?v=315.45 \
--sha1 674cd3c1e64d8c51e62770697a63c07ca04e9bbd
다운받는 파일을 살펴보면 이미지, 패키지 리스트가 있는 것을 볼 수 있다.
(6) sample deployment를 배포해준다.
bosh -e vbox -d zookeeper deploy <(wget -O- https://raw.githubusercontent.com/cppforlife/zookeeper-release/master/manifests/zookeeper.yml)
얘는 이름만 봐도 알 수 있는 zookeeper다. (오랜만에 보니 반갑다)
---
name: zookeeper
releases:
- name: zookeeper
version: 0.0.10
url: git+https://github.com/cppforlife/zookeeper-release
stemcells:
- alias: default
os: ubuntu-xenial
version: latest
update:
canaries: 2
max_in_flight: 1
canary_watch_time: 5000-60000
update_watch_time: 5000-60000
instance_groups:
- name: zookeeper
azs: [z1, z2, z3]
instances: 5
jobs:
- name: zookeeper
release: zookeeper
provides:
conn: {shared: true}
properties: {}
- name: status
release: zookeeper
properties: {}
vm_type: default
stemcell: default
persistent_disk: 10240
networks:
- name: default
- name: smoke-tests
azs: [z1]
lifecycle: errand
instances: 1
jobs:
- name: smoke-tests
release: zookeeper
properties: {}
vm_type: default
stemcell: default
networks:
- name: default
yml 파일 내용은 이렇다. ubuntu를 사용하고, zone 1, 2, 3에 5개의 instance를 올린다. 네트워크도 default 값을 사용한다. 이러한 내용은 이전에 만든 cloud-config에 전부 써져있다는 것을 알 수 있다.
열심히 만드는 모습. 만들어진 vm들은 아래 명령어로 조회할 수 있다.
bosh -e vbox vms
(7) 하란대로 smoke test 해본다. 이건 그냥 잘 돌아가나 테스트해보는거다.
bosh -e vbox -d zookeeper run-errand smoke-tests
테스트가 끝났으면 아래 스크립트를 통해 깔끔하게 지워준다.
./bosh-deployment/virtualbox/delete-env.sh
'Cloud > CloudFoundry' 카테고리의 다른 글
PaaS-TA 교육 이론 정리 (0) | 2019.11.29 |
---|---|
PaaS-TA 교육 5일차 (0) | 2019.11.29 |
PaaS-TA 교육 4일차 (0) | 2019.11.29 |
PaaS-TA 교육 3일차 (0) | 2019.11.29 |
PaaS-TA 교육 2일차 (0) | 2019.11.29 |