배너 이미지 STArt@IoT에서 제공하는 플랫폼을 사용하는데 도움을 드립니다. STArt@IoT
개발플랫폼 가이드
Home 가이드 개발플랫폼 가이드

CF CLI

CF CLI 는 Cloud Foundry 의 PaaS 기능을 사용하고 제어하기 위해 제공되는 커맨드 기반의 툴입니다.

  • CF CLI 는 Windows / Mac OS X / Linux OS 를 지원하며 각 OS 에 맞는 설치파일을 다운받아 설치하면 됩니다.

다운로드 안내

  • CF CLI 의 설치 파일은 아래의 다운로드 링크 중 OS 환경에 해당하는 파일로 다운받습니다.
window 64bit window 64bit
mac os x 64 bit
linux 64 bit (.deb) linux 32 bit (.deb)
linux 64 bit (.rpm) linux 32 bit (.rpm)

설치 안내 ( Windows용 )

  • Windows 용 CF CLI 설치 파일은 zip 형식으로 압축되어 있으며, 압축을 푼 뒤 설치 파일을 실행할 수 있습니다.
  • 설치 마법사가 실행되면 Install 을 클릭한 뒤, 안내되는 내용에 따라 설치를 완료합니다.

실행 및 로그인 안내

  • 설치가 완료된 다음, 커맨드 창을 열어서 cf 를 입력하였을 때 아래와 유사한 메세지들이 출력되면 정상적으로 설치가 완료된 것입니다.
  • 아래와 같은 커맨드를 입력하면, Cloud Foundy 에 로그인할 수 있습니다.
  • CF CLI 가 입력을 요구하는 Email> 와 Password>는 가입시 등록한 아이디와 비밀번호 입니다.

App Push

App 배포를 할 때는 CF CLI 의 push 명령어를 사용합니다.

  • 아래의 과정을 수행하기 위해서는 CF CLI 에 대한 로그인이 완료되어 있어야 합니다

샘플 App 다운로드

  • 샘플 App 은 아래를 클릭하시면 다운받을 수 있습니다.
샘플 App 다운받기
cf-sample_spring-music.zip

cf push

  • 다운로드 받은 샘플 App을 압축 해제 합니다.
  • 커맨드 창에서, 압축 해제한 디렉토리로 이동합니다.
  • 정상적으로 배포과정이 진행되면, 아래와 같은 메세지가 출력됩니다. (예시)
  • 배포가 완료되면서, App 에 대한 서비스 url 이 표시됩니다.
  • 출력된 url 을 브라우저로 열면, App 의 실행 모습을 확인할 수 있습니다.
  • App 에 대한 상세한 정보는 웹 어플리케이션 상세에서 확인할 수 있습니다.

Eclipse plugin 설치

  • Eclipse Marketplace 에서 "cloud foundry" 라는 키워드를 입력하여 검색하면, Eclipse Tools for Cloud Foundry 라는 플러그인을 찾을 수 있습니다.
  • 검색된 Eclipse Tools for Cloud Foundry 를 설치합니다.
    ( 지원되는 Eclipse Version 은 Neon (4.6), Mars (4.5), Luna (4.4), Kepler (4.3) 입니다. )

Server 생성

  • Servers 패널에서 새로운 server 를 생성합니다.
  • Cloud Foundry 를 선택합니다.
  • 가입시 등록한 아이디와 비밀번호를 입력하고, Manage Cloud... 을 클릭합니다.
  • Add 버튼을 클릭한 다음, 아래 정보를 입력합니다.
  • Name: start@iot , URL: https://api.app.startiot.or.kr
  • Validate Account 버튼을 클릭하여 오류가 발생하지 않는다면, Finish 버튼을 클릭하여 등록을 마칩니다.

App Push

  • 웹 어플리케이션 프로젝트를 생성합니다.
  • Servers 패널에서 Cloud Foundry 를 우클릭하여, 'Add and Remove' 를 클릭합니다.
  • 배포할 프로젝트를 선택하여 추가합니다.
  • App 이름을 입력 합니다.
  • App 이 사용할 URL 이 중복되지 않는지 Validate 를 클릭하여 유효성을 확인한 다음, Finish 를 클릭합니다.
  • App Push 과정이 끝나면, 해당 앱의 URL 에서 App 을 확인할 수 있습니다.

WebApp 등록명세

CloudFoundry 에 App 을 배포할 때 속성들을 지정할 수 있습니다.

  • 이 배포 속성들은 배포하고자 하는 App 의 특성에 맞게 잘 지정하여야 하며, 속성이 잘못 지정된 경우 App 배포가 실패할 수도 있습니다.
  • 샘플 App은 다음과 같은 manifest 를 가지고 있습니다.

name

  • App 이름을 가리키는 것으로써, CloudFoundry 에서 App 을 구분짓는 중요한 속성입니다.

memory

  • App 의 메모리 크기를 지정하는 속성입니다.

path

  • App 의 배포 파일 위치를 지정하는 속성입니다. 일반적으로 Java Web Application 은 빌드 시 WAR 또는 JAR 파일로 생성되므로, 그 파일의 위치를 지정하기 위해 이 옵션을 사용하게 됩니다.

routes

  • App 이 배포되면서 사용될 접근URL을 지정하는 속성입니다. App 에게 지정되는 url 은 http://{route값}.{domain} 의 형태로 구성이 되며, 아래 경우 http://spring-music.app.startiot.or.kr 의 url 을 갖게 됩니다.

env

  • App 배포시 환경 변수를 지정하고자 할 때는 env 속성을 사용하면 됩니다.

상세한 속성정보는 아래 링크를 통해 확인 가능합니다.

상세 속성 정보
http://docs.pivotal.io/pivotalcf/1-8/devguide/deploy-apps/manifest.html

로컬 개발환경에서 작동되는 샘플 App

  • 예제 App 은 아래를 클릭하시면 다운받을 수 있습니다.
예제 App 다운받기
cf-sample_mysql1.zip
  • 해당 샘플 App은 아래와 같은 구성으로 되어 있는 Java App 입니다.
  • 다운받은 파일의 압축을 풀고, 아래의 command 를 이용해서 App 을 구동시킵니다.
    ( 이하 설명에서는 이 App 파일을 압축 푼 경로가 D:\Work\startiot\cf-sample_mysql1-master 인것으로 설명되고 있습니다. )
    java -jar .\target\cf-sample_mysql1-1.0.0-SNAPSHOT.jar
  • 이 샘플 App 은 아래와 같은 접속정보의 MySQL 을 사용하고 있습니다
  • application-default.properties파일로 MySQL 접속정보를 변경할 수 있습니다.
  • property 파일을 수정하였다면, 어플리케이션을 다시 패키징 합니다.
  • App 을 다시 구동하고, 브라우저에서 http://localhost:8080/ 의 주소를 열면 아래와 같은 화면을 확인할 수 있습니다.

PaaS 개발 환경

App Deploy

  • MySQL App Service 를 생성합니다.
  • 서비스 이름: mysql, 앱서비스 선택: mysql_service, 플랜 선택: basic
  • CLI 로그인을 합니다.
  • cf push 명령어를 이용해서 app deploy 를 수행합니다.
  • push 가 완료되면, 새로 올린 app 의 URL 을 확인할 수 있습니다.
  • MySQL App Service 의 정보를 확인할 수 있습니다.

Spring Boot 기반의 Java App이 CloudFoundry 의 데이터베이스 App Service 를 DataSource 로 인식하는 과정

  • 샘플 App 내의 manifest.yml 파일에는 위에서 생성한 MySQL App Service 를 바인딩하여 사용하도록 지정되어 있습니다.

Spring Boot 기반의 Java App 의 경우, CloudFoundry 는 deploy 시 'cloud' 라는 spring profiles 가 자동으로 지정됩니다.

  • spring profiles 가 'cloud' 라는 값으로 지정되므로, 샘플 App 내의 application-cloud.properties 파일이 로드가 됩니다.
  • CloudFoundry 의 App 에 데이터베이스 App Service 가 binding 되면, 그에 대한 정보는 VCAP_SERVICES 라는 환경 변수로써 접속정보(credentials)들이 전달됩니다.
  • CloudFoundry Connector 라이브러리는 VCAP_SERVICES 값을 이용하여 DataSource 객체를 Spring Application Context 내에 자동으로 생성합니다.
  • configuration 과정은 App 의 로그 화면에서 확인할 수 있습니다.

MySQL 제어

쿼리브라우저를 이용한 MySQL 제어

  • 웹 어플리케이션 서비스 목록에서 해당 MySQL App Service 선택
  • 쿼리 브라우저 버튼 클릭
  • 쿼리 브라우저에서 필요한 쿼리 수행

CF CLI 주요명령어

cf target

CLI 가 현재 CF 에 로그인되어 있는지를 확인한다.
  • 로그인되어 있는 경우
  • 로그인되어 있지 않은 경우

cf api

CLI 가 바라보는 CloudFoundry 의 시스템 URL ( API endpoint ) 를 확인하고, 지정할 수 있다.
  • API endpoint 를 새로 지정

cf login

CF 에 로그인하기. 위의 cf api 명령어를 이용해서 API endpoint 를 지정하지 않았다면, -a 옵션으로 URL 을 지정한다.
  • 로그인 하기

cf push

  • App을 Deploy하는 명령어
  • manifest.yml 파일이 있는 경우, 별도 옵션없이 실행 가능합니다.

cf push APP_NAME [ 각종 옵션들 ]

manifest.yml 파일이 없거나, 명시적인 push 옵션을 지정할 때 사용한다.

대표적인 각종 옵션

  • f : manifest.yml 파일이 현재 위치에 없는 경우, 그 경로를 지정.
  • m : App 에 할당하는 메모리 limit 을 지정. ( eg. 256M, 1024M, 1G )
  • p : push할 App 의 jar, war, zip 등의 아카이브 파일의 위치 또는 App 의 root directory 를 지정.
  • t : push 하는 App 이 start 될 때까지 기본적으로 60초의 timeout 이 설정되어 있음
예시) 다른 위치에 있는 jar 파일의 app 을 cf-sample_mysql2 라는 이름으로 push 하는 경우:

cf apps

push 되어 있는 app 들의 목록을 확인한다.

cf app

push 되어 있는 app 에 대한 정보를 확인한다.

cf rename

push 되어 있는 app 의 이름을 변경한다.
  • 예시) cf-sample_mysql2 라는 이름의 app 을 cf-sample_mysql3 로 이름 변경

cf delete

push 되어 있는 app 을 삭제한다.
  • 예시) cf-sample_mysql3 라는 이름의 App 을 삭제

cf restart

push 되어 있는 app 을 재시작 한다.
  • 예시) cf-sample_mysql1 에 대해서 재시작

cf logs

app 이 발생시키는 각종의 로그들(stdout, stderr)을 확인한다.
  • 예시) cf-sample_mysql1 앱에 대해서 로그 확인: ( 명령어가 실행된 이후부터 발생되는 로그를 표시 )
  • 예시) cf-sample_mysql1 앱이 최근에 발생시켰던 로그를 확인하는 경우

cf ssh

push 되어 있는 app 의 컨테이너 인스턴스에 ssh 로 직접 접속한다.
  • 예시) cf-sample_mysql1 앱에 접속하는 경우: (앱은 /app 의 경로에 위치함)

cf create-service

app service 를 생성한다.
  • 예시) mysql 이라는 이름의 MySQL App Service 를 생성하는 경우

cf bind-service

app service 를 app 바인딩 한다.
  • 예시) mysql 이라는 이름의 서비스를 cf-sample_mysql1 앱에 바인딩 하는 경우

cf unbind-service

app 으로부터 app service 의 바인딩을 해제한다.
  • 예시) cf-sample_mysql1 에 대해서 mysql 서비스를 바인딩 해제 하는 경우

cf delete-service

app service 를 삭제한다.
  • 예시) mysql 앱서비스를 삭제하는 경우: ( 바인딩된 앱이 없어야 삭제 가능 )

cf buildpacks

CloudFoundry 에서 제공하는 buildpack 의 목록 확인

cf help

CF CLI 제공하는 모든 명령어에 대한 도움말을 확인할 수 있다.
  • 모든 명령어의 목록을 확인하는 경우
  • 특정 명령어의 도움말을 확인하는 경우