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을 확인한다.
(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 |