본문 바로가기

Cloud/CloudFoundry

PaaS-TA 교육 3일차

- 오전 이론 교육 : BOSH 설치 이후에 PaaS-TA Cloud Config를 세팅해주어야 함

- 시험 : Cloud-config의 값(BOSH 1,2의 차이점),  배포 중 사용하는 명령어나 실습 내용(BOSH/CL), ssh 로그인 하는 방법, 서비스들이 어떻게 정상동작하는지 확인하는 방법(vitals), cf 명령어(유저 생성하는 법, 어플리케이션 배포하는 방법), jumpbox 만들기, credhub 등등, 내일 진행하는 내용 - 체험하기 계정

(1) IaaS 따라 값이 다르기 때문에 IaaS에 맞게 수정해주어야 함
- 네트워크 존, flavor 같은 것을 수정

(2) bosh update cloud-config 명령어를 통해 수행

(3) Openstack 기준
- vm_type에 사용하게 될 이름을 본인이 정의
- openstack dashboard에서 spec을 정하여 vm_type 정의
- compilation
- az : azs에서 정해준 정보를 매칭
- network : network에서 정해준 정보를 매칭 (IaaS 정보)
- reserved, static : 사용할 수 있는 IP와 사용하지 못하는 IP 명시
- reuse_compilation_vms : 컴파일 완료 후 VM을 삭제할지 하지 않을지 정함(default는 false)
- vm_type : flavor
- worker : 개수
- disk_size : 추가로 attache 해주는 disk (IaaS에서 가져오는 정보로, IaaS 정보와 일치해야 함)
- $bosh -e {director_name} update-cloud-config {iaas}_cloud_config.yml
- $bosh -e {director_name} cloud-config 를 통해서 확인

(4) PaaS-TA deploy shell
paasta-deployment.yml 파일은 paasta를 deploy 하는 manifest file
- option 같은 부분은 default값이 존재해 설정해주지 않으면 bosh가 자동 생성
- 직접 구축시 haproxy_public_ip 같은 network 부분을 수정해주어야 함
- uaa : (cloud foundry 개념) user가 로그인할 때 사용하는 정보


PaaS-TA 설치 (참고 링크)

(1) VM의 전원을 켠 후 SSH로 접속한다.

어제에 이어 진행하는 것이기 때문에 명령어를 통해 VM을 실행해준다.

vboxmanage startvm $(bosh int ~/workspace/bosh-deployment/state.json --path /current_vm_cid) --type headless

세션이 사라졌기 때문에 admin.sh를 통해 재로그인한다.

export CREDPATH=/home/ubuntu/workspace/bosh-deployment
export BOSH_CA_CERT=$(bosh int $CREDPATH/creds.yml --path /director_ssl/ca)
export BOSH_CLIENT=admin
export BOSH_CLIENT_SECRET=$(bosh int $CREDPATH/creds.yml --path /admin_password)
bosh alias-env vbox -e 192.168.50.56 --ca-cert <(bosh int $CREDPATH/creds.yml --path /director_ssl/ca)

export CREDHUB_CLIENT=credhub-admin
export CREDHUB_SECRET=$(bosh int $CREDPATH/creds.yml --path /credhub_admin_client_secret)
export CREDHUB_CA_CERT=$(bosh int $CREDPATH/creds.yml --path /credhub_tls/ca)
credhub login -s https://192.168.50.56:8844 --skip-tls-validation

source admin.sh로 사용해도 된다.

(2) PaaS-TA 설치 파일을 다운로드 이후 압축을 풀어준다.

$ cd ~/workspace/
$ wget --content-disposition http://45.248.73.44/index.php/s/QwfrPsswe7dzBjg/download

$ cd ~/workspace/
$ tar -xvf ./paasta-4.0.tar 

(3) 압축을 해제한 이후 Local Route를 설정해준다.

$ sudo ip route add   10.244.0.0/16 via 192.168.50.6 # Linux (using iproute2 suite)

Via의 경우 본인의 IP로 설정해주어야 한다.

(4) bosh-lite-cloud-config를 적용해준다.

$ cd ~/workspace/paasta-4.0/deployment/cloud-config
$ bosh -e vbox update-cloud-config bosh-lite-cloud-config.yml

401 error가 나타나면 vbox의 env를 확인해본다.

bosh -e vbox env

reserv-ip : 할당하지 않는 IP

static-ip : paas-ta manifest file에서 static-ip를 사용할 수 있음. manifest에 ip를 주지 않으면 static-ip 이후의 ip를 사용한다.

bosh -e cloud-config

(5) runtime-config를 실행한다.

$ cd ~/workspace/paasta-4.0/deployment/bosh-deployment
$ chmod 755 ./update-runtime-config.sh
$ ./update-runtime-config.sh

bosh -e vbox  update-runtime-config runtime-configs/dns.yml -v inception_os_user_name=ubuntu -v cert_days=3650

update-runtime-config.sh는 위와 같은 내용이다. 현재 사용자는 ubuntu라 변경하지 않아도 되지만 다른 사용자로 로그인 해있을 경우에는 수정해주어야 한다.

bosh가 paas-ta의 dns 정보를 알고 있어야 배포할 수 있기 때문에 실행해주는 것이다.

(6) paas-ta의 Stemcell을 다운받고 업로드해준다.

$ cd ~/workspace/paasta-4.0/stemcell
$ wget --content-disposition https://bosh.io/d/stemcells/bosh-warden-boshlite-ubuntu-xenial-go_agent?v=97.28

사용하기 위해서는 IaaS 위에 업로드해주어야 한다. 이미지 형식으로 업로드하게 되는 것이며 데이터베이스에 저장된다.

$ bosh -e vbox upload-stemcell bosh-warden-boshlite-ubuntu-xenial-go_agent-97.28.tgz

제대로 올라갔는지 확인한다.

bosh -e vbox stemcells

이 stemcell은 paas-ta에서 사용하는 stemcell로 ubuntu image이다.

(7) PaaS-TA 배포

~/workspace/paasta-4.0/deployment/paasta-deployment$ vi paasta-deployment.yml

stemcell 버전을 먼저 확인해본다.

stemcell과 yml version이 맞지 않을 수도 있으므로 확인해주어야 한다.

$ cd ~/workspace/paasta-4.0/deployment/paasta-deployment
$ vi ./deploy-bosh-lite.sh

bosh -e vbox -d paasta deploy paasta-deployment.yml \
   -o operations/bosh-lite.yml \
   -o operations/use-compiled-releases.yml \
   -v inception_os_user_name=ubuntu \
   -v cf_admin_password=admin \
   -v cc_db_encryption_key=db-encryption-key \
   -v uaa_database_password=uaa_admin \
   -v cc_database_password=cc_admin \
   -v cert_days=3650 \
   -v system_domain=bosh-lite.com \
   -v uaa_login_logout_redirect_parameter_disable=false \
   -v uaa_login_logout_redirect_parameter_whitelist=["http://portal-web-user.115.68.151.187.xip.io","http://portal-web-user.115.68.151.187.xip.io/callback","http://portal-web-user.115.68.151.187.xip.io/login"] \
   -v uaa_login_branding_company_name="PaaS-TA R&D" \
   -v uaa_login_branding_footer_legal_text="Copyright © PaaS-TA R&D Foundation, Inc. 2017. All Rights Reserved."

사용할 도메인(system-domain)이 있다면 바꿔주어야 한다. yml 파일을 살펴보면 어떤 네트워크를 사용할지 지정할 수 있으며 다른 계정(Inception)을 사용할 경우에도 수정해주어야 한다. 옵션값은 전부 수정할 수 있으므로 본인에게 알맞은 것을 사용하도록 한다.

vi paasta-deployment.yml

smoke-test라는 vm의 경우에는 실제로 생성되는 것이 아닌 테스트용이며 값들은 변경될 수 있다. 이전에 지정해놓은 값들이 default로 들어가는 경우가 많으므로 수정시 유의하도록한다. 이는 cloud-config 파일에서 정의하는 항목을 사용한다.

$ ./deploy-bosh-lite.sh

이 때에 생성되는 VM들은 서버안의 Virtual BOX에서 관리가 가능하다.

지금은 서버위에 VirtualBox를 설치하여서 이렇게 생성되는 것이지만 AWS나 GCP 환경에서는 각각의 인스턴스로 생성된다.

열심히 생성되는 모습을 확인할 수 있다.

생성된 VM을 확인해본다.

$ bosh -e vbox -d paasta vms

CPU나 Memory를 확인할 수도 있다.

bosh -e vbox -d paasta vms --vitals

(8) 명령어들

- 릴리즈 관련

bosh -e vbox releases
bosh -e vbox create-release --force --tarball=diego-2.22.0+dev.4.tgz
bosh -e vbox upload-release ./diego-2.22.0+dev.4.tgz
bosh -e vbox delete-release diego/2.22.0+dev.4

릴리즈 버전을 변경하거나 수정할 경우에도 사용할 수 있다.

- deployment 확인

bosh -e vbox deployments
#delete
bosh -e vbox -d zookeeper delete-deployment --force

현재는 몇 개 없지만 추가로 설치하게 되면 더 많이 나타난다.

정상적으로 삭제되지 않는 경우를 위해 --force 옵션을 주었다.

- vms, instance 확인

bosh -e vbox vms
bosh -e vbox instancesreleases:

배포를 여러개 하였을 경우에는 다른 VM들도 나타난다. 특정 deployment에 대한 vms를 보고 싶을 때에는 아래 명령어를 사용한다.

bosh -e vbox vms -d "deployment"

- vm에 ssh 로그인

bosh –e vbox ssh –d {deployment-name} {job-name}
bosh –e vbox ssh –d cf nats

job-name의 경우에는 Instance명이다.

이중화나 다른 이유로 인해 동일한 jobname을 가지고 있을 경우 뒤의 고유명까지 적어주어야 한다.

- 어떤 task가 진행중인지 확인

bosh –e vbox tasks

배포중이거나 업로드 중인 작업이 있으면 나타난다.

- locks

bosh -e vbox locks

현재 bosh가 어떤 명령을 수행중인지 보여준다.

- credhub 

이제 PaaS-TA가 인증정보를 가지고 있기 때문에 해당 명령어로 credhub를 조회할 수 있다.

credhub find

(9) cf-cli 사용해보기

#1. Add the Cloud Foundry Foundation public key and package repository to your system:
$ wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -

#2. 
$ echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list

#3. Update your local package index:
$ sudo apt-get update

#4. Install the cf CLI:
$ sudo apt-get install cf-cli

$ cf -v
cf 버전 6.44.1+c3b20bfbe.2019-05-08

설치된 cf-cli의 버전을 확인하고 로그인해준다.

$ cf api api.bosh-lite.com --skip-ssl-validation

$ cf login
API 엔드포인트: https://api.bosh-lite.com

paas-ta의 deigo cell에 배포하기 위해서 cf의 명령어를 사용한다. (bosh의 경우 IaaS 관리만 한다)

cf login
cf apps
cf push
cf logs
cf delete

cf --help를 통해 확인

위 명령어정도를 자주 사용하게 된다.

비밀번호도 admin으로 하면 된다. (초기 설정에서 확인할 수 있다 / bosh-lite.sh 여기서 확인) admin 계정은 system.org로 접속 된다.

(10) ORG/SPACE/USER 생성 이후 APP 배포

$ cf create-org test-org
$ cf create-space test-space -o test-org
$ cf create-user test test1234
$ cf set-org-role test test-org OrgManager
$ cf set-space-role test test-org test-space SpaceManager
$ cf set-space-role test test-org test-space SpaceDeveloper

test-org를 생성한 이후 test-space를 -o 옵션을 통해 test-org에 붙인다. 이후 test 유저를 만든다.

생성한 test 유저를 test-org의 OrgManager로, test-org의 test-space의 SpaceManager, SpaceDeveloper로 권한을 부여한다.

test 유저로 로그인해본다.

$ cf login 
API 엔드포인트: https://api.bosh-lite.com

(11) JAVA 8 업데이트

$ sudo apt-get update
$ sudo apt install openjdk-8-jdk
$ java -version

(12) Sample App Test

샘플을 만들어서 테스트해보자.

$ mkdir ~/workspace/sample
$ cd ~/workspace/sample
$ git clone https://github.com/cloudfoundry-samples/spring-music.git
$ cd spring-music/
$ ./gradlew clean assemble

이제 빌드해준다.

JAR 생성을 확인한다.

이제 manifest 파일을 수정해준다.

vi manifest.yml

---
applications:
- name: spring-music
  memory: 1G
  random-route: true
  path: build/libs/spring-music-1.0.jar
#  env:
#    JBP_CONFIG_OPEN_JDK_JRE: '{ jre: { version: 11.+ } }'

name : 어플리케이션 이름

memory : 사용할 메모리

path : 사용할 jar 파일의 위치

cf-push 명령어에 들어가는 옵션들이며 확인 후 push 해준다.

$ cd ~/workspace/sample/spring-music
$ cf push

curl을 통해 라우트를 확인한다.

curl [spring-music-unexpected-elephant.bosh-lite.com]

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

PaaS-TA 교육 5일차  (0) 2019.11.29
PaaS-TA 교육 4일차  (0) 2019.11.29
PaaS-TA 교육 2일차  (0) 2019.11.29
PaaS-TA 교육 1일차  (1) 2019.11.29
혼자보면 슬프니까 PaaS-TA VM Spec ~  (0) 2019.11.15