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 |