본문 바로가기

Cloud/CloudFoundry

PaaS-TA 교육 2일차

2일차

PaaS-TA 구축
- BOSH 개념
- Inception VM(micro BOSH)을 통해서 BOSH를 배포
- Release + Stemcell + Manifest를 Bosh CPI를 통해서 IaaS 구축
- PaaS-TA 3.5를 기준으로 BOSH 1, 2가 갈림
- BOSH 1, 2의 차이
- Cloud-config 파일의 유무
- init(1), cli(2) 사용
- BOSH는 구성에 순서를 가지고 있음(서로의 의존성이 있음)
- credhub : 인증정보 저장소
- 인프라환경 구성

PaaS-TA 구축
- Inception VM 설치
(1) VM EXSI를 이용하여 Inception VM 생성
- Spec : CPU 14core, Memory 15GB, HDD 100GB
- Network : VM Netwrok
- 게스트 운영 체제에 하드웨어 지원 가상화 표시 체크
- OS : Ubuntu 18.04
(2) 생성된 VM에 Ubuntu 18.04를 설치
(3) 설치된 VM의 IP 확인 이후 SSH 접속을 위한 세팅
- BOSH 설치
(1) BOSH Dependency 설치
- Ubuntu 16.04와 18.04는 Libreadline의 버전이 다르므로 주의해야 함
(2) VirtualBOX 설치
(3) 파일 다운로드를 위한 GIT, CURL 설치
(4) BOSH CLI V2 설치
(5) BOSH Director VM 설치
(6) create-bosh.sh 작성 이후 실행
(7) BOSH 로그인
(8) Credhub(인증정보저장소) 설치 이후 인증정보 확인
(9) Jumpbox(VM 접근을 위한 인증) 설치 이후 접속 확인, VM 상태 확인

- 시험
BOSH의 구성요소
- Deployment 안의 옵션이 무엇을 의미하는지
BOSH 개념
BOSH 배포 시 필요한 요소들


- BOSH 설치 (참고 링크)

(1) 서버에 접속 이후 ID/PW로 로그인 (VMware ESXI로 접속) (root/JSlab123)

(2) 가상시스템>VM생성>새 가상 시스템 생성

- 네트워크 같은 경우에는 VM Network

- 게스트 운영 체제에 하드웨어 지원 가상화 표시 체크

- CD/DVD 드라이브 1 > 데이터스토어 ISO 파일 > Ubuntu 18.04.iso 선택

- CPU 12core, 메모리 15GB, 하드디스크 200GB

(3) 생성된 VM을 확인한다.

inception VM > BOSH 배포 > BOSH를 통해 PaaS-TA VM 배포

(4) VM에 Ubuntu 18.04를 설치한다.

언어 [한국어] 이외에는 전부 Default 값으로 진행한다 / VM 생성시 계정은 ubuntu/master로 해야한다

(5) 설치 이후 VM의 IP를 확인한다.

이후 SSH 접속을 위해 업데이트 이후 설치-실행해준다.

$ sudo apt-get update
$ sudo apt-get install openssh-server
$ sudo service ssh start

SSH 프로그램으로 연결을 확인해준다.

(6) BOSH Dependency 설치

sudo apt-get update

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

16.04와 18.04는 의존성이 조금 다름 (libreadline 버전 차이)

(7) 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

현재 문제가 존재해서 fix-broken까지만 진행. 아래 명령어로 함 (sudo /sbin/vboxconfig 사용X)

sudo apt-get --reinstall install virtualbox-dkms

VBoxManage --version
5.2.34_Ubuntur133883

궁금점 : apt-get install과 apt install의 차이

git과 curl 설치한다.

$ sudo apt-get install git-core
$ sudo apt install curl

(8) BOSH CLI V2 설치

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


Succeeded

(9) BOSH Director VM 설치

$ git clone https://github.com/cloudfoundry/bosh-deployment ~/workspace/bosh-deployment
$ cd ~/workspace/bosh-deployment/virtualbox
$ vi ~/workspace/bosh-deployment/virtualbox/cpi.yml
      memory: 8196 ==> 수정

$ cd ~/workspace/bosh-deployment
$ vi create-bosh.sh

deployment가 다운로드 된다. 경로는 release, stemcell의 옵션에 정해져 있기 때문에 그대로 따라주는 것이 좋다. 아니라면 직접 yml 파일을 수정해주어야 한다.

cpi.yml의 메모리를 수정해주어야 한다.

디렉터리를 이동한다.

create-bosh.sh를 만든다.

bosh create-env ~/workspace/bosh-deployment/bosh.yml \
  --state ./state.json \
  -o ~/workspace/bosh-deployment/virtualbox/cpi.yml \
  -o ~/workspace/bosh-deployment/virtualbox/outbound-network.yml \
  -o ~/workspace/bosh-deployment/bosh-lite.yml \
  -o ~/workspace/bosh-deployment/bosh-lite-runc.yml \
  -o ~/workspace/bosh-deployment/uaa.yml \
  -o ~/workspace/bosh-deployment/credhub.yml \
  -o ~/workspace/bosh-deployment/jumpbox-user.yml \
  --vars-store ./creds.yml \
  -v director_name=bosh-lite \
  -v internal_ip=192.168.50.6 \
  -v internal_gw=192.168.50.1 \
  -v internal_cidr=192.168.50.0/24 \
  -v outbound_network_name=NatNetwork

internal_ip=192.168.50.X (본인 IP로 변경) - 네트워크의 경우 AWS, GCP를 사용할 경우 네트워크를 변경해주어야 함.

-o 옵션에서 절대 경로 이외에 상대 경로로 사용해도 된다고 한다.

chmod 755 ./create-bosh.sh
./create-bosh.sh

권한을 부여한 뒤 실행해준다.

제대로 실행이 안되면 cpi.yml 파일을 의심해본다. 띄어쓰기나 오타가 발생했을 수 있다.

진행 중에 에러가 났다면 생성된 파일을 삭제해주고, 다시 실행한다. 이전에 있던 파일을 계속 참조하려고 하기 때문이다.

보면 이렇게 VM을 만들고 있다는 것을 알 수 있다.

그림처럼 BOSH CLI를 통해 BOSH Component들이 만들어 진 것을 확인 할 수 있다.

(10) BOSH Login

bosh alias-env vbox -e 192.168.50.6 --ca-cert <(bosh int ./creds.yml --path /director_ssl/ca)

IP는 내가 설정한 IP로 변경해주어야 한다.

이렇게 볼 수 있다.

bosh -e vbox env

user가 not logged in으로 되어 있다. 이 것을 admin으로 변경해준다.

$ export BOSH_CLIENT=admin
$ export BOSH_CLIENT_SECRET=`bosh int ./creds.yml --path /admin_password`

(11) Credhub

 Credhub 인증 정보 저장소이며 BOSH 설치 이후 yml을 적용하면 PaaS-TA의 인증정보가 저장된다. 현재는 저장된 인증정보가 없으므로 null 값이 나온다.

$ cd ~/workspace/
$ wget https://github.com/cloudfoundry-incubator/credhub-cli/releases/download/2.0.0/credhub-linux-2.0.0.tgz

$ tar -xvf credhub-linux-2.0.0.tgz
$ chmod +x credhub
$ sudo mv credhuv /usr/local/bin/credhuv
$ credhub --version

CLI Version: 2.0.0
Server Version: Not Found. Have you targeted and authenticated against a CredHub server?

credhub에 로그인해준다.

$ cd ~/workspace/bosh-deployment


$ export CREDHUB_CLIENT=credhub-admin
$ export CREDHUB_SECRET=$(bosh int --path /credhub_admin_client_secret ~/workspace/bosh-deployment/creds.yml)
$ export CREDHUB_CA_CERT=$(bosh int --path /credhub_tls/ca ~/workspace/bosh-deployment/creds.yml)
$ credhub login -s https://192.168.50.6:8844 --skip-tls-validation 
Warning: The targeted TLS certificate has not been verified for this connection.
Warning: The --skip-tls-validation flag is deprecated. Please use --ca-cert instead.
Setting the target url: https://192.168.50.6:8844
Login Successful

$ credhub find
credentials: []

이 때에 IP는 본인의 IP로 한다.

(12) Jumpbox

BOSH VM에 접근하기 위한 인증을 맡는 부분이다. BOSH에 문제가 생겨 VM에 직접 접근해야 할 때 사용한다.

$ cd ~/workspace/bosh-deployment
$ bosh int ~/workspace/bosh-deployment/creds.yml --path /jumpbox_ssh/private_key > jumpbox.key 
$ chmod 600 jumpbox.key
$ ssh jumpbox@192.168.50.6 -i jumpbox.key

ssh로 접근하면 된다.

$ monit summary

해당 명령어를 통해 상태를 확인한다.

(13) VM 저장

# To save state of vm
vboxmanage controlvm $(bosh int ~/workspace/bosh-deployment/state.json --path /current_vm_cid) savestate
# To start vm
vboxmanage startvm $(bosh int ~/workspace/bosh-deployment/state.json --path /current_vm_cid) --type headless

'Cloud > CloudFoundry' 카테고리의 다른 글

PaaS-TA 교육 4일차  (0) 2019.11.29
PaaS-TA 교육 3일차  (0) 2019.11.29
PaaS-TA 교육 1일차  (1) 2019.11.29
혼자보면 슬프니까 PaaS-TA VM Spec ~  (0) 2019.11.15
BOSH Component에 대해 정리  (0) 2019.11.14