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