Search

'Programming/Paas-TA'에 해당되는 글 4건

  1. 2021.05.25 PaaS-TA 교육 4일차
  2. 2021.05.25 PaaS-TA 교육 3일차 2
  3. 2021.05.21 PaaS-TA 교육 2일차
  4. 2021.05.20 PaaS-TA 교육 1일차

PaaS-TA 교육 4일차

Programming/Paas-TA 2021. 5. 25. 18:27 Posted by big_brother

서비스 브로커 & 빌드팩

  1. Serivce broker

      1.1 Service API

       - Cloud Controller와 Service Broker 사이의 규약을 정의한다

         - catalog, provision, deprovision, update provision plan, bind, unbind

       - Broker는 http endpoint uri 형식으로 구현됨

      - 하나 이상의 서비스가 하나의 브로커에 의해 제공될 수 있고, 로드 밸렁싱이 가능하게 수평 확장적으로 제공되기도 함

      - RESTful API로 구현하고 Cloud Controller에 등록됨

      - catalog : 서비스 및 서비스 plans 정보 조회

      - provision : 서비스를 위한 인스턴스 생성

      - deprovision : 이전에 생성된 서비스 인스턴스 삭제

      - updateprovision : 이전에 생성된 서비스 인스턴스 plan 수정

      - bind : 서비스 사용에 관련 사용자 생성 및 권한 등 설정 정보 생성

      - unbind : 서비스 사용 설정 정보 삭제

 

    1.2 인증

          - Cloud  Controller는 모든 요청에 http 기본 인증(인증 헤더)을 사용하여 사용자 이름과 암호를 포함하지 않는

          모든 broker 등록을 거부

          - 사용자 이름과 암호가 맞지 않는 경우 401 메세지 변환

   1.3 Catalog API 가이드

         -서비스 및 서비스 plan의 정보 조회

         - Catalog API를 구현하면 CF CLI를 통하여 Service Broker를 등록할 수 있음

 

   1.4 Provision API 가이드

       - Broker가 Cloud Controller로 부터 provision 요구를 수신하면 개발자를 위한 새로운 서비스 인스턴스를 생성

       - 서비스마다 의미가 다름. mysql인 경우 새로운 database 스카마 생성, non-data의 경우 기존 시스팀 계정 획득일수도 있음

       - 사용자의 자격 증명은 직접 서비스로 전송하지 않음

       - 인스턴스 생성시 unique한 이름으로 생성

 

   1.5 update provision API

       - 기존의 서비스 인스턴스의 plan을 수정.

 

   1.6 Bind API 가이드

       - Provision만으로 서비스를 사용할 수 있는 경우 bin 기능 구현은 불필요. 성공 메세지만 보내면 됨

       - 바인딩 성공시 provision 데이터만 넘김.

      - Bind할 서비스 인스턴스가 존재하는지 체크

      - Application에 bind할 정보를 생성하여 어플리캐이션에 넘김.

 

    1.7 서비스 브로커 등록 및 활성화

       - MySql 서비스 브로커를 등록. 브로커는 일종의 어플리케이션크

 

       1.7.1 서비스 브로커 리스트 체크   

$cf service-brokers

       

        1.7.2 MySQL 서비스 브로커를 등록한다

$ cf create-service-broker mysql-service-broker admin cloudfoundry http://10.0.0.95:8080

 

        1.7.3 특정 조직에 해당 서비스 접근 허용을 할당한다

$ cf enable-service-access Mysql-DB
$ cf service-access

 

  2. Buildpack

      빌드팩은 애플리케이션 구동에 필요한 환경(런타임, 컨테이너, 프레임워크등)을 조립하여 드롭릿을 구성하는 스크립트의 모음

      - Detect, compile, Release

    

      2.1 Detect(검출)

       - 배포되는 애플리케이션의 런타임 환경 구성 방법을 빌드팩이 아는지 여부를 확인하는 기능

       - 빌드팩을 지정하지 않으면 시스템 빌드팩을 체크해봄.

       - -b로 빌드팩을 지정할 경우 작동하지 않음

 

      2.2 Compile

       - 실질적으로 드롭릿을 빌드하는 빌드팩의 핵심기능

       - 애플리케이션 구동시 필요한 바이너리들을 다운로드 및 설치하고 드롭릿 파일 시스템에 배치한다

          - JRE, Tomcat 등등

     

      2.3 Release

       - 애플리케이션 실행 방법대한 정보를 플랫폼에 응답해줌

          - 옵션등 커맨드라인 추가

 

      2.4 부가 기능 - 패키지

         - 빌드팩을 하나의 압축 파일로 만드는 기능

         - 시스템 빌드팩으로 등록하게 만들어서 인트라넷에서도 사용가능 기능

         - ex)

       

$ bundle install
$ bundle exec rake package OFFLINE=true VERSION=2.1
$ Creating build/java-buildpack-offline-2.1.zip

   

      2.5 부가 기능 - 저장소

         - 빌드팩 컴파일 시 다운로드하는 다양한 종속성들이 존재하는 공간

     

      2.6 Custom build pack

          - builpack-packager를 설치했는지 확인

          - 빌드팩에 manifest.yml을 생성

          - cached 모드에서 packager 실행($ buildpack-packager build -cached -any-stack

             - packager는 빌드팩 디렉토리의 모든 것을 zip 파일로 추가

          - 결과값을 로컬로 사용하거나 cli로 네트워크에 업데이트

          - 다음 사용자는 -b 옵션으로 빌드팩을 지정할 수 있음음

          - cf create-buildpack 명령을 사용하여 buildpack을 PaaS-TA 구현으로 업로드하여 -b 플래그 없이 액세스 가능

$ cf create-buildpack BUILDPACK PATH POSITION [--enable|--disable]

         

         *핵심 정리

           - Service는 PaaS-TA 주요 구성요소 이외에 Application을 운용하는데 도움을 주는 요소이다.

           - Service를 등록하여 PaaS-TA service로 활용할 수 있으며, 이를 위해 서비스 브로커가 필요

           - Application만의 특수한 설정이 필요한 경우 custom buildpack을 개발하여야 한다.

 

        * 실기는 bosh와 cf 로 나옴. 실기/필기 각각 40분씩 시간이 걸림.

 

참고 : PaaS-TA 전문가 육성 교육 자료

'Programming > Paas-TA' 카테고리의 다른 글

PaaS-TA 교육 3일차  (2) 2021.05.25
PaaS-TA 교육 2일차  (0) 2021.05.21
PaaS-TA 교육 1일차  (0) 2021.05.20

PaaS-TA 교육 3일차

Programming/Paas-TA 2021. 5. 25. 16:23 Posted by big_brother

1. PaaS-TA 개발 도구

   1.1 Portal

         - 사용자 포탈 - 애플리케이션의 배포 및 관리. 개발에 필요한 서비스 인스턴트 계정 관리와 공지 사항등 포탈 관리 기능

                               응용 애플리케이션이 문제가 있는 부분을 포탈 사용자 관리자에게 제공

         - 운영자 포탈 - REST API 호출을 통해 상호 작용

                                웹 사용자 인터페이스 환경에서 플랫폼을 관리할 수 있음

       

    

   

      1.2 Paas-ta-portal-webuser(사용자 포탈) 웹 인터페이스를 통해 개잘자 환경을 구성할 수 있도록 하는 웹 애플리케이션 

      1.3 Paas-ta-portal-webadmin (운영자 포탈) 웹 인터페이스를 통해 PaaS-TA 운영 환경의 데이터를 관리

      1.3 Paas-ta-portal-registration - Spring cloud 프로젝트의 Service discovery server. Eureka 사용

      1.4 Paas-ta-portal-gatewat - Spring-cloud에 Zuul을 사용함.

      1.5 Paas-ta-portal-api - Paas-ta portal에서 제공하는 API

      1.6 Portal-log-api - CF APP에 대한 로그 제공

      1.7 Paas-ta-prtal-sotrage-api 실행 환경의 파일 관리하는 기능 제공

      1.8 Paas-ta-portal-common-api 데이터 베이스 제공

 

  2. CLI 

      OpenPaaS 배포와 Release를 관리하기 위해 도움을 주는 커맨드 라인 유틸리티

      - 기본 Syntax

         $ cf [global options] command <argments..> [command options]

      - cf login 명령으로 접속하며, 엑세스할 수 있는 org & space에 액세스할 수 있음

        (개발자 원한의 계정으로 가능. 권한 할당 필요)

         로그인 성공시 Paas-TA Endpoint API 및 인증 시 주어진 토큰을 저장

         로그인 할때 비밀 번호를 저장하는 대신 PaaS-TA는 CLI가 저장할 수 있는 임시 토큰을 생성

          - CLI는 모든 명령에 대신에 해당 토큰을 사용할 수 있음

 

        - 주요 명령어

        

       2.1 login

       $ cf login [-a API_URL] [-u USERNAME] [-p PASSWORD] [-o ORG] [-s SPACE]

          * 이전 로그인이 되어있다면 꼭 -a로 다시 로그인

          *ex) cf login --skip-ssl-validation -a https://api.10.244.0.34.nip.io -u admin -p admin -p crossent

                  -s development

          저장되어 있다면 $cf login

          ex2)cf login -a https://api.paas-ta.co.kr --skip-ssl-validation

      

       2.2 logout

         $cf logout

  

       2.3 Apps

           어플리케이션 리스트를 보여줌

          $cf apps

 

       2.4 Services

          $cf services

 

       2.5 push

          - 로컬에 있는 app을 paas-ta로 배포. 주로 manifest로 배포

         $cf push <APP_NAME>

 

      2.6 delete

         $ cf delete <APP_NAME> [--f] [--r]

             f - 확인 없이 삭제

             r - app에 매핑된 라우트 정보 삭제

 

     2.7 start

        $cf start <APP_NAME>

  

    2.8 stop

       $cf stop <APP_NAME>

 

   2.9 restart

      $cf restart <app_name>

 

   2.10 restage

       $cf restage <APP_NAME>

        - App을 restage함. 환경변수 설정 또는 서비스 바인딩시 사용

 

   2.11 marketplace

       $cf marketplace

       서비스 목록을 조회

 

   2.12 create-service

      $cf create-service <SERVICE> <PALN> <SERVICE_INSTANCE_NAME>

      *ex)cf create-service mysql 1gb test_mysql_db

 

   2.13 delete-service

      $cf delete-service SERVICE_INSTANCE_NAME

 

   2.14 bind service

      $ cf bind-service <APP_NAME> <SERVICE_INSTANCE_NAME>

      *ex) cf bind-service welcome_cf test_mysql_dv

 

   2.15 unbind service

     $ cf unbind-service <APP_NAME> <SERVICE_INSTANCE_NAME>

 

   2.16 route

     $cf routes

   

   2.17 delete-orphanded-routes

     app에 매핑되지 않은 라우트들을 모두 삭제

     $cf cf delete-orphanded-routes

 

   2.18 CLI로 배포하기

      cf 명령어로 배포를 하기 위해 manifest.yml 작성

      application:

      - name : test01 //배포 된 앱의 이름

        host : test01 //floating tomain앞에 들어갈 구분자 도메인

        memory: 1024M//앱의 최대 사용가능 메모리

        instance: 1//앱이 사용할 instance 개수

        randon-route: false //true값을 주면 url을 랜덤으로 생성

        path: ./test01.war //배포하고자 하는 파일의 위치를 명시. 배포를 위한 명령어는 cf push. 이때 manitest.yml

        파일과 동일해야함

 

  2.19 env

        $ cf env <APP_NAME>

 

  2.20 실습 -1

    java8test14 app과 바인드되어 있는 mysql을 삭제하는 방법. 앱을 삭제하기 위해서는 바인드된 서비스들부터

   unbind 해줘야한다

- login

 $cf login --skip-ssl-validation -a https://...blabla.

 

 

- apps 체크

 $cf apps

확인

이름          요청된 상태   인스턴스   메모리   디스크   URL
java8test14   started       1/1        1G       256M     java8test14.paas-ta.org

 

-service 체크

$ cf services
이름    서비스     플랜                 바인딩된 앱   마지막 조작        브로커                 upgrade available
mysql   Mysql-DB   Mysql-Plan2-100con   java8test14   create succeeded   mysql-service-broker   

 

-unbind 서비스

$ cf unbind-service java8test14 mysql
paasta_trainee14(으)로 trainee14 조직/dev 영역의 mysql 서비스에서 java8test14 앱 바인드 해제 중...
확인

 

-app 삭제

$ cf delete java8test14
앱 java8test14을(를) 삭제하시겠습니까?> yes
paasta_trainee14(으)로 trainee14 조직/dev 영역에서 java8test14 앱 삭제 중...
확인

 

-service 삭제

$ cf delete-service mysql

서비스 mysql을(를) 삭제하시겠습니까?> yes
paasta_trainee14(으)로 trainee14 조직/dev 영역에서 mysql 서비스 삭제 중...
확인

 

2.21 실습-2

   welcome-cf 배포해보지

   - 일단 welcome-cf 패키지를 다운로드 해보고..

   manifest.yml을 변경한다

---
applications:
- name: welcome-cf
  memory: 1024M
  host: passtatrainee14 //요 부분을 자신의 id로
  path: ./target/welcome-cf.war
  buildpack: java_buildpack
env:
  JAVA_OPTS: -Djava.security.egd=file:///dev/urandom

 

다음엔 동일 폴더에서 cf push..

 

이후 상태 체크

$ cf apps
paasta_trainee14(으)로 trainee14 조직/dev 영역의 앱 가져오는 중...
확인

이름         요청된 상태   인스턴스   메모리   디스크   URL
welcome-cf   started       1/1        1G       1G       passtatrainee14.paas-ta.org

 

mysql로 바인드 해보자. 먼저 mysql service 생성

$ cf create-service Mysql-DB Mysql-Plan1-10con mysqldb
paasta_trainee14(으)로 trainee14 조직/dev 영역에 서비스 인스턴스 mysqldb 작성 중...
확인

 

이제 bind 하자

$ cf bind-service welcome-cf mysqldb
paasta_trainee14(으)로 trainee14 조직/dev 영역의 welcome-cf 앱에 mysqldb 서비스 바인드 중...
확인

팁: 환경 변수 변경사항을 적용하려면 'cf restage welcome-cf'을(를) 사용하십시오.

 

변경 사항을 restage를 해주자

$ cf restage welcome-cf
이 조치를 사용하는 경우 앱 작동 중단 시간이 발생합니다.

paasta_trainee14(으)로 trainee14 조직/dev 영역에서 welcome-cf 앱 다시 스테이징 중...

앱 스테이징 및 로그 추적 중...
   Downloading java_buildpack...
   Downloaded java_buildpack
   Cell d350c8ef-5464-4afe-9e9c-444acd3063ff creating container for instance a3898b32-08bb-49e2-a470-c6a23a93f8a9
   Cell d350c8ef-5464-4afe-9e9c-444acd3063ff successfully created container for instance a3898b32-08bb-49e2-a470-c6a23a93f8a9
   Downloading build artifacts cache...
   Downloading app package...
   Downloaded app package (674K)
   Downloaded build artifacts cache (52.6M)
   -----> Java Buildpack v4.32.1 | https://github.com/cloudfoundry/java-buildpack.git#b6462f7
   -----> Downloading Jvmkill Agent 1.16.0_RELEASE from https://java-buildpack.cloudfoundry.org/jvmkill/bionic/x86_64/jvmkill-1.16.0-RELEASE.so (found in cache)
   -----> Downloading Open Jdk JRE 1.8.0_292 from https://java-buildpack.cloudfoundry.org/openjdk/bionic/x86_64/bellsoft-jre8u292%2B10-linux-amd64.tar.gz (found in cache)
          Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.3s)
          JVM DNS caching disabled in lieu of BOSH DNS caching
   -----> Downloading Open JDK Like Memory Calculator 3.13.0_RELEASE from https://java-buildpack.cloudfoundry.org/memory-calculator/bionic/x86_64/memory-calculator-3.13.0-RELEASE.tar.gz (found in cache)
          Loaded Classes: 8530, Threads: 250
   -----> Downloading Client Certificate Mapper 1.11.0_RELEASE from https://java-buildpack.cloudfoundry.org/client-certificate-mapper/client-certificate-mapper-1.11.0-RELEASE.jar (found in cache)
   -----> Downloading Container Security Provider 1.18.0_RELEASE from https://java-buildpack.cloudfoundry.org/container-security-provider/container-security-provider-1.18.0-RELEASE.jar (found in cache)
   -----> Downloading Tomcat Instance 9.0.46 from https://java-buildpack.cloudfoundry.org/tomcat/tomcat-9.0.46.tar.gz (found in cache)
          Expanding Tomcat Instance to .java-buildpack/tomcat (0.1s)
   -----> Downloading Tomcat Access Logging Support 3.3.0_RELEASE from https://java-buildpack.cloudfoundry.org/tomcat-access-logging-support/tomcat-access-logging-support-3.3.0-RELEASE.jar (found in cache)
   -----> Downloading Tomcat Lifecycle Support 3.3.0_RELEASE from https://java-buildpack.cloudfoundry.org/tomcat-lifecycle-support/tomcat-lifecycle-support-3.3.0-RELEASE.jar (found in cache)
   -----> Downloading Tomcat Logging Support 3.3.0_RELEASE from https://java-buildpack.cloudfoundry.org/tomcat-logging-support/tomcat-logging-support-3.3.0-RELEASE.jar (found in cache)
    Exit status 0
   Uploading droplet, build artifacts cache...
   Uploading droplet...
   Uploading build artifacts cache...
   Uploaded build artifacts cache (52.6M)
   Uploaded droplet (52M)
   Uploading complete
   Cell d350c8ef-5464-4afe-9e9c-444acd3063ff stopping instance a3898b32-08bb-49e2-a470-c6a23a93f8a9
   Cell d350c8ef-5464-4afe-9e9c-444acd3063ff destroying container for instance a3898b32-08bb-49e2-a470-c6a23a93f8a9
   Cell d350c8ef-5464-4afe-9e9c-444acd3063ff successfully destroyed container for instance a3898b32-08bb-49e2-a470-c6a23a93f8a9

앱이 시작되기를 기다리는 중...

이름:                  welcome-cf
요청된 상태:           started
라우트:                passta_trainee14.paas-ta.org
마지막으로 업로드함:   Tue 25 May 14:41:01 KST 2021
스택:                  cflinuxfs3
빌드팩:                java

유형:          web
인스턴스:      1/1
메모리 사용:   1024M
시작 명령:     JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.16.0_RELEASE=printHeapHistogram=1 -Djava.io.tmpdir=$TMPDIR -XX:ActiveProcessorCount=$(nproc)
               -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext
               -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS -Daccess.logging.enabled=false -Dhttp.port=$PORT" &&
               CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.13.0_RELEASE -totMemory=$MEMORY_LIMIT -loadedClasses=9919
               -poolType=metaspace -stackThreads=250 -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY"
               && MALLOC_ARENA_MAX=2 JAVA_OPTS=$JAVA_OPTS JAVA_HOME=$PWD/.java-buildpack/open_jdk_jre exec $PWD/.java-buildpack/tomcat/bin/catalina.sh run
     상태      이후                   CPU    메모리     디스크        세부사항
#0   실행 중   2021-05-25T05:41:16Z   0.0%   32M / 1G   121.2M / 1G   

 

 이제 welcome-cf에 연결된 mysql에 접근해보자. 일단... welcome-cf의 my sql의 ip 주소와 포트를 체크해보자

$ cf env welcome-cf
paasta_trainee14(으)로 trainee14 조직/dev 영역의 welcome-cf 앱에 사용할 환경 변수를 가져오는 중...
확인

시스템 제공:
{
 "VCAP_SERVICES": {
  "Mysql-DB": [
   {
    "binding_name": null,
    "credentials": {
     "hostname": "10.0.40.145",
     "name": "op_5e649d26_7908_4cfb_b2cc_64fa75d09f1f",
     "password": "c2de86701cac29aa",
     "port": "13307",
     "uri": "mysql://ec3f1989c478e383:c2de86701cac29aa@10.0.40.145:13307/op_5e649d26_7908_4cfb_b2cc_64fa75d09f1f",
     "username": "ec3f1989c478e383"
    },
    "instance_name": "mysqldb",
    "label": "Mysql-DB",
    "name": "mysqldb",
    "plan": "Mysql-Plan1-10con",
    "provider": null,
    "syslog_drain_url": null,
    "tags": [
     "mysql",
     "document"
    ],
    "volume_mounts": []
   }
  ]
 }
}

{
 "VCAP_APPLICATION": {
  "application_id": "340b6873-cd75-4d65-9edf-b2f393e16273",
  "application_name": "welcome-cf",
  "application_uris": [
   "passta_trainee14.paas-ta.org"
  ],
  "application_version": "8e7028f8-27ad-4c26-8913-94a1104aea51",
  "cf_api": "https://api.paas-ta.org",
  "limits": {
   "disk": 1024,
   "fds": 16384,
   "mem": 1024
  },
  "name": "welcome-cf",
  "organization_id": "39cbe46a-546f-4396-956c-e2c76097254f",
  "organization_name": "trainee14",
  "process_id": "340b6873-cd75-4d65-9edf-b2f393e16273",
  "process_type": "web",
  "space_id": "3c5a3443-8525-4a48-9614-161e9ff391e8",
  "space_name": "dev",
  "uris": [
   "passta_trainee14.paas-ta.org"
  ],
  "users": null,
  "version": "8e7028f8-27ad-4c26-8913-94a1104aea51"
 }
}

사용자 제공:
JAVA_OPTS: -Djava.security.egd=file:///dev/urandom

실행 환경 변수가 설정되지 않음

스테이징 환경 변수가 설정되지 않음

ip는 10.0.40.145 포트는 13307. 이를 기반으로 9999 포트를 연결해주자

$ cf ssh welcome-cf -L 9999:10.0.40.145:13307

이후 다른 터미널을 열어서 연결을 시도해본다.

$ telnet localhost 9999
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Y
5.5.5-10.1.48-MariaDB�!,XV*la#�?�)BQOx0$cGv?tmysql_native_passwordConnection closed by foreign host.

참고 : PaaS-TA 전문가 육성 교육 자료

 

 

'Programming > Paas-TA' 카테고리의 다른 글

PaaS-TA 교육 4일차  (0) 2021.05.25
PaaS-TA 교육 2일차  (0) 2021.05.21
PaaS-TA 교육 1일차  (0) 2021.05.20

PaaS-TA 교육 2일차

Programming/Paas-TA 2021. 5. 21. 17:19 Posted by big_brother

1. PaaS-TA 배포를 위한 기본 구성

    1.1 사용 가능한 IaaS의 종류

           - openstack, vmware, aws, google cloud platform, Azure

 

2. BOSH 개념

     - BOSH는 PaaS를 이루는 VM들을 설치 및 관리하는 도구

     - BOSH는 manifest 파일을 사용하여 사용자에서 전체 시스템의 작동 방식과 각부분의 상호 작용 방식을 정의하도록 요청

     - 시스템의 각 부분에 에이전트를 배치하여 하나의 제품에 오류가 발생하면 문제를 알리고 자동으로 복구할 수 있음

 

     2.1 릴리즈

      - 릴리스에서는 manifest 파일을 사용하여 매번 동일한 방식으로 소프트웨어를 배포하는데 필요한 모든 사항을 정의

      - manifest 파일은 소스 코드, 운영 체제 종속성 및 종속 파일을 명확히 식별한 다음 패키지 함.

      - 해당 내용을 합축 된 폴더에 넣어 BOSH 서버에 저장함

      - 운영자가 해당 릴리스를 배포하려고 할때마다 매번 동일한 방식의 릴리스를 구축하는데 모든 것을 가지게 됨

      - 해당 개념을 릴리스 엔지니어링이라고 부름.

 

     2.2 BOSH 컴포넌트 구성

     

      - CLI : Director와 상호작용을 위한 CLI

      - Director - VM을 생성 수정할때 설정 정보를 레지스트리에 저장한다. 저장된 정보는 VM의 bootstrapping stage에서 이용

      - NATS- 컴포넌트간 통신을 위한 메세지 채널

      - Registry - VM 생성을 위한 설정정보 저장

      - Health Monitor - BOSH Agent에서 상태 정보를 수집한다. Alert을 체크하고 메세지를 전달한다.

      - blobstore - Release, compilation package data를 저장하는 저장소이다

      - UAA - Bosh 사용자 인증 인가를 처리한다

      - Database - Director가 사용하는 데이터베이스로 Deployment시에 필요로 하는 stemcell, releae,deployment의

        메타 정보를 저장한다.

      - Agent - VM에 설치되며, Director로부터 명령을 받아 개별 작업을 수행

      - DNS - 배포된 VM의 DNS Resolution

 

     2.3 Bosh 구성 요소

       - Release - 설치 패키지, 설정 템플릿, 스크립트

       - Stemcell - OS 이미지, 에이전트

       - Manifest - 릴리즈, 스템셀,네트워크, 속성

 

     2.4 Bosh 구성 요소 - 릴리즈(package와 job들의 모음)

        - Package - 패키지 자체, 패키지간 의존관계, 설치 스크립트

        - Jobs - 템플릿, 프로세스 시작, 종료 스크립트

 

     2.5 Bosh 구성 요소 - Stemcell(기본 OS 이미지+BOSH Agent)

         - Stemcell 자체는 서비스를 제공하지 않음

         - Agent를 이용하여 blobstore로부터 job 배포

 

     2.6 Bosh 구성 요소 - Manifest(componenets 요소 및 배포의 속성을 정의한 YAML 파일)

          - software를 설치하기 위해서 어떤 Stemcell을 사용할 것이며, Release 이름과 버전, VM용량, Jobs pararm등을

            정의하여 Bosh deploy CLI을 이용하여 software를 설치한다.

         - Deployment Identification - 배포 이름과 배포를 관리하는 BOSH Director의 UUID 정도

         - Release Block : deployment 안의 각 release의 이름 및 버전 정보

         - Networks block : 네트워크 구성 정보

         - Resource Pools Block : BOSH로 생성하고 관리하는 가상 머신의 속성

         - Compilation Block : 컴파일 시 필요한 가상 머신의 속성

         - Update Block : BOSH가 배포 중에 작업 인스턴스를 업데이트를 하는 방법을 ㅇ정의

         - Jobs Block : jobs에 대한 구성 및 자원 정보

         - Properties Block : 글로벌 속성과 일반화된 구성 정보를 설명

 

     2.7 BOSH2를 통한 PaaS-TA 생성

 

 

 

 

 

 

  3 PaaS-TA 설치 환경 구축     

      *우분투 18.04를 기준으로 작성되었음

   

     3.1 Bosh Cli 설치

$ sudo apt-get update
$ mkdir workspace
$ cd workspace
$ sudo apt-get install -y curl
$ curl -Lo ./bosh https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-6.1.0-linux-amd64
$ chmod +x ./bosh
$ sudo mv ./bosh /usr/local/bin/bosh
$ bosh -v

#결과
==============================================
version 6.1.0-9c1c210c-2019-09-18T17:33:51Z

Succeeded

     3.2 Bosh dependency 설치

   

$ 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

    3.3 Bash VM 설치

   

   - 파일 설치

$ cd ~/workspace
$ curl -Lo paasta-5.0.zip https://nextcloud.paas-ta.org/index.php/s/Qi2zGPnGNEjb4Ax/download
$ unzip paasta-5.0.zip
$ mv bosh-lite paasta-5.0

 

     - 변경

$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment/
$ cp -pr deploy-bosh-lite.sh deploy-bosh-lite.sh_backup
$ vi deploy-bosh-lite.sh 이후.. xip.io를 nip.io로 변경

===========================
수정할 내용들
   -v system_domain=10.244.0.34.nip.io \
        -v uaa_login_logout_redirect_parameter_whitelist=["http://portal-web-user.10.244.0.34.nip.io","http://portal-web-user.10.244.0.34.nip.io/callback","http://portal-web-user.10.244.0.34.nip.io/login"] \
        -v uaa_login_links_passwd="http://portal-web-user.10.244.0.34.nip.io/resetpasswd" \
        -v uaa_login_links_signup="http://portal-web-user.10.244.0.34.nip.io/createuser" \
        -v uaa_clients_portalclient_redirect_uri="http://portal-web-user.10.244.0.34.nip.io,http://portal-web-user.10.244.0.34.nip.io/callback" \

 

 

     - virtual box 설치(설치되어 있으면 패스)

$ sudo apt update -y
$ sudo apt upgrade -y
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
$ sudo add-apt-repository "deb http://download.virtualbox.org/virtualbox/debian bionic contrib" 
$ sudo apt update 
$ sudo apt install virtualbox-6.0 -y 

 

     - Deploy Bosh VM

$ cd ~/workspace/paasta-5.0/deployment/bosh-deployment
$ chmod 755 *.sh
$ vi ./deploy-bosh-lite.sh 이후 username 변경해줌..

=============================
변경할 내역
   -v inception_os_user_name='ubuntu' \ -> 자신의 이름으로
   
$ ./deploy-bosh-lite.sh

 

 

    - Alias 세팅

      (애도 시험 문제로 잘 나오니 통채로 외우기)

$ cd ~/workspace/paasta-5.0/deployment/bosh-deployment
$ bosh alias-env micro-bosh -e 10.0.1.6 --ca-cert <(bosh int warden/creds.yml --path /director_ssl/ca) 

결과
=======================================
Using environment '10.0.1.6' as anonymous user

Name               micro-bosh  
UUID               cef57e8e-ce2d-4b5e-9688-8f172dbf0e58  
Version            270.2.0 (00000000)  
Director Stemcell  ubuntu-xenial/315.64  
CPI                warden_cpi  
Features           compiled_package_cache: disabled  
                   config_server: enabled  
                   local_dns: enabled  
                   power_dns: disabled  
                   snapshots: disabled  
User               (not logged in)  

 

 

  - Bosh login 쉘 스크립트 생성

$ cd ~/workspace/paasta-5.0/deployment/bosh-deployment
$ vi login.sh 이후 아래 내용을 채워준다.

#============================================
#!/usr/bin

export BOSH_CA_CERT=$(bosh int ./warden/creds.yml --path /director_ssl/ca)
export BOSH_CLIENT=admin
export BOSH_CLIENT_SECRET=$(bosh int ./warden/creds.yml --path /admin_password)
#=============================================

#저장하고.. 실행

$ source ./login.sh

#Bosh login 확인
$ bosh -e micro-bosh env

결과
=======================================
Using environment '10.0.1.6' as client 'admin'

Name               micro-bosh  
UUID               cef57e8e-ce2d-4b5e-9688-8f172dbf0e58  
Version            270.2.0 (00000000)  
Director Stemcell  ubuntu-xenial/315.64  
CPI                warden_cpi  
Features           compiled_package_cache: disabled  
                   config_server: enabled  
                   local_dns: enabled  
                   power_dns: disabled  
                   snapshots: disabled  
User               admin  

 

 

 - jumpbox key 생성 (Bosh VM 로그인 용)

   (시험 문제로 잘 나옴. 생성 및 붙는 방법 잘 외워두기)

   (monit summary로 상태 체크하는 것도 마찬가지)

$ ~/workspace/paasta-5.0/deployment/bosh-deployment
$ bosh int warden/creds.yml --path /jumpbox_ssh/private_key > jumpbox.key 
$ chmod 600 jumpbox.key
$ ssh jumpbox@10.0.1.6 -i jumpbox.key

#결과
==============
Unauthorized use is strictly prohibited. All access and activity
is subject to logging and monitoring.
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-54-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Last login: Fri May 21 06:47:13 UTC 2021 from 10.0.1.1 on pts/0
Last login: Fri May 21 07:26:50 2021 from 10.0.1.1
bosh/0:~$  


bosh/0:~$ sudo su
bosh/0:~$ monit summary 

#결과
==========================
The Monit daemon 5.2.5 uptime: 1h 6m 

Process 'nats'                      running
Process 'postgres'                  running
Process 'blobstore_nginx'           running
Process 'director'                  running
Process 'worker_1'                  running
Process 'worker_2'                  running
Process 'worker_3'                  running
Process 'worker_4'                  running
Process 'director_scheduler'        running
Process 'director_sync_dns'         running
Process 'director_nginx'            running
Process 'health_monitor'            running
Process 'garden'                    running
Process 'warden_cpi'                running
Process 'uaa'                       running
Process 'credhub'                   running
System 'system_localhost'           running

================

#추가적으로 멈추게 하고 살릴 수도 있다


$ monit stop credbhub
bosh/0:/home/jumpbox# monit summary
The Monit daemon 5.2.5 uptime: 14h 43m 

Process 'nats'                      running
Process 'postgres'                  running
Process 'blobstore_nginx'           running
Process 'director'                  running
Process 'worker_1'                  running
Process 'worker_2'                  running
Process 'worker_3'                  running
Process 'worker_4'                  running
Process 'director_scheduler'        running
Process 'director_sync_dns'         running
Process 'director_nginx'            running
Process 'health_monitor'            running
Process 'garden'                    running
Process 'warden_cpi'                running
Process 'uaa'                       running
Process 'credhub'                   running
System 'system_localhost'           running
bosh/0:/home/jumpbox# monit stop credhub
bosh/0:/home/jumpbox# monit summary
The Monit daemon 5.2.5 uptime: 14h 43m 

Process 'nats'                      running
Process 'postgres'                  running
Process 'blobstore_nginx'           running
Process 'director'                  running
Process 'worker_1'                  running
Process 'worker_2'                  running
Process 'worker_3'                  running
Process 'worker_4'                  running
Process 'director_scheduler'        running
Process 'director_sync_dns'         running
Process 'director_nginx'            running
Process 'health_monitor'            running
Process 'garden'                    running
Process 'warden_cpi'                running
Process 'uaa'                       running
Process 'credhub'                   not monitored
System 'system_localhost'           running


#살리기
bosh/0:/home/jumpbox# monit start credhub
bosh/0:/home/jumpbox# monit summary
The Monit daemon 5.2.5 uptime: 14h 44m 

Process 'nats'                      running
Process 'postgres'                  running
Process 'blobstore_nginx'           running
Process 'director'                  running
Process 'worker_1'                  running
Process 'worker_2'                  running
Process 'worker_3'                  running
Process 'worker_4'                  running
Process 'director_scheduler'        running
Process 'director_sync_dns'         running
Process 'director_nginx'            running
Process 'health_monitor'            running
Process 'garden'                    running
Process 'warden_cpi'                running
Process 'uaa'                       running
Process 'credhub'                   initializing
System 'system_localhost'           running
bosh/0:/home/jumpbox# monit summary
The Monit daemon 5.2.5 uptime: 14h 44m 

Process 'nats'                      running
Process 'postgres'                  running
Process 'blobstore_nginx'           running
Process 'director'                  running
Process 'worker_1'                  running
Process 'worker_2'                  running
Process 'worker_3'                  running
Process 'worker_4'                  running
Process 'director_scheduler'        running
Process 'director_sync_dns'         running
Process 'director_nginx'            running
Process 'health_monitor'            running
Process 'garden'                    running
Process 'warden_cpi'                running
Process 'uaa'                       running
Process 'credhub'                   running
System 'system_localhost'           running

이후 exit, exit 눌러 밖으로 나감

 

 

 - credhub cli 설치

    bosh를 통해 설치되는 paas-ta vm들의 인증 정보에 접근

$ cd ~
$ 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 credhub /usr/local/bin/credhub 
$ credhub --version

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

 

 

- credhub shell 생성

$ cd ~/workspace/paasta-5.0/deployment/bosh-deployment
$ vi credhub_login.sh -> 이후 아래 내용 추가

#===============================
#!/usr/bin

export CREDHUB_CLIENT=credhub-admin 
export CREDHUB_SECRET=$(bosh int --path /credhub_admin_client_secret warden/creds.yml) 
export CREDHUB_CA_CERT=$(bosh int --path /credhub_tls/ca warden/creds.yml) 
#==================================


#저장
===============

#실행
$ source credhub_login.sh

 

 - credhub 로그인

   (애도 외워놓을까...)

$ credhub login -s https://10.0.1.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://10.0.1.6:8844
Login Successful

 

 - vbox 환경저장

$ ~/workspace/paasta-5.0/deployment/bosh-deployment
$ vboxmanage controlvm $(bosh int warden/state.json --path /current_vm_cid) savestate

#결과
=============================
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 

4. PaaS-TA 배포

 

   - Virtual Box vm 복구

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

#결과
===================================
Waiting for VM "vm-0facd533-9bbc-4eac-4d80-afca30b35f9e" to power on...
VM "vm-0facd533-9bbc-4eac-4d80-afca30b35f9e" has been successfully started.

 

 

 - Bosh login

$ cd ~/workspace/paasta-5.0/deployment/bosh-deployment
$ source login.sh

 

 

 - update cloud config (bosh-lite-cloud-config.yml 수정 필요)

$ cd ~/workspace/paasta-5.0/deployment/cloud-config
$ vi bosh-lite-cloud-config.yml

#이후 코드 수정
===========================================
#원본
  - disk_size: 30720

#수정 후(앞에 공백 제거)
- disk_size: 30720

#저장 후 나간 후
===========================================

$ bosh -e micro-bosh update-cloud-config bosh-lite-cloud-config.yml

#결과
Using environment '10.0.1.6' as client 'admin'

+ azs:
+ - name: z1
+ - name: z2
+ - name: z3
  
+ vm_types:
+ - name: minimal
+ - name: small
+ - name: small-highmem
+ - name: small-highmem-16GB
+ - name: default
  
+ vm_extensions:
+ - name: 5GB_ephemeral_disk
+ - name: 10GB_ephemeral_disk
+ - name: 30GB_ephemeral_disk
+ - name: 50GB_ephemeral_disk
+ - name: 100GB_ephemeral_disk
+ - name: 500GB_ephemeral_disk
+ - name: 1TB_ephemeral_disk
+ - cloud_properties:
+     ports:
+     - host: 80
+     - host: 443
+     - host: 2222
+   name: ssh-proxy-and-router-lb
+ - cloud_properties:
+     ports:
+     - host: 1024-1123
+   name: cf-tcp-router-network-properties
  
+ compilation:
+   az: z1
+   network: default
+   reuse_compilation_vms: true
+   vm_type: minimal
+   workers: 6
  
+ networks:
+ - name: default
+   subnets:
+   - azs:
+     - z1
+     - z2
+     - z3
+     cloud_properties:
+       name: random
+     gateway: 10.244.0.1
+     range: 10.244.0.0/20
+     reserved:
+     - 10.244.0.1
+     static:
+     - 10.244.0.2 - 10.244.0.127
+     - 10.244.1.0 - 10.244.1.127
+     - 10.244.2.0 - 10.244.2.127
+     - 10.244.3.0 - 10.244.3.127
  
+ disk_types:
+ - disk_size: 1024
+   name: 1GB
+ - disk_size: 5120
+   name: 5GB
+ - disk_size: 10240
+   name: 10GB
+ - disk_size: 30720
+   name: 30GB
+ - disk_size: 100240
+   name: 100GB
+ - disk_size: 1024
+   name: default

Continue? [yN]: y

Succeeded

 

 

 - runtime config 등록

$ cd ~/workspace/paasta-5.0/deployment/bosh-deployment

#이후 update-runtime-config.sh 수정 필요
inception_os_user_name='ubuntu' -> 계정 이름으로 변경. 저장.

$ ./update-runtime-config.sh

#결과
===========================
Using environment '10.0.1.6' as client 'admin'

+ releases:
+ - name: bosh-dns
+   sha1: fe0bd8641b29cb78977cb5d4494943138a6067f2
+   url: file:///home/ljh0915/workspace/paasta-5.0/release/bosh/bosh-dns-release-1.12.0.tgz
+   version: 1.12.0
  
+ addons:
+ - include:
+     deployments:
+     - paasta
+     - paasta-pinpoint-service
+     - paasta-pinpoint-monitoring
+     stemcell:
+     - os: ubuntu-trusty
+     - os: ubuntu-xenial
+   jobs:
+   - name: bosh-dns
+     properties:
+       api:
+         client:
+           tls: "<redacted>"
+         server:
+           tls: "<redacted>"
+       cache:
+         enabled: "<redacted>"
+       health:
+         client:
+           tls: "<redacted>"
+         enabled: "<redacted>"
+         server:
+           tls: "<redacted>"
+     release: bosh-dns
+   name: bosh-dns
+ - include:
+     stemcell:
+     - os: windows2012R2
+     - os: windows2016
+     - os: windows1803
+     - os: windows2019
+   jobs:
+   - name: bosh-dns-windows
+     properties:
+       api:
+         client:
+           tls: "<redacted>"
+         server:
+           tls: "<redacted>"
+       cache:
+         enabled: "<redacted>"
+       health:
+         client:
+           tls: "<redacted>"
+         enabled: "<redacted>"
+         server:
+           tls: "<redacted>"
+     release: bosh-dns
+   name: bosh-dns-windows
  
+ variables:
+ - name: "/dns_healthcheck_tls_ca"
+   options:
+     common_name: dns-healthcheck-tls-ca
+     is_ca: true
+   type: certificate
+ - name: "/dns_healthcheck_server_tls"
+   options:
+     ca: "/dns_healthcheck_tls_ca"
+     common_name: health.bosh-dns
+     extended_key_usage:
+     - server_auth
+   type: certificate
+ - name: "/dns_healthcheck_client_tls"
+   options:
+     ca: "/dns_healthcheck_tls_ca"
+     common_name: health.bosh-dns
+     extended_key_usage:
+     - client_auth
+   type: certificate
+ - name: "/dns_api_tls_ca"
+   options:
+     common_name: dns-api-tls-ca
+     is_ca: true
+   type: certificate
+ - name: "/dns_api_server_tls"
+   options:
+     ca: "/dns_api_tls_ca"
+     common_name: api.bosh-dns
+     extended_key_usage:
+     - server_auth
+   type: certificate
+ - name: "/dns_api_client_tls"
+   options:
+     ca: "/dns_api_tls_ca"
+     common_name: api.bosh-dns
+     extended_key_usage:
+     - client_auth
+   type: certificate



######################################################## 100.00% 139.58 MiB/s 2s
Task 2

Task 2 | 07:45:47 | Extracting release: Extracting release (00:00:01)
Task 2 | 07:45:48 | Verifying manifest: Verifying manifest (00:00:00)
Task 2 | 07:45:49 | Resolving package dependencies: Resolving package dependencies (00:00:00)
Task 2 | 07:45:49 | Creating new packages: acceptance-tests/017c79edd4909c891b404b7d785e0171b7153929885aef22d1574a0f3826356d (00:00:00)
Task 2 | 07:45:49 | Creating new packages: acceptance-tests-windows/b43c187ed26f56b8683768ef8384ea1765b55f96736399873878b7fbf64ef540 (00:00:00)
Task 2 | 07:45:49 | Creating new packages: bosh-dns/58c7e157ad34bbd80c0d13dc6d1e3e073c8f0daf071bba8b4ca2ce0f10a3dbac (00:00:00)
Task 2 | 07:45:49 | Creating new packages: bosh-dns-windows/443bacefcde26d883481fea5adf3a3ef1fd140d099937450cc308cea83b4165b (00:00:01)
Task 2 | 07:45:50 | Creating new packages: golang-1-linux/a58647561918778c52fb932074e6099497a9063bce3a1531e5c60ba643e1f4df (00:00:01)
Task 2 | 07:45:51 | Creating new packages: golang-1-windows/e40c2867fa9a1471a95b912afbd37763a41099d0df5bcb6a6ad6d20ae768b253 (00:00:01)
Task 2 | 07:45:52 | Creating new jobs: acceptance-tests/0c3a657f50916d60e2a6fd41221ac066dcfd595b78f46000ea07ef87cf48acd4 (00:00:00)
Task 2 | 07:45:52 | Creating new jobs: acceptance-tests-windows/4514ca587c0fb0dc95e8b75132c01b227e7bf5ac431b628c25e2b78bc2bd7632 (00:00:00)
Task 2 | 07:45:52 | Creating new jobs: bosh-dns/bc06c3fb38d04d42f25615fd03f766219986a26c94cb08b77616a0019b603522 (00:00:00)
Task 2 | 07:45:52 | Creating new jobs: bosh-dns-windows/08843899383d37151fab0c58d2a3b6166cf08b63bdc2dfc00a466baa3205aa21 (00:00:00)
Task 2 | 07:45:52 | Release has been created: bosh-dns/1.12.0 (00:00:00)

Task 2 Started  Fri May 21 07:45:47 UTC 2021
Task 2 Finished Fri May 21 07:45:52 UTC 2021
Task 2 Duration 00:00:05
Task 2 done

Succeeded



$ bosh -e micro-bosh configs

#결과
======================================================
Using environment '10.0.1.6' as client 'admin'

ID  Type     Name     Team  Created At  
1*  cloud    default  -     2021-05-21 07:42:46 UTC  
2*  runtime  default  -     2021-05-21 07:45:52 UTC  

(*) Currently active
Only showing active configs. To see older versions use the --recent=10 option.

2 configs

Succeeded

 

 

  - stemcell 등록

$ cd ~/workspace/paasta-5.0/stemcell/paasta
$ bosh -e micro-bosh upload-stemcell bosh-stemcell-315.64-warden-boshlite-ubuntu-xenial-go_agent.tgz

#결과
===========================================
Using environment '10.0.1.6' as client 'admin'

######################################################## 100.00% 169.56 MiB/s 2s
Task 3

Task 3 | 07:47:53 | Update stemcell: Extracting stemcell archive (00:00:03)
Task 3 | 07:47:56 | Update stemcell: Verifying stemcell manifest (00:00:00)
Task 3 | 07:47:56 | Update stemcell: Checking if this stemcell already exists (00:00:00)
Task 3 | 07:47:56 | Update stemcell: Uploading stemcell bosh-warden-boshlite-ubuntu-xenial-go_agent/315.64 to the cloud (00:00:09)
Task 3 | 07:48:05 | Update stemcell: Save stemcell bosh-warden-boshlite-ubuntu-xenial-go_agent/315.64 (4989e9ba-2f7d-41d1-7e1c-62a682af7e39) (00:00:00)

Task 3 Started  Fri May 21 07:47:53 UTC 2021
Task 3 Finished Fri May 21 07:48:05 UTC 2021
Task 3 Duration 00:00:12
Task 3 done

Succeeded



$ bosh -e micro-bosh stemcells

#결과
====================================================
Using environment '10.0.1.6' as client 'admin'

Name                                         Version  OS             CPI  CID  
bosh-warden-boshlite-ubuntu-xenial-go_agent  315.64   ubuntu-xenial  -    4989e9ba-2f7d-41d1-7e1c-62a682af7e39  

(*) Currently deployed

1 stemcells

Succeeded

 

 

 

  - PaaS-TA 배포

$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment
$ chmod +x ./*.sh
$ vi deploy-bosh-lite.sh -> 이후 아래 내역 변경

===========================================
원본
bosh -d paasta -n deploy paasta-deployment.yml

변경되어야 할 내역
bosh -e micro-bosh -d paasta -n deploy paasta-deployment.yml
===========================================

===========================================
bosh -d paasta -n deploy paasta-deployment.yml
	-v inception_os_user_name=ubuntu \ -> 계정 이름으로 변경
===========================================

#저장

$ ./deploy-bosh-lite.sh

#결과
블라블라블라.....
Task 36 | 08:06:21 | Updating instance scheduler: scheduler/b90888bf-369a-4206-9396-e39052174835 (0) (canary) (00:00:56)
Task 36 | 08:07:17 | Updating instance router: router/6e41aebe-5ca2-4867-bb3f-c32c07123669 (0) (canary) (00:02:04)
Task 36 | 08:09:21 | Updating instance doppler: doppler/e5bc29f0-978b-4079-947a-b00c10beecc0 (0) (canary)
Task 36 | 08:09:21 | Updating instance diego-cell: diego-cell/1196bfde-2378-4aaf-adb8-8233707eb3d7 (0) (canary)
Task 36 | 08:09:21 | Updating instance tcp-router: tcp-router/2bbbd4dd-76b4-428b-8e0a-0e47af18dc55 (0) (canary)
Task 36 | 08:10:16 | Updating instance doppler: doppler/e5bc29f0-978b-4079-947a-b00c10beecc0 (0) (canary) (00:00:55)
Task 36 | 08:10:38 | Updating instance tcp-router: tcp-router/2bbbd4dd-76b4-428b-8e0a-0e47af18dc55 (0) (canary) (00:01:17)
Task 36 | 08:11:01 | Updating instance diego-cell: diego-cell/1196bfde-2378-4aaf-adb8-8233707eb3d7 (0) (canary) (00:01:40)
Task 36 | 08:11:01 | Updating instance log-api: log-api/73f0643c-a491-4a77-bc2a-c2b135691052 (0) (canary) (00:00:47)
Task 36 | 08:11:48 | Updating instance credhub: credhub/54d54b01-76bf-4d9b-a5ad-e62e513d1807 (0) (canary) (00:00:51)

Task 36 Started  Fri May 21 07:56:25 UTC 2021
Task 36 Finished Fri May 21 08:12:39 UTC 2021
Task 36 Duration 00:16:14
Task 36 done

Succeeded

 

 

 

 - IP route 설정 (bosh-lite를 이용할때)

$ sudo ip route add   10.244.0.0/16 via 10.0.1.6

$ sudo ip route

#결과
=============================================
10.244.0.0/16 via 10.0.1.6 dev vboxnet0 

 

 

- 작동 확인

$ bosh -e micro-bosh -d paasta vms

#결과
===================================
Using environment '10.0.1.6' as client 'admin'

Task 37. Done

Deployment 'paasta'

Instance                                                  Process State  AZ  IPs           VM CID                                VM Type             Active  
adapter/666e118b-7430-4dcc-a5ab-aa3800df6cf5              running        z1  10.244.0.129  ecc598b1-89b8-4e86-44e0-3b1d8734431e  minimal             true  
api/a7e7f23b-baaf-407b-880d-7f5b5e8a6d3a                  running        z1  10.244.0.134  f4b337ff-f149-4b74-7d4f-29f43fb85818  small               true  
cc-worker/378ae597-fe03-41e5-8f03-75c576a978c3            running        z1  10.244.0.135  fa4b99cd-ced9-4eb5-6197-336b1cf6e0e9  minimal             true  
credhub/54d54b01-76bf-4d9b-a5ad-e62e513d1807              running        z1  10.244.0.141  aa36146a-c5a6-4689-6d92-97cd7886e1f2  minimal             true  
database/64361f3a-dc6f-4a06-94e9-07d600294aba             running        z1  10.244.0.130  7dddc9c2-4196-473d-5171-2334cc882780  small               true  
diego-api/38c1fe94-6131-4c5b-82eb-e9bf98fca911            running        z1  10.244.0.131  5a8716c3-9eb6-47ed-7e9b-c31f23cf89a4  small               true  
diego-cell/1196bfde-2378-4aaf-adb8-8233707eb3d7           running        z1  10.244.0.139  b76d73c0-a9fa-408d-7865-cf93c58ffb40  small-highmem-16GB  true  
doppler/e5bc29f0-978b-4079-947a-b00c10beecc0              running        z1  10.244.0.138  9f16101b-f7ff-425a-53b2-35deadba4cb6  minimal             true  
log-api/73f0643c-a491-4a77-bc2a-c2b135691052              running        z1  10.244.0.140  2aea97c1-e13c-4092-5778-17f5329a22b9  minimal             true  
nats/f594dec1-e198-46df-b978-7244f1d2d75d                 running        z1  10.244.0.128  9b4ac657-6337-4861-4d28-747fa08acd09  minimal             true  
router/6e41aebe-5ca2-4867-bb3f-c32c07123669               running        z1  10.244.0.34   4a949300-2861-490d-6773-99a3f6b70564  minimal             true  
scheduler/b90888bf-369a-4206-9396-e39052174835            running        z1  10.244.0.136  cb9acd5f-8090-40a2-5562-64116185d49c  minimal             true  
singleton-blobstore/938fee5d-dfd7-444c-8020-8d61e8242c93  running        z1  10.244.0.133  daa0367c-aefd-441d-64bb-e5b5aa89c6b3  small               true  
tcp-router/2bbbd4dd-76b4-428b-8e0a-0e47af18dc55           running        z1  10.244.0.137  6d20793b-c688-4425-412b-b2bcb3c47034  minimal             true  
uaa/f3867eb2-6ca0-4ddb-af72-44c41cd343ff                  running        z1  10.244.0.132  3e0ff68f-9034-4ac6-6bd2-a0ece49a4935  minimal             true  

15 vms

Succeeded

 

5. 기타 실습

 

   - Cloud Foundary-CLI 설치

$ wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
$ echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
$ sudo apt update
$ sudo apt install cf-cli
$ cf -v

#결과
================================
cf version 6.53.0+8e2b70a4a.2020-10-01

 

 

  - Cloud Foundary Login 세팅

$ cf login --skip-ssl-validation

#결과
API endpoint: https://api.10.244.0.34.nip.io

Email: admin

Password: 
Authenticating...
OK

Targeted org system




API endpoint:   https://api.10.244.0.34.nip.io (API version: 3.73.0)
User:           admin
Org:            system
Space:          No space targeted, use 'cf target -s SPACE'


 

 

- user 생성

#ID가 edu-user이며 password가 user인 계정을 생성
$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment
$ cf create-user edu-user user

 

 

- org생성

$ cf create-org edu-org
$ cf orgs

 

- space 생성

$ cf create-space -o edu-org edu-space
$ cf target -o edu-org
$ cf spaces

 

 

- org role 설정

$ cf set-org-role edu-user edu-org OrgManager

 

 

- space role 설정

$ cf set-space-role edu-user edu-org edu-space SpaceDeveloper

 

 

- java8  설치

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

 

 - git 설치

$ sudo apt install git
$ git --version

 

 

- spring-music 다운로드 및 빌드

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

 

- spring-music 배포

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

#결과
=======================
admin(으)로 edu-org 조직/edu-space 영역의 앱 가져오는 중...
확인

이름           요청된 상태   인스턴스   메모리   디스크   URL
spring-music   started       1/1        1G       1G       spring-music-responsible-gelada-ts.10.244.0.34.nip.io

 

- 로그 확인

$ cf app spring-music
$ cf logs spring-music
$ cf logs spring-music --recent

 

 

 

* 순서

 

===================

paas-ta 설치

 

1. bosh-vm 복구

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

 

2. bosh-vm 로그인

$ cd ~/workspace/paasta-5.0/deployment/bosh-deployment
$ source login.sh

 

3. update cloud config

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

$ bosh -e micro-bosh cloud-config -> 상태 확인용

 

4. update runtime config

$ cd ~/workspace/paasta-5.0/deployment/bosh-deployment
$ ./update-runtime-config.sh

$ bosh -e micro-bosh configs -> 확인

 

5. update stemcell

$ cd ~/workspace/paasta-5.0/stemcell/paasta
$ bosh -e micro-bosh upload-stemcell bosh-stemcell-315.64-warden-boshlite-ubuntu-xenial-go_agent.tgz

$ bosh -e micro-bosh stemcells -> 확인

 

6. paas-ta 배포

$ cd ~/workspace/paasta-5.0/deployment/paasta-deployment
$ chmod +x ./*.sh
$ ./deploy-bosh-lite.sh

$ bosh -e micro-bosh vms -> 확인용

 

7. cf login

$ cf login --skip-ssl-validation

 

8. user 생성

$ cf create-user edu-user user

 

9. org 생성

$ cf create-org edu-org

 

10. space 생성 -> 실제 할당

$ cf create-space -o edu-org edu-space

 

11. org role 설정 -> 유저에게 권한 설정

$ cf set-org-role edu-org edu-user OrgManager

 

12. space role 설정

$ cf set-space-role edu-user edu-space SpaceManager

 

 

* 추가 커멘드

$ bosh -e micro-bosh -d paasta vms -> 배포된 vm 정보들 볼 수 있음

$ bosh -e micro-bosh instance ->인스턴트로 배포되어 있는 리스트

$ bosh -e micro-bosh env --details -> 추가적으로 인증서 기간도 나옴

$ bosh -e micro-bosh stemcells -> stemcell 정보

$ bosh -e micro-bosh releases -> 올라가있는 release들의 정보

$ bosh -e micro-bosh tasks --recent -> 현재 테스크 정보들

$ bosh -e micro-bosh locks -> lock된 task들

$ bosh -e micro-bosh cancel-task 123 -> 중지

$ bosh -e micro-bosh -d paasta vms --vitals -> 상세 내역

$ bosh -e micro-bosh -d paasta ssh api -> bosh에 ssh 접속

 

 

 

참고 : PaaS-TA 전문가 육성 교육 자료

'Programming > Paas-TA' 카테고리의 다른 글

PaaS-TA 교육 4일차  (0) 2021.05.25
PaaS-TA 교육 3일차  (2) 2021.05.25
PaaS-TA 교육 1일차  (0) 2021.05.20

PaaS-TA 교육 1일차

Programming/Paas-TA 2021. 5. 20. 18:31 Posted by big_brother

1. Cloud 이해

 

    1.1 클라우드 컴퓨팅이란? 

          컴퓨팅 리소스를 데이터 센터에 대량으로 집적시킨 후, 개별 이용자가 요구하는 만큼 가상으로 분리하여 정보통신망을 통해            제공하는 서비스. 사용량에 비례하여 비용 청구

   

    1.2 기본 속성

          - 주문형 셀프 서비스       - 사업자와 직접 상호 작용하지 않고, 사용자의 개별 관리화면을 통해 서비스를 이용할 수 있음.

          - 광범위한 네트워크 접속 - 모바일 기기 등의 다양한 디바이스를 통해 서비스에 접속할 수 있음

          - 리소스 공유                   - 사업자의 컴퓨팅 리소스를 여러 사용자가 공유하는 형태로 이용

          - 신속한 확장성                - 필요에 따라, 필요한 만큼 스케일 업과 스케일 다운 가능

          - 측정 가능한 서비스        - 이용한 만큼 요금이 부가되는 종량제

 

     1.3  Cloud 유용성

          - 경제성           - 사용하고자 하는 기간만 사용 가능. SW와 데이터를 클라우드에 통합 관리함. SW 업데이트 작업 및 데이터                                      유지보수의 효율성을 높혀 비용을 절약할 수 있음.

          - 유연성           - 컴퓨팅 리소스를 필요에 의해 확장/축소할 수 있음

          - 가용성           - 일부 하드웨어 장애가 발생하더라도 서비스를 계속하여 사용할 수 있도록 구성. 자체 시스템보다 낮은

                                   가격에 가용성이 높은 환경을 사용할 수 있음.

          - 빠른 구축 속도 - 클라우드가 제공하는 하드웨어와 소프트웨어를 이용하여 시스템을 신속하게 구축 가능

   

   1.4 Cloud 시장 규모 변화

 1.5 2018년 트렌드

       - 클라우드 서비스 솔루션의 성장

           - SaaS는 기업들이 초기 클라우드 서비스를 접할 수 있는 유연하고 경제적인 경로 제시

           - IaaS와 PaaS의 성장은 퍼블릭과 프라이빗 부분에서 사용할 수 있는 클라우드 솔루션의 수를 늘림

           - 많은 조직들이 클라우드가 보장하는 단순성과 고성능을 사용하게 될 것이며, SaaS 솔루션이 압도적인 클라우드가

             서비스가 될 예정

           - 고객들이 서비스에 더 쉽게 접근하게 만들고 싶어하는 경우 SaaS, IaaS, PaaS를 통합하는 방향으로 움직일 전망

       - 클라우드 스토리지 용량 증가

       - IoE(Internet of Everything)의 부상

          - IoT가 성장하는 가운데 실시간 데이터 분석 및 클라우드 컴퓨팅의 지속적인 혁신이 IoE를 전면에 내놓을거라 예상

          - IoE는 네트워크 모든 기기들과 지능적으로 상호작용하며, 인간과 인간의 소통도 더 쉽게 만드는 기능을 함

        - 인터넷 품질의 개선과 5G 네트워크의 부상

        - 사이버 보안 시스템에 대한 투자

           - 사이버 보안에 대한 기본적인 방어 메커니즘으로 (SIEM)과 악성코드 탐지 시스템에 대한 투자 필요성이 대두됨

           - 클라우드 서비스가 관제 보안 서비스를 제공

 

  1.6 2020년 트렌드

        - 강화 엣지 : 사용자 디바이스 가까운 곳에서 정보소스/저장소를 배치하여 정보를 처리하고 콘텐츠를 수집/전달함

            - 신속한 데이터 처리와 소통이 필요한 로봇/드론/자율주행자동차 등에서 확산중

        - 분산 클라우드 : 클라우드 제공 업체의 데이터 센터 외부에 있는 다른 위치에서 퍼블릭 클라우드 서비스 제동

             - 중앙 집중 방식의 퍼블릭 클라우드 서비스를 소비자와 가장 가까운 곳으로 이동

 

  * 중요 : 클라우드 특징/장점.

 

2. Cloud Model 및 특징 이해

    2.1 Model별 관리 범위와 예시

      IaaS - Infra 관점(Virtual Machine, Disk Networks, Firewalls)

      CaaS - 컨테이너 관점(Containters, Volumes, Ips & Ports, Load Balancers)

      PaaS/aPaaS - Runtime 관점(Web/WAS, Framework, Appas, Routes) 계속적으로 서비스 작동.

      FaaS - 서비스 관점(Actions, Triggers, Gateways, API) 서버리스 컴퓨팅 모델. 실행 대비 비용 발생.

      SaaS - 비지니스 관점

   

      2.2 IaaS란

            - CPU나 하드웨어 등의 컴퓨팅 리소스(자원)를 네트워크를 통해 서비스로 제공하는 모델

            - 물리적 리소스를 가상화하여 유연한 Infrastructure를 제공

            - 가상화 유영에는 hypervisor와 container가 존재함

3. PaaS란

      - 기업 애플리케이션 실행 환경 및 애플리케이션 개발 환경을 서비스로써 제공하는 모델     

      - 애플리케이션 실행 환경이나 데이터베이스 등이 미리 마련되어 단기간에 애플리케이션을 개발하여 서비스를 제공할 수 있음

   3.1  작동 원리

       

       3.2 주요 용어

             

 

4. SaaS란

    - 주로 업무에서 사용하는 소프트웨어의 기능을 인터넷 등의 네트워크를 통해 필요한 만큼 서비스를 하는 형태

    4.1 특징

         Level1 - Ad Hoc/Custom

         Level2 - Configurable

         Level3 - Configurable, Mutli-Tenancy

         Level4 - Scalable, Configurable, Mutli-Tenancy

         * Configurable - 환경 설정(소스코드 레벨의 수정 없이 사용자의 요구 사항을 수용)

         * Mutli-Tenancy - 하나의 어플리케이션을 다수의 사용자가 공유하여 사용하는 다중 소유 아키텍쳐 지원

         * Scalable - 가용성 및 성능 지원을 위해 다수의 인스턴스를 생성하고 사용자의 데이터를 분산 관리.

    4.2 테넌트 - 사용자 별로 격리된 환경인 테넌트를 제공하며, 사용자가 독점적으로 이용하는 어플리케이션과 데이터 제공

                       테넌트별 보안 정책, 가용성, 확장성, 과금을 측정 

 

5. Cloud Native Application

    - Desktop application + Web application으로 클라우드 환경에서 실행되는 어플리케이션 프로그램

    - web app처럼 기기에 종속성 없음. 또한 오프라인 작업도 가능

    5.1 서비스

        - 어플리케이션을 여러 개의 서로 독립적인 기능을 하는 서비스로 구분

        - 서비스를 묶어서 하나의 통합된 비지니스 서비스를 할 수 있도록 하는것이 중요

        - 최소 상태의 컴포넌트들이 격리된 상태의 마이크로 서비스로 구성되어야 하며, 각 서비스는 분산되어야 함

   

6. Microservice

     6.1. 모노리스 서비스의 문제

          - 규모가 클지 빌드, 배포, 서버 기능시 시간이 오래 걸림

          - 개별 문제가 빌드 실패를 유발

          - 컴포넌트들의 call-by-reference기반으로 구성되어 특정 모듈의 문제가 다른 컴포넌트들에도 영향을 줌

          - 코드가 커져서 유지 보수 어려움

          - 기존 로직 데이터 인터페이스등의 변경에 따른 영향을 파악하기 어려움

          - 사소한 수정에도 재컴파일, 배포, QA를 진행하여야 함함

          - 컴포넌트 별로 기능/비기능적 특성을 맞춰 새 기술을 도입하고자할때 어려움

          - 한 어플리케이션의 기능을 타 어플리케이션에서 사용하기 어려움

     6.2 작게 쪼개진, 범위가 명확한 다수의 작은 서비스들

           - 단일 책임 원칙 

           - 도메인 주도 개발

           - 제한된 컨텍스트

           - 독립적으로 관리됨

     6.3 각 서비스의 명확한 소유권

           - 일반적으로 "DevOps" 모델 필요

     6.4 아키텍처 구성하기 위한 핵심 요소

           - 서비스 - 각 컴포넌트는 서비스라는 형태로 구현되고 API를 이용하여 타 서비스와 통신

                           서비 경계는 구문 또는 도메인의 경계를 따름

            - DevOps - 개발, 테스트, 배포를 모두 자동화시킴. 

            - 데이터 분리 - 서비스 별로 필요에 따라 별도의 데이타 베이스를 사용

                                   서비스가 API에서 데이터베이스까지 수직 분리됨

            - API Gateway - 모든 API에 대한 end point를 통합함고 추가 기능을 제공하는 미들웨어

     6.5 장점

           - 보다 빠르고 간단한 배치와 롤백

           - 각 도메인에 적합한 프레임워크/도구/언어

           -  더 큰 탄력성

           -  더 나은 가용성

     6.5 단점

           - 복잡성

           - 런타임 환경상에서 비동기 상호 작용이 어려움

           - 중복성

              - 코드 중복과 데이터 중복이 발생함

      6.6 고려 사항

           - 서비스 범위 설정 - 어디서 어디까지 묶을것인가?

           - 기존 레거시 시스템과 공존 고려

           - 운영 오버 헤드

           - 인터페이스 불일치

              - 서비스의 인터페이스를 변경하는 것에 대한 영향 범위를 파악할 것인가?

              - 어떻게 서비스 외부로 제공하는 인터페이스가 의도하지 않은 형태로 사용되지 않도록 할 것인가?

              - 어떻게 전체 시스팀의 인터페이스 맵을 만들고 팀 간의 커뮤니케이션 비용을 효과적으로 제어할 수 있는가?

      6.7 모델링/구현 TIP

           - API를 먼저 정의하라

           - API를 REST API Manturity Level 2 이상이 되도록 강제화 하라

           - API 문서를 유지하라

           - ORM 활용하라

           - DB에 너무 의존하지 마라

           - 도메인 내부에서만 의미있는 값을 외부에 노출하지 마라

           - 마이크로 서비스가 별다른 설정없이 바로 기동하게 하라

   7. API Gateway

        7.1 개요 - API를 총괄하는 Gateway

        7.2 주요 기능

              MSA와 함께 근래에 떠오르는 기술

              AP 게이트웨이는 API 서버 앞단에서 모든 API 서버들의 엔드 포인트를 단일화해줌. API에대한 인증과 인가 기능에서

             서버 라우팅 기능까지 있다

             -인증/인가에 대한 기능 : API 토큰 발급. 

             - API 라우팅 : 로드 벨런싱, 서비스와 클라이언트 별 엔드 포인트 제공

             - 메디에시션 기능 : 메시지 포맷 변화, 프로토콜 변환

            - 로깅/미러링 : API 호출 로깅

 

 * 중요 : PaaS에 대해 중점적으로(IaaS, SaaS는 개념만), 레거시 시스템과 Cloud Native와의 차이

      

 8. PaaS-TA 소개

     8.1 개발 배경

           - 전자정부 표준프레임워크 기반 Open Paas

           - PaaS-TA는 클라우드 인프라 환경을 제어하면서 애플리케이션을 쉽게 개발하고 안정적으로 운영할 수 있도록

             관리/지원하는 클라우드 플랫폼      

     8.2 핵심 기능

         - 오프소스 PaaS 검증/안정화

         - 다양한 IaaS 지원

         - 표준프레임워크 및 국산 SW 탐재

         - 설치 자동화

     8.3 특징

         - 글로벌하게 검증된 오픈 소스를 활용하여 개발됨

         - 전체가 오픈 라이선스인 아파치 라이선스로 개방

     8.4 장점

         - 기존 IaaS 제공 기업을 PaaS-TA를 활용함으로써 경쟁력 강화 기능

         - 7동 이상의 다양한 IaaS 지원

         - 풍부한 개발/운영환경 제공 - 다양한 개발 언어(추가 가능) 10종 프레임 워크, 국산 SW 서비스 지원

         - 통합관제 지원

     8.5 구성 요소

         - 인프라 제어 및 관리 서비스

         - 실행 환경 - 애플리케이션의 개발 및 배포, 실행/운영 관리를 위한 서비스 제공

         - 서비스 환경 - 다양한 대외 백엔드 플랫폼 서비스와 연계를 위한 대외 서비스 브로커를 제공

         - 개발 환경 - 응요애플리케이션을 개발 및 배포, 온영하기 위한 포털과 서비스 제공

         - 인프라 제어 및 연동, 어플리케이션 플랫폼을 위한 관리 서비스

               

      문제 :

      Q 클라우드 모델에 관련한 문제입니다.

          - 다음 중 클라우드 모델의 특성에 대해 잘못 설명한 것은?

            CaaS : 컨테이너 관점에서의 서비스를 제공한다

            FaaS : Function as a service의 약어로 서비스 관점에서 기능을 제공한다

            PaaS : 어플리케이션 실행환경 및 어플리케이션 개발 환경을 서비스로 제공한다

            SaaS : 개발자들이 업무에서 사용하는 소프트웨어의 기능을 쉽게 개발할 수 있도록 서비스를 제공한다

            IaaS : CPU, 메모리, 네트워크 등 인프라에 대한 서비스를 네트워크로 제공한다

 

     Q Cloud의 이해

         - 다음 중 클라우드의 특징으로 올바르지 않은 것은?

           사업자의 컴퓨팅 리소스를 공유하는 형태이다

           기간 당 요금을 지불하는 구독 형태로 서비스를 제공한다

           주문형 셀프 서비스로 사업자와 직접 상호작용하지 않고 서비스를 이용할 수 있다

           모바일 기기 등 다양한 디바이스를 통해 서비스에 접속할 수 있다.

           필요에 따라 스케일 업과 스케일 다운이 가능하다

         

 

  참고 : PaaS-TA 전문가 육성 교육 자료

'Programming > Paas-TA' 카테고리의 다른 글

PaaS-TA 교육 4일차  (0) 2021.05.25
PaaS-TA 교육 3일차  (2) 2021.05.25
PaaS-TA 교육 2일차  (0) 2021.05.21