우분투의 버전을 올리고 나서부터 시스템 세팅이 초기화되어 애를 먹고 있다.

 

오늘은 fastboot가 안 먹는 상태가 확인됐다... 오랜 기억을 떠올려 방법을 찾아본다.

 

먼저 lsusb를 쳐 vendor id와 product id를 확인한다.

 

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

$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 13d3:3567 IMC Networks Wireless_Device
Bus 003 Device 004: ID 04f2:b760 Chicony Electronics Co., Ltd HP Wide Vision HD Camera
Bus 003 Device 021: ID 18d1:d00d Google Inc. Android
Bus 003 Device 002: ID 192f:0916 Avago Technologies, Pte. USB Optical Mouse
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

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

 

요즘 개발중인 장비 아이디가 보인다.

 

vendor id 05c6. product id 9091이다.

 

이걸 /etc/udev/rules.d/51-android.rules 에 추가하도록 하자.

 

$ sudo gedit /etc/udev/rules.d/51-android.rules 

 

SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"

 

이후 다시 로드하도록 하자.

 

$ sudo udevadm control --reload-rules

 

끝!

웬일인지 간만에 패키지를 업데이트 할려니 에러가 난다.

 

 

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

$ sudo apt-get install -y git-el

Reading package lists... Done
Building dependency tree       
Reading state information... Done
git-el is already the newest version (1:2.17.1-1ubuntu0.11).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up git-el (1:2.17.1-1ubuntu0.11) ...
Install git for emacs
Install git for emacs25
install/git: Handling install of emacsen flavor emacs25
install/git: Byte-compiling for emacs25
+ emacs25 -batch -q -no-site-file -f batch-byte-compile git.el git-blame.el
emacs25: error while loading shared libraries: libotf.so.0: cannot open shared object file: No such file or directory
ERROR: install script from git package failed
dpkg: error processing package git-el (--configure):
 installed git-el package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of git-all:
 git-all depends on git-el; however:
  Package git-el is not configured yet.

dpkg: error processing package git-all (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 git-el
 git-all
E: Sub-process /usr/bin/dpkg returned an error code (1)

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

 

저 시커먼 놈이 원인으로 보인다. 왜 그런지 찾아보자.

 

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

$ locate libotf.so.0

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

 

파일이 읍써???????

 

emacs를 다시 인스톨해보자.

 

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

$ sudo apt install --reinstall emacs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
Need to get 1748 B of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://kr.archive.ubuntu.com/ubuntu bionic/main amd64 emacs all 47.0 [1748 B]
Fetched 1748 B in 1s (1713 B/s) 
(Reading database ... 239492 files and directories currently installed.)
Preparing to unpack .../archives/emacs_47.0_all.deb ...
Unpacking emacs (47.0) over (47.0) ...
Setting up emacs (47.0) ...
Setting up git-el (1:2.17.1-1ubuntu0.11) ...
Install git for emacs
Install git for emacs25
install/git: Handling install of emacsen flavor emacs25
install/git: Byte-compiling for emacs25
+ emacs25 -batch -q -no-site-file -f batch-byte-compile git.el git-blame.el
emacs25: error while loading shared libraries: libotf.so.0: cannot open shared object file: No such file or directory
ERROR: install script from git package failed
dpkg: error processing package git-el (--configure):
 installed git-el package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of git-all:
 git-all depends on git-el; however:
  Package git-el is not configured yet.

dpkg: error processing package git-all (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 git-el
 git-all
E: Sub-process /usr/bin/dpkg returned an error code (1)

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

 

뺑뺑이를 돈다...

 

찾아보니 emacs가 아니라 emacs nox이다.

 

다시 해보면..

 

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

$ sudo apt-get install emacs-nox
Reading package lists... Done
Building dependency tree       
Reading state information... Done
emacs-nox is already the newest version (47.0).
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 emacs-nox : Depends: emacs25-nox but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

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

 

고장이 났네??? 수정해보자

 

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

$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done

블라블라...

Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
W: APT had planned for dpkg to do more than it reported back (14 vs 18).
   Affected packages: git-el:amd64

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

 

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

 

$ sudo apt-get install emacs-nox
Reading package lists... Done
Building dependency tree       
Reading state information... Done
emacs-nox is already the newest version (47.0).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

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

잘 된거로 보인다.

 

결론

 

sudo apt --fix-broken install

 

 

 

'Programming > Ubuntu' 카테고리의 다른 글

ubuntu 20.04에서 fastboot가 인식이 안될 때  (0) 2022.07.05

Docker - 1 설치 및 기본 커맨드

Programming/Docker 2021. 6. 2. 17:05 Posted by big_brother

왜 써야하는지, 어디에 써야하는지, 어떤 이점이 있는지는 너무 많은 곳에 있기에 바로 설치와 테스트를 진행하겠습니다.

기본적으로 우분투 베이스로 진행하겠습니다. 테스트를 진행한 우분투는 18.04 버전입니다.

설치

$ sudo apt-get install docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

설치 후 테스트를 하기 위해 anaconda3를 설치해보도록 하겠습니다.

그를 위해서 docker repository에 anaconda3를 검색합니다.

$ docker search anaconda3

NAME                                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
continuumio/anaconda3                    Powerful and flexible python distribution       526                  [OK]
okwrtdsh/anaconda3                       Anaconda3, Jupyter Notebook, OpenCV3, Tensor…   34                   [OK]
fzinfz/anaconda3                         multi-kernel jupyter(py 3.7+/2.7.15 & bash) …   4                    
marketdial/anaconda3-uwsgi-nginx-flask   A custimized image based on anaconda3 with u…   2                    
quantrocket/anaconda3-uwsgi              Learn more at https://www.quantrocket.com       1                    [OK]
vineeth52/anaconda3-tf-keras             Docker image for ubuntu-latest + anaconda3 +…   1                    
kunitaya/anaconda3                       Anaconda3 on CentOS                             1                    [OK]
satbala1/anaconda3                       Anaconda3 install with Jupyter Notebook         1                    
alleninstitute/anaconda3_neuron_1370                                                     1                    
xychelsea/anaconda3                      Anaconda 3 base containers, including with N…   1                    
hdfeos/anaconda3                         Anaconda3 for http://hdfeos.org/zoo             0                    [OK]
byeong0/anaconda3                        anaconda3                                       0                    
tactileentertainment/anaconda3-onbuild   An onbuild image to deploy anaconda3 based p…   0                    [OK]
ryomazda/anaconda3                       anaconda3 on ubuntu18.04 with jupyter nbexte…   0                    
lresende/anaconda3                                                                       0                    
shimtom/anaconda3-ubuntu                 anaconda3 in ubuntu                             0                    [OK]
yan047/anaconda3                         Anaconda3-4.2.0 on top of ubuntu 16.04          0                    [OK]
svekre/anaconda3                         Test Anaconda3 for ProDi Bioinf Workgroup       0                    
nabladesignlabs/anaconda3-ubuntu         docker for anaconda3-ubuntu                     0                    [OK]
ssusb/anaconda3                                                                          0                    
hoto17296/anaconda3-ja                   Anaconda 3 Image for Japanese.                  0                    [OK]
xuliwei1216/anaconda37_tf23_flink11                                                      0                    
shotat/anaconda3-xgboost-docker          anaconda3 & xgboost                             0                    [OK]
vshulkin/anaconda3                       anaconda3 4.5.1 with python 2.7 and python 3…   0                    [OK]
dieudonne/anaconda3                      Jupyter notebook based on continuumio/anacon…   0                    

 

이중에서 별을 많이 받은 continuumio/anaconda3을 다운로드 하도록 하겠습니다.

 

$ docker pull continuumio/anaconda3
Using default tag: latest
latest: Pulling from continuumio/anaconda3
69692152171a: Already exists 
99ee0a02a284: Pull complete 
Digest: sha256:037174b951b838bb47aaf6f527d3c7f996dc4445415bfc0ace391820df4c2d5b
Status: Downloaded newer image for continuumio/anaconda3:latest
docker.io/continuumio/anaconda3:latest

 

설치 완료 후 docker run을 통해서 컨테이너를 실행해보도록 하겠습니다.

 $ docker run -it --rm --name anaconda3 -v /home/myhome/docker_temp/:/docker_temp  continuumio/anaconda3 bin/bash

 

파라메터들의 의미는 아래와 같다.

-it : bash 쉘에 접근하기 위한 커센트입니다.

--rm : docker shell에서 exit로 빠져나올때 리소스들을 자동으로 정리해줍니다.

--name : 별명을 만들어서 나중에 다시 연결하기 쉽게 만들어줍니다.

-v : 도커 내부에서 외부 폴더 연결을 하게 해줍니다. -v external folder:internal folder 형식으로 구성됩니다.

 

이런식으로 컨테이너를 작동하게 되면 아래와 같이 docker shell로 들어가게 됩니다.

(base) root@4096c6b37cc7:/#

이후 ls를 치게 되면 아래와 같이 나옵니다.

bin  boot  dev	docker_temp  etc  home	lib  lib64  media  mnt	opt  proc  root  run  sbin  srv  sys  tmp  usr	var

 중간에 보면 docker_temp가 나오게 되는데 docker 컨테이너가 중지되면 데이터들이 지워지게 되는데 해당 폴더로 데이터들을

남겨 놓을 수 있습니다.

 

이후 해당 폴더에서 데이터 편집 후 docker에서 빌드가 가능합니다.

 

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

이 이야기를 하기 앞서 ASCII 코드에 대해서 이야기 해보자.


0~127(0x00~0x7F) 까지 표시하도록 되어있는 코드 문자표다.


몇몇 컨트롤 문자와 표현 가능한 숫자와 문자, 특수 문자들로 구성되어 있다.




문제는 이걸로는 다른 문자(한글, 한자)들을 표기할 수 없다. 이래서 나온게 멀티바이트이다.


멀티 바이트는 말그대로 1개 이상의 바이트로 문자를 표기한다. 문제는 이걸 해석하는 방법이


문자마다 다 다르다는 것이다. 



우리 나라는 KS X 1001와 KS X 1003이 있으며 이를 기반으로 EUC-KR이 나오고


차후에 CP-949에서 확장되었다. 윈도우에서 사용할 수 있는 각 국가의 코드 페이지를


아래에 링크하였다.


https://msdn.microsoft.com/ko-kr/library/windows/desktop/dd317756(v=vs.85).aspx





문제는 각 문자의 코드 페이지는 그야말로 자국어만 표현할 수 있다(CP-949는


일부 한자도 포함). 만약 CP-949로 웹페이지를 작성했다면, CP-949를 쓰지 않는


국가 사람이 접근했다면 화면이 다 깨져보인다. 실제로.. 과거에 많이 발생했던


문제이다. 또한 한글과 일본 글자. 한자들을 병용하기 어렵다. 이런 저런 문제가


있어 만들어진 것이.. 유니코드이다.




하나의 코드 페이지! 세상에 모든 문자! 유니버셜 코드 페이지!




흔히 말하는 UTF-8, UTF-16등이 이에 속한다. 요즘에는 거의 UTF-8으로 통일되고


있다. 하지만 그렇지 않은 시스템도 있다... 윈도우가 그중 하나이다.





윈도우에서 흔히 말하는 WCHAR 혹은 C++ 표준인 wchar_t 문자형은 UTF-16으로


표기된다. UTF-16과 UTF-8의 차이점에 대해서 이야기한다면 기본 길이가 차이가 있다.


UTF-8의 경우 1Byte안으로 표기할 수 있는 문자는 1Byte로 그이상은 2Byte, 그 이상은 3Byte


이런식으로 1바이트씩 커지면 문자를 표기한다. UTF-16의 경우에는 2Byte로 표기해보고


안되면 2Byte를 늘리는 식으로 커진다. 기억 속에 한글은 2Byte안으로 다 표현이 된다. 맞나?


어찌됐건 UTF-땡에 땡은 비트수를 의미한다. 어찌됐건 그리하여 이걸 가지고 어디다 써먹는가?





예를 들어 이런 문자열을 하나 만들었다고 치자.


char test1[] = "위";//0xC0A7


주석을 보면 알겠지만 "위"의 값은 0xC0 0xA7으로 표현된다.


이는 코드 페이지는 CP-949에서 확인할 수 있다. 기본적으로 윈도우에서 


char형으로 한글 문자열을 만들면 CP-949로 인코딩이 된다.


참고로 test1[0] = 0xC0, test1[1] = 0xA7. 이런식으로 저장이 된다.





그렇다면 WCHAR(혹은 wchar_t)로 인코딩하면 어떻게 되나???


wchar_t test2[] = L"水";//0x6C34


UTF-16으로 인코딩이 된다...


참고로 test2[0] = 0x6C34. 이런식으로 저장이 된다. 아까 이야기했듯이


UTF-16은 기본이 2Byte이다.




그럼 이런 문제는 언제 발생하는가? 흠...


예를 들어 시리얼 인터페이스(RS-232C 등등)를 이용하여 통신할 경우


ASCII 코드만으로 통신을 하던지, 영어 외의 언어의 경우에는 인코딩을 정해야하는데


주로 UTF-8을 이용한다. 참고로.. 그냥 UTF-8만으로 ASCII 값을 표현하면 똑같다.


길이도 같고, 값도 같고. 그런데 이게 특정 문자 표현으로 들어가면.. UTF-8으로 표현하면


UTF-16보다 길이가 길어지는 경우가 발생한다. 한글만 봐도 보통 UTF-8으로 하면


3Byte인데 UTF-16으로 하면 대부분 2Byte가 된다. 뭐 하고 싶으면 데이터 압축을 하던지


해서 보내면 되지만 시리얼 인터페이스란게 그런 용도가 아니다. 그외에 예를 들어


QR 바코드에 한국어를 넣고 이를 스캔을 한다고 하면 같은 내용을 표현하기 위해


더 많은 Byte가 필요하게 되어 곤란해진다...


이런 저런 이유로 아직도 CP-949나 UTF-16으로 인코딩되서 보내는 장비들이 많다.


이런 경우에 주로 신경 쓰는것 같다. 내 경우에는..


나중에 더 자세히 이해하게 되면 추가 예정!





'Programming > Tips' 카테고리의 다른 글

C#소스 -> VB.NET 소스 변경  (0) 2014.09.26
BOOL과 bool  (0) 2014.08.27

C#소스 -> VB.NET 소스 변경

Programming/Tips 2014. 9. 26. 15:55 Posted by big_brother

간혹가다가 VB.NET으로 프로그램을 짜야할 때가 있는데 아주 곤혹스럽다..

가끔 쓰는 언어인데 다른 언어들과 많이 달라서 짜기가 힘들다..

그래서 온갖 수단(검색)을 이용해서 만들었었는데, 좋은 사이트를 찾았다.

http://www.developerfusion.com/tools/convert/csharp-to-vb/

이거 한방이면 C#에서 VB.NET으로 바꿔준다. C# 소스가 이미 있으면 게임 끝이고 없어도 C#으로 짜서

VB.NET으로 바꾸는게 맞는 것 같다. 이제 고민 끝!

'Programming > Tips' 카테고리의 다른 글

[윈도우] 멀티바이트와 유니코드(UTF-16, UTF-8)  (1) 2018.01.23
BOOL과 bool  (0) 2014.08.27

BOOL과 bool

Programming/Tips 2014. 8. 27. 10:08 Posted by big_brother

간략한 팁입니다.

win32 API에 보면 bool type이 있습니다.

MFC에는 BOOL type이 있지요.

언듯보면 비슷해보이고 MFC에서 두타입을 혼용해도 사실 많은 경우에 별 문제가 발생하지 않습니다.

하지만 두 타입에는 큰 차이가 있습니다. 크기지요.

sizeof 함수를 이용해서 두 개의 크기를 찾아보면 이와같이 나타납니다.

bool : 1 byte

BOOL : 4 byte

BOOL 타입의 선언을 찾아가보시면 int형으로 선언이 되어있는걸 볼 수가 있습니다.

그래도 어짜피 BOOL 타입는 0과 1을 빼면 들어갈 것이 없기에 별 문제가 없습니다.

하지만 C#으로 Marshaling을 하게 되면 문제가 될 소지가 있습니다.

아래와 같은 경우지요.


MyDll.dll

//구조체

typedef struct _BOOL_ARRAY

{

  BOOL bA;

BOOL bB;

BOOL bC;

BOOL bD;

}BOOL_ARRAY;

//선언

extern "C" __declspec(dllexport) void SetBOOLArray(BOOL_ARRAY stBoolArray);


이런식으로 선언된 C++ Dll이 있습니다. 이런 경우 c#으로 Marshaling을 하면 이렇게 되겠지요.


//구조체

public struct BOOL_ARRAY

{

public Boolean bA;

public Boolean bB;

public Boolean bC;

public Boolean bD;

};

//선언

[DllImport("MyDll.dll")]

public static extern void SetBOOLArray(BOOL_ARRAY stBoolArray);

****이렇게 하면 안됩니다!!!***

이유는 이렇습니다. c#에서 Boolean값은 1byte입니다.

그리고 Marshaling을 할때는 메모리 카피로 값을 카피하게 됩니다.

위에 c++구조체는 BOOL형의 4개의 변수로 구현되어 있기 때문에 16 byte입니다.

그리고 c# 구조체는 같은 이유로 4byte입니다. 스택 오버 플로우는 발생하지 않지만 값이 정상적으로 전달되지 않습니다.

예를 들면 c++에서 bA = TRUE, bB = FALSE, bC = TRUE, bD = FALSE 이런식으로 설정했다고 칩시다.

하지만 C#에서 받으면  bA = TRUE, bB = FALSE, bC = FALSE, bD = FALSE 이런식으로 받아지게 됩니다. 메모리 카피니깐요.

해결책은 쉽지요;; c++의 구조체를 바꾸던지, c#의 구조체를 바꾸던지(Boolean이 아닌 int형으로).

결과적으로 정리해봅시다.

C++(BOOL) = 4byte

C++(bool) = 1btype

C#(int) = 4byte

C#(Boolean) = 1byte

이런 식으로 통일해주시기 바랍니다.

끝! 


'Programming > Tips' 카테고리의 다른 글

[윈도우] 멀티바이트와 유니코드(UTF-16, UTF-8)  (1) 2018.01.23
C#소스 -> VB.NET 소스 변경  (0) 2014.09.26