SlideShare a Scribd company logo
1 of 69
Download to read offline
Bluemix Hands on
Day 1 – DevOps and Deployment
Configuration
Published at
2017/04/04
IBM Korea
Cloud Service
Author: Beomsik Kim
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 1 of 69
Document History
Document Location
This is a snapshot of an on-line document. Paper copies are valid only on the day they are
printed. Refer to the author if you are in any doubt about the currency of this document.
The source of the document will be found in IBM Bluemix
Revision History
Date of this revision: Date of next revision (date)
Revision
No
Revision Date Summary
of Change
Author Changes
Marked
1 4-April-17 Initial
version
Beomsik Kim
(IBM Cloud / beomskim@kr.ibm.com)
Disclaimer
LIMIT OF LIABILITY/DISCAIMER OF WARRANTY:
THE AUTHOR MAKE NO REPRESENTATIONS OR WRRANTIES WITH RESPECT TO THE ACCURACY
OR COMPLETETENSS OF THE CONTETNS OF THIS WORK AND SPECIFICALLY DISCALIM ALL
WARRANTIES, INCLUDING WITHOUT LIMITATION WRRANTIES OF FITNESS FOR A PARTICUALR
PURPOSE. THE SOWFTWARE VERSION OR SOFTLAYER’S OFFERING MYA HAVE CHANGED OR
DISAPPERAED BETWEEN WHEN THIS WORK WAS WRITTEN AND WHEN IT IS READ
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 2 of 69
Table of Contents
DAY ONE: DEVOPS AND DEPLOYMENT CONFIGURATION
LAB 1.1 CREATE AND CONFIGURE OPEN TOOLCHAIN ........................................................ 4
1.1.1 Create Java application with Cloud Foundry app in Bluemix Catalog....................................4
1.1.2 Connect to enabled toolchain........................................................................................................6
LAB 2.1 DEPLOY APPLICATION TO CLOUD FOUNDRY BY CODE CHANGE ....................... 9
2.1.1 Change, Commit and push application code to GitHub deployed on Cloud FoundryError! Bookmark not defined.
2.1.2 Change the code...........................................................................................................................16
2.1.3 Add pluggable services combined to PetClinic application in Toolchain................................21
2.1.3.1 Sauce labs Integration..............................................................................................................22
2.1.3.2 Availability Monitoring integration ........................................................................................30
2.1.3.3 Pagerduty integration...............................................................................................................32
2.1.3.4 Slack integration.......................................................................................................................36
LAB 2.2 DEPLOY APPLICATION TO IBM INFRASTRUCTURE .............................................. 38
2.2.1 Create Virtual Server with Cent OS ..........................................................................................38
2.2.2 Configure SSH to Virtual machine.............................................................................................43
2.2.3 Create and Configure Stages ......................................................................................................47
2.2.4 Install and configure JDK and Tomcat......................................................................................52
+) Web server port Change..................................................................................................................57
LAB 2.3 DEPLOY APPLICATION TO IBM CONTAINER .......................................................... 59
2.3.1 Create Stage for building Container Image...............................................................................59
2.3.2 Create Stage for Deploying application to IBM Container......................................................62
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 3 of 69
Day One: DevOps and Deployment Configuration
첫날에는 Java로 만들어진 PetClinic 샘플 앱을 생성해서 여러 타겟 서버에 배포하는 실습
을 해보겠습니다. IBM에서 제공하는 컴퓨팅 모델에는 베어메탈, 가상머신, 클라우드 파운드
리, 컨테이너, 오픈 휘스크가 있으며 필요에 따라 적절한 컴퓨팅 모델을 선택해서 사용하실
수 있습니다.
Bluemix에서는 기본적으로 Node.js, Java, PHP, Go, Ruby, Python 등의 런타임을 제공하며
Cloud Foundry apps, Bolierplates 등을 통해 모바일, IoT, DB를 포함한 Java, Node.js 팩 등
빠르게 어플리케이션을 시작할 수도 있습니다.
그림 1. Bluemix Catalog
블루믹스 카탈로그를 클릭하시면 블루믹스 퍼블릭 모델에서 제공하는 모든 종류의 서비스
를 확인하실 수 있습니다. 첫날 실습을 위한 시나리오에서는 블루믹스 카탈로그 상에서
1)Java 샘플 어플리케이션을 생성하고어플리케이션을 배포하기 위한 IBM 툴인 2) Open
Toolchain과 연동해 3) IBM에서 제공하는 클라우드 파운드리, 컨테이너 및 가상머신에 배포
하는 내용으로 이루어져 있습니다.
오늘 수업을 완료하시면 블루믹스의 다음 기능에 대해 다룰 수 있습니다.
1. Bluemix 카탈로그 내 필요한 어플리케이션 생성하기
2. 어플리케이션 배포를 위한 Open Toolchine 연동 및 구성하기
3. 어플리케이션 배포시 필요한 서비스 Fabric 구성하기
4. 어플리케이션 배포를 위한 타겟 서버(클라우드 파운드리, 컨테이너, 가상머신) 구성
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 4 of 69
및 배포하기
5. 가상 머신 배포를 위한 Bluemix Infra에서 가상머신 주문하기
Lab 1.1 Create and Configure Open Toolchain
이 실습을 통해서, IBM Bluemix 카탈로그 내 Cloud Foundry apps를 이용하여 손쉽게 Java
어플리케이션을 생성하고, 향후 타겟 서버에 배포하기 위한 IBM DevOps 툴인 Open
Toolchin을 연동해 보겠습니다.
1.1.1 Create Java application with Cloud Foundry app in Bluemix Catalog
Step.1 IBM Bluemix 포탈에 로그인 한 뒤 홈페이지 우측 상단에 있는 Catalog를 클릭합니다.
이후 좌측 메뉴바에서 Cloud Foundry app을 클릭합니다.
그림. Bluemix 포탈 내 카탈로그 화면
Step.2 Cloud Foundry apps 탭에서 Liberty for Java 서비스를 클릭합니다. 이후 화면에서 어
플리케이션 생성을 위해 필요한 이름과 서비스 옵션을 선택합니다. 본 시나리오에서는 가
장 기본 디폴트 옵션으로 구성해 진행하겠습니다. 시나리오 진행을 위해 어플리케이션 이
름을 170330DevOps로 기입하고 Create 버튼을 클릭합니다. 기본 도메인은 IBM에서 제공
하는 mybluemix.net으로 설정됩니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 5 of 69
그림. Liberty for Java 정보 기입 화면
Step.3 다음 화면에서 어플리케이션 동작 여부를 확인 할 수 있으며, 잠시 뒤에 어플리케이
션이 동작합니다. Getting Started 화면에서는 클라우드 파운드리 앱인 Cloud Foundry CLI 컨
트롤을 위한 CLI 파일을 다운받으실 수 있으며, 샘플 테스트를 위해 코드를 다운받으실 수
있습니다. 어플리케이션 동작 여부를 확인 한 뒤, 여러 타겟 서버에 배포하기 위해
Toolchain을 연동하겠습니다. 왼쪽 사이드 메뉴바에서 Overview 탭을 클릭하여 이동합니다.
그림. 생성된 어플리케이션의 Overview 화면
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 6 of 69
위 화면에서는 어플리케이션 생성시 선택한 스펙 옵션과 비용, 활동 내역을 확인할 수 있으
며, 웹 콘솔에서 바로 인스턴스, RAM에 대한 스펙을 클릭만으로 손쉽게 변경하실 수 있습니
다.
초록색의 Running 표시 옆의 https://170330devops.mybluemix.net/ URL을 클릭하실 경우 초
기에 설정되어 있는 샘플 Java 어플리케이션을 확인 하실 수 있습니다.
그림. Java 샘플 어플리케이션 웹 화면
Toolchain 연동을 위해 Overview 화면 우측 하단에 있는 Continuous delivery란의 Enable 버
튼을 클릭합니다.
1.1.2 Connect to enabled Toolchain
Toolchain 또한 어디에 배포할 것인지, 어떤 추가 서비스 옵션을 가지고 구성할 것인지에 따
라 여러 종류가 있을 수 있고, 다양한 형태로 만들어 질 수 있습니다. 이처럼 사용하기 위한
고유의 Toolchain 정보를 확인하고 추가적인 옵션을 선택합니다.
Step.1 어플리케이션이 위치할 Organization 위치를 선택하고, Toolchain 이름을 기입합니다.
기본적으로 값이 지정되어 있으며, 필요에 따라 변경할 수 있습니다.
기본 구성
• Git Hub Issues
• Git Hub Repository
• Orion Web IDE
• Delivery Pipeline
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 7 of 69
그림. 기 구성된 툴체인 서비스 및 옵션 구성 화면
Step.2 어플리케이션에 사용하기 위해 가져올 또는 앞으로 소스코드를 관리할 저장소의 위
치를 지정합니다. 새롭게 생성(New)하거나, 기존에 저장되어 있는 GitHub 내 소스코드를 복
제(Clone), Fork 및 기존 코드를 그대로 사용(Existing)하는 옵션을 제공합니다. 금번 시나리
오에서는 Java를 사용한 Pet Clinic 어플리케이션으로 툴체인 구성 및 배포를 실습한 것이므
로, Repository type: Clone 하고 다음의 GitHub URL 값을 사용합니다. Create 버튼을 클릭합
니다.
URL: https://github.com/Beomskim/170329-HDCC-devops.git
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 8 of 69
그림. Pet Clinic 소스가 저장된 Git Hub 레파지토리
그림. Pet Clinic Git Hub URL 입력
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 9 of 69
Lab 2.1 Deploy application to Cloud Foundry by code change
구성된 서비스들의 기능을 확인하기 위해 Issues, GitHub, Eclipse Orion WebIDE, Delivery
Pipeline을 클릭하여 탐색합니다.
그림. 샘플 Open Toolchain
Toolchain 생성 후 웹화면에 기본 값으로 구성된 타일 모양의 서비스 4가지는 다음의 용도
를 가집니다.
1. Issues : GitHub의 이슈관리와 연결되어 있습니다. 코드 작업을 위한 작업 할당 및 스
케쥴링에 사용할 수 있습니다.
2. GitHub : 소스코드가 저장되거나 소스코드를 가져오는 저장소 입니다. URL을 통해 소
스코드를 복제하거나 Zip형태로 다운받아 사용할 수 있습니다.
3. Eclipse Orion WebIDE : 웹상에서 코드를 확인하고, 수정할 수 있는 기능을 제공합니
다. GitHub와 연결되어 있으며, 소스코드 수정시 Commit 기능과 Push 기능을 이용해
GitHub에 소스코드를 전달합니다. Push, Pull, Patch 방식을 통해 다른 개발 툴 e.g) Visual
studio와 같은 코드 작성 툴과 병렬적으로 개발 후 코드 버전 관리를 할 수 있습니다.
4. Delivery Pipeline : 어플리케이션을 배포하는 기능을 제공합니다. 배포를 위한 빌드,
배포, 스테이징, 테스트, 프로덕션을 구성할 수 있습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 10 of 69
그림. GitHub Issue
그림. GitHub 소스 레파지토리
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 11 of 69
그림. Orion WebIDE Pet Clinic Java 코드 화면
그림. Delivery Pipeline 설정 전 화면
Cloud Foundry를 이용해 처음 Java 어플리케이션을 생성했을 때 주어진 URL (e.g
https://170323devops.mybluemix.net/)에서 샘플 어플리케이션 웹 화면을 볼 수 있었습니다.
그 이유는 Cloud Foundry app을 생성 했을 때 기본적으로 Target 서버 (여기에서는 US
South – https://api.ng.bluemix.net)에 배포되어 생성되도록 기본 설정이 됬기 때문입니다.(필
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 12 of 69
요시, Target server 변경 가능) 여러분의 계정이 조금씩 과금되는 이유는 배포 후 바로 어플
리케이션이 Cloud Foundry 위에서 동작하기 때문입니다.
Cloud Foundry apps를 통한 Java 어플리케이션 생성시 URL에서 확인한 샘플 어플리케이션
과 Open toolchain을 연동하면서 가져온 GitHub상의 Pet Clinic 어플리케이션은 다른 소스입
니다. 아직 Pet Clinic 어플리케이션을 Cloud Foundry에 배포하지 않았기 때문에 여전히 초
기 주어진 URL(https://170330devops.mybluemix.net/)상에는 기본 Java 샘플 어플리케이션이
동작하고 있습니다.
이번 실습에서는 1)Open Toolchian 상에서 Delivery Pipeline 기능을 이용해 소스코드를
Cloud Foundry로 배포함으로써 Pet Clinic 어플리케이션으로 변경된 웹화면을 확인하고 2)
Eclipse Orion WebIDE를 통해 Pet Clinic Java 어플리케이션의 Html 상 문구를 변경한 뒤코
드를 저장 및 3) GitHub로 커밋후 푸시해 딜리버리 파이프라인을 통해 재 배포된 어플리케
이션을 확인해 보겠습니다.
2.1.1 Change, Commit and push application code to GitHub deployed on Cloud
Foundry
이번 실습에 사용할 Pet Clinic 어플리케이션을 Delivery pipeline 기능을 이요해 Cloud
Foundry에 배포함으로 기존에 확인하셨던 샘플 어플리케이션을 대체하겠습니다.
그림. 초기 앱 생성시 샘플 어플리케이션 화면
Step.1 Toolchain 의 Delivery Pipeline을 클릭하여 기 구성된 Build Stage를 찾습니다. Stage
우측 상단에 설정 버튼을 통해 Stage Configuration을 클릭하여 해당 스테이지 구성을 변경
합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 13 of 69
그림. Stage 구성 변경
Step.2 Stage의 구성을 아래와 같이 변경합니다. Maven 빌드를 이용하고 Shell Script를 통해
서 빌드를 위한 커스터마이즈를 할 수 있습니다. 내용에는 향 후 실습을 위한 Dockerfile 카
피 내용이 포함되어 있습니다. 빌드 아카이브 디렉토리 설정과 테스트 보고서를 위한 파일
패턴 구성을 포함하였습니다.
그림. Build Stage 변경
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 14 of 69
Step.3 Stage 구성 변경 후 시작버튼 클릭시 Build가 진행됩니다. Build가 완료되면 다음 단
계의 Stage로 넘어가며 이는 자동/메뉴얼 방식으로 변경이 가능합니다. Log 기록 화면을 통
해 Stage 작동 시간, 성공 여부, Log 기록에 대해 확인 할 수 있습니다.
그림. Build Stage 실행 후 Pass
그림. Build Stage 로그
Step.4 Deploy Stage의 구성을 확인하시면 Cloud Foundry로 배포되도록 기본 구성 및 스크
립트가 설정되어 있습니다. Target, Organization, Space 및 Application Name을 변경할 수
있습니다. 결론적으로 테스트를 위해서는 Build Stage의 스크립트의 조작 외에는 변경하지
않으셔도 무방합니다. 이전단계와 같이 Log 기록을 확인하실 수 있으며, Deploy Stage 아래
결과로 나오는 URL(예, http://170330devops.mybluemix.net/vets.html)을 클릭하시면 Pet
Clinic이 기존의 Java 샘플 어플리케이션 대신 Cloud Foundry에 배포됨을 확인하실 수 있습
니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 15 of 69
그림. Deploy Stage 기본 설정 값
그림. Deploy Stage Pass 화면 및 URL 확인
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 16 of 69
그림. Pet Clinic Java 어플리케이션 화면
2.1.2 Change the code
Eclipse Orion WebIDE를 사용해 Cloud Foundry에 배포한 어플리케이션의 문구를 변경해 Git
Hub로 Push할 준비를 하겠습니다.
Step.1 Open Toolchain 화면에서 Eclipse Orion WebIDE를 클릭하고, 초기 PetClinic Web 화
면의 문구를 변경할 수 있는 messages.properties 파일을 클릭합니다.
(경로: src/main/resources/messages/messages.properties)
그림. messages.properties 화면
Step.2 messages.properties 파일에서 Welcome 메세지(Welcome to ABC)를 Welcome to
Petclinic으로 변경한 뒤 File-Save 버튼을 통해 변경 사항을 저장합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 17 of 69
그림. messages.properties 화면
Step.2 기존의 문구를 IBM DevOps Code Commit Test로 변경합니다.
Welcome-Welcome to ABC
 Welcome-Welcome to Petclinic
Step.3 좌측 상단 메뉴바의 File-Save를 통해 변경된 내용을 저장합니다.
그림. Code 변경사항 저장화면
Step.4 연필 모양 아래의 Git 버튼을 클릭하고 Git Hub 코드 푸시를 위한 메세지 작성 및
Commit을 진행합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 18 of 69
그림. Git 버튼
그림. Git 푸시화면 이동
Step.5 변경 사항을 Git Hub 레파지토리에 푸시하기 위해서는 변경 사항에 대한 코멘트가
필요합니다. 코드 변경사항에 대한 코멘트 후 우측 상단의 Commit 버튼을 눌러 푸시 직전
단계로 리스트화 합니다.
그림. Commit 메세지란 및 변경사항 확인 탭
Step.6 Commit이 완료되면 왼쪽 화면의 Outgoing 부분에 저장된 Commit 리스트가 보입니
다. 여러개의 Commit이 있을 경우 선택적으로 GitHub로 푸시 할 수 있으며, 반대로 다른
곳에서 전송된 Commit의 경우 Incoming 란에 표시됩니다. GitHub 푸시를 위해 Change the
tile 리스트를 선택한후 Push 버튼을 클릭합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 19 of 69
그림. Commit에 대한 GitHub Push
Push 버튼을 누르게 되면 처음에 연결된 GitHub 레파지토리로 변경된 소스코드가 반영되며
기존에 설정된 Delivery Pipeline에서 자동으로 Target 서버(US South)로 배포하도록 설정되
어 있습니다. 자동으로 배포가 되는것을 원치 않을시, Delivery Pipeline의 Build Stage에서 메
뉴얼로 빌드 및 배포 하도록 설정할 수도 있습니다.
Delivery Pipeline에서 각 Stage 별 진행 상황과 완료 및 실패 여부를 확인 할 수 있습니다.
아래 사진에서 Commit 후 Push로 인해 src 디렉토리가 3분 전에 새로 갱신되었음을 확인
할 수 있습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 20 of 69
그림. Push 후 GitHub 갱신된 화면
그림. GitHub 푸시 후 자동으로 Pipeline 실행되는 화면
그림. Cloud Foundry에 배포 성공 화면
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 21 of 69
그림. PetClinic Welcome 메세지 변경
위 그림의 Deploy Stage의 하단에 있는 URL을 클릭할 시에 새롭게 배포된 어플리케이션의
변경 내용을 확인할 수 있습니다. 매번 배포할 때 마다 Build X 형태로 버전관리가 됩니다.
배포에 관한 로그 기록을 확인하고 싶을 시, ‘View logs and history’를 클릭합니다.
그림. 어플리케이션 배포 성공 로그 기록 화면
2.1.3 Add pluggable services combined to PetClinic application in Toolchain
Cloud Foundry app의 장점은 Bluemix 위의 서비스들과 결합되어 다양한 서비스를 이용해
볼 수 있다는 점에 있습니다. 서비스들에는 IBM에서 제공하는 서비스 뿐만 아니라 3rd
party
업체의 소프트웨어를 포함합니다. 이번 실습에서는 Toolchian 우측에 있는 Add Tools 버튼을
통해 다양한 서비스들을 추가해 연동해 보겠습니다. 금번 시나리오에서 진행할 서비스는
Sauce Labs, Availability Monitoring, PagerDuty, Slack입니다. 각 서비스들의 개요는 아래와
같습니다.
서비스 설명
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 22 of 69
• Sauce Labs : Cross-Browser 웹사이트 테스트, 모바일 앱 테스트
• Availability Monitoring : 가용성 모니터링 및 개선
• PagerDuty : 실시간 이벤트 알림 전달(SMS, Call, email)
• Slack : 전용화된 채널을 통해 실시간 메시징 및 커뮤니케이션
그림. 추가 가능한 서비스 목록(17.04 기준)
2.1.3.1 Sauce Labs Integration
기본적으로 툴체인에서 서비스를 추가 할 때, Open Toolchain에서는 추가하려는 서비스의
Access Key를 가져와 연동하는 방식을 제공합니다. Sauce Labs 홈페이지에서 Free trial 계정
을 생성한 뒤 Access Key을 받아 기입해 툴을 추가합니다.
Step.1 Add Tool 버튼을 통해 Sauce Labs을 추가화면으로 이동한 뒤, 좌측의 Sauce Labs 홈
페이지 이동 버튼을 통해 이동합니다. 인증을 마치고 회원 가입을 완료합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 23 of 69
그림. Sauce Labs 툴 추가 화면
그림. Sauce Labs 회원 가입 인증
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 24 of 69
그림. Sauce Labs 대시보드
Step.2 좌측 하단의 계정 이름을 클릭, User Setting 을 클릭하여 아래로 내리면 Access Key
에 대한 정보를 확인하실 수 있습니다. 계정 비밀번호를 입력하시고 Access key를 복사해
Open toolchian의 API Key에 입력합니다. 이름의 경우 임의로 설정하실 수 없으며, Sauce
Labs에서 기입하신 별칭을 입력하셔야 구성에 오류가 없습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 25 of 69
그림. Sauce Labs Access Key
그림. Open toolchain 상 Access key 입력
그림. Sauce Labs 구성 완료
Step.3 Sauce Labs를 사용해 테스트 결과를 받아보려면 Delivery Pipeline에서 테스트를 위한
Stage가 있어야 합니다. Stage 구성을 위해 Delivery Pipeline에서 테스트 타입의 Stage를 추
가합니다. Input에서는 Build 단계의 아티펙트를 가져오는 기본 설정을 유지하고, JOBS 탭에
서 Tester Type을 Sauce Labs로 변경합니다. 이에 따른 Organization, Space 및 테스트 실행
명령을 지정한 뒤 저장합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 26 of 69
그림. 테스트 Stage 구성
Step.4 배포하기 전에 테스트를 완료하기 위해 Sauce Labs 스테이지를 Drag & Drop으로
Build Stage 다음으로 이동 시킨 뒤 다시 한번 Build Stage를 실행해 Sauce Labs을 통한 테
스트 결과를 받아봅니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 27 of 69
그림. Sauce Labs Stage 구성
Step.5 Sauce Labs 연동이 완료되었습니다. Toolchain의 Sauce Labs 클릭해 이동 후 좌측의
New Manual Test 를 통해 테스트 할 타입을 선택 한 뒤 테스트를 진행합니다. Cloud
Foundry에 배포했던 PetClinic URL을 입력하고, 인터넷 타입을 선택한 뒤 Start Session을 클
릭합니다.
그림. New Manual Test 클릭
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 28 of 69
그림. 테스트 진행할 타입 선택
그림. 테스트 진행할 타입 선택
테스트 하고자 하는 URL을 입력해서 TEST를 진행하면 그 URL을 지속적으로 모니터링하고
로그값을 기록합니다. 현재 Free trial 상 동시에 모니터링 가능한 세션은 8개입니다. 테스트
운영이 끝나면 앤드유저가 접속하는 홈페이지에 대한 녹화된 화면을 확인할 수 있고 관련
로그값을 확인할 수 있습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 29 of 69
그림. Manual Test Logs
그림. 테스트 결과 및 현재 진행 중인 세션 개수
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 30 of 69
그림. 녹화된 Pet Clinic 홈페이지
2.1.3.2 Availability Monitoring integration
Availability Monitoring은 Access Key가 없이 바로 연동이 가능합니다. Add Tools를 이용해
서비스를 추가하고 이를 확인합니다. 현재 관리중인 어플리케이션 목록을 확인할 수 있으며
가용성, 현재 상태와 사용량을 확인할 수 있습니다. ‘테스트 모두 보기’를 통해 세부적인 테
스트 내용을 확인하실 수 있습니다.
Step.1 Add Tool을 통해 Availability Monitoring을 추가합니다.
그림. Availability Monitoring 형성
Step.2 Availability Monitoring로 현재 상태 및 테스트 결과를 확인하고 필요시 추가적으로
테스트를 구성합니다.
그림. 연결된 어플리케이션 목록
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 31 of 69
그림. 사용 가능성 모니터링 화면
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 32 of 69
그림. Availability Monitoring 세부 테스트 항목 및 결과
2.1.3.3 Pagerduty integration
Pagerduty는 DevOps상의 오류가 있을시 알람기능을 제공하는 서비스입니다. 필요에 따라,
이메일, 문자, 전화서비스를 통해 오류 상황을 파악할 수 있으며, 오류에 대해 처리하는 기
능을 제공합니다. 전화 알람을 이용시에 국제전화로 전화가 걸려오며 Pagerduty 홈페이지에
서 각 오류 상황에 관한 로그기록을 확인할 수 있습니다. 서비스 연동 방식은 위에서 실습
한 Sauce Lab과 유사한 방식으로 API Access Key를 입력해 연동합니다. Pagerduty 홈페이지
회원가입을 한 뒤 필요 정보를 받아옵니다.
Step.1 Add-Toolchain을 통해 Pagerduty를 추가합니다.
Step.2 Tool-chain과 연동하기 위해 Pagerduty API Key를 가져옵니다. Pagerduty 회원 가입
후 Configuration – API Access 탭으로 이동합니다. API Access 탭은 Pagerduty Account
Owner만 확인 할 수 있습니다. 만일 이 계정에 여러 계정이 연동되어 있는 경우 Owner가
아닌 계정에서는 API Key에 대한 확인 권한이 없습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 33 of 69
그림. Pagerduty API Access Key 확인
Step.3 Create New API Key 버튼을 통해 API Key를 생성합니다. 초기에 API Key를 생성 했을
시 한번만 확인할 수 있으므로 향 후 사용이 필요할 시 따로 메모를 해 두고 사용하길 권장
드립니다. API Key에 대한 설명을 기입한 뒤 Create Key 버튼을 통해 생성합니다.
그림. API Key 생성
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 34 of 69
그림. API Key 생성
Step.4 생성한 API Key를 복사해 Pagerduty에 기입하고 다른 필요 사항을 기입한 뒤 구성을
완료합니다. 가입자 이메일과 담당 전화번호를 정확히 입력해야 구성에 문제가 없으며 향후
이메일 및 전화번호를 통한 알람 정보로 사용됩니다.
그림. API Key 입력
위 과정을 통해 간단하게 Pagerduty를 연동할 수 있으며, 알람에 대한 설정, 리포트 기능,
계정 추가, API 관리, 정책 설정, 스케쥴링 및 분석은 Pagerduty 홈페이지에서 확인할 수 있
습니다. 알람은 문자, 전화, 이메일을 통해 받을 수 있으며 필요에 따라 선택해 알람을 받아
볼 수 있습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 35 of 69
그림. Pagerduty 하나의 계정에 등록된 User 목록
그림. 기존에 등록된 Services 목록
그림. 리포트 대시보드
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 36 of 69
그림. 알람 기능 설정(문자, 전화, 이메일)
2.1.3.4 Slack integration
DevOps methodology의 Culture에 해당하는 Slack은 협업을 위한 대화 툴입니다. Slack을 통
해 개발자 및 이해 관계자들을 그룹화 하여 이야기 나눌 수 있으며 간편한 파일 송 수신이
가능합니다. 또한 Toolchain의 Pipeline에서 구성한 Stage의 진행 상황을 채널에 실시간 알
람 받을 수 있으며 이를 통해 각 Stage가 정상적으로 통과했는지 오류가 나서 진행이 중단
됬는지 각 해당하는 관계자들과 정보를 공유할 수 있습니다. Slack의 경우 Webhook URL을
통해 알람을 수신합니다
Step.1 Add Tools 버튼을 통해 Slack을 추가합니다.
Step.2 Webhook URL을 가져오기 위해 홈페이지 (링크: https://api.slack.com/incoming-
webhooks)에 접속합니다. Incoming webhook integration 버튼을 클릭해 이동합니다.
그림. Webhook 가이드
Step.3 기존에 사용하던 Slack 채널이 있을시 로그인과 채널 정보 입력으로 Webhook URL
을 생성할 수 있습니다. Slack 계정과 채널이 없으실 경우 회원가입과 채널 생성 후 본 Step
을 진행하세요. 채널 정보 입력시 아래 그림과 같이 Slack 채널 목록을 확인할 수 있습니다.
알람을 받기 위한 채널을 선택한 뒤 Add Incoming Webhooks integration 버튼을 클릭합니
다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 37 of 69
그림. Webhook Slack 채널 연동
Step.4 생성된 Webhook URL을 복사해 Toolchain의 Slack에 붙여넣습니다.
그림. Webhook URL
그림. Webhook URL Slack에 입력
Step.5 Slack 클릭시 자동으로 연동된 Slack 채널로 이동하며 팀원들과 대화를 나눌 수 있습
니다. 또 Pipeline에서 진행한 Stage 단계에 대한 알람을 받아볼 수 있어 Stage 진행, 오류를
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 38 of 69
실시간으로 확인 할 수 있습니다. Pagerduty와 함께 이용할 경우 오류처리에 대한 해결 또
한 가능합니다.
그림. 연동된 Slack 화면(Pipeline 진행상태 표기)
Lab 2.2 Deploy application to IBM Infrastructure
이번 실습에서는 IBM Bluemix Infrastructure(구, SoftLayer)를 이용해서 가상머신을 생성한 뒤,
Java 어플리케이션을 배포하겠습니다. 현재(2017.3월 기준) IBM은 전세계적으로 32개의 데이
터센터를 보유하고 있으며, 글로벌 서비스를 고려하고 있을 시에 Bluemix Infra 사용을 고려
해 볼 수 있습니다. Bluemix Infra 사용자 포탈에서 가상머신 생성에 필요한 CPU, Memory,
Network, Storage를 설정하고 리눅스 운영체제를 설치한 뒤 어플리케이션을 배포하겠습니다.
2.2.1 Create Virtual Server with Cent OS
Step.1 Bluemix Infra 사용자 포탈(https://control.softlayer.com/)에 접속하고 로그인합니다.
기존에 Blumix Platform에서 생성하신 Bluemix 계정이 있을 시 로그인 화면 하단의 “Log in
with IBM id” 버튼을 클릭하여 추가 계정 생성 없이 로그인 하실 수 있습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 39 of 69
그림. Bluemix Infra 사용자 포탈 로그인 화면
그림. Bluemix Infra 고객 포탈
Step.2 로그인 후 Bluemix Infra 웹 콘솔의 좌측에 위치하고 있는 Device를 선택합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 40 of 69
그림. 포탈 내 Device 선택 화면
Step.3 가상 머신을 생성하기 위해 Virtual Server(Public node)의 Hourly 과금 모델을 선택
합니다.
그림. Virtual Server Public node 선택 화면
Step.4 샘플어플리케이션을 배포할 가상머신의 스펙을 정하고 ‘ADD TO ORDER’를 클릭합니
다. 선택한 가상머신 스펙은 아래와 같습니다.(본 시나리오에서 필자는 데모계정을 사용하므
로 실제 구매 비용에 있어서 차이가 있을 수 있습니다.)
가상머신 구성 스펙
• Location : Seoul (SEO01)
• CPU : 1 x 2.0 GHz Core
• RAM : 1 GB
• OS : CentOS 7.x - Minimal Install (64 bit)
• DISK : 25 GB (SAN)
• Uplink Port Speeds : 10 Mbps Public & Private Network Uplinks
그림. Datacenter 지역 설정
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 41 of 69
그림. CPU 모델 설정
그림. RAM 설정
그림. OS 설정
Step.5 구매화면으로 넘어갔을 시, ‘Advanced System Configuration – Host and Domain
Names’ 에서 향 후 사용할 도메인을 입력합니다. 선택한 스펙 옵션을 한번 더 확인한 뒤에
도메인 주소를 입력하고 Service Terms에 확인 체크를 한 뒤에 ‘Submit Order’를 눌러 구매
를 완료합니다. 본 시나리오에서는 도메인으로 devtest1.test.com을 입력하였습니다.
그림. 선택한 옵션 확인
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 42 of 69
그림. 도메인 설정
그림. Term 체크 및 구매
그림. 서버 구매 Confirmed 화면
구매가 완료되고 5~10분 경과 후에 생성된 가상머신을 확인합니다.
Step.6 구매한 서버 정보를 확인하기 위해 Customer 포탈 – Devices – Device List 를 클릭
합니다. 프로비저닝이 완료된 서버의 정보는 다음과 같습니다.
가상 서버 정보
• Device Name: devtest1.test.com
• Public IP : 169.56.126.29
• Private IP : 10.178.9.152
• Username : root
• Password : MQ3At6Kx
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 43 of 69
그림. Device Lisk 선택
그림. 가상머신 프로비저닝
그림. 프로비저닝 완료 후 가상머신 정보
2.2.2 Configure SSH to Virtual Machine
가상머신을 생성한 뒤 접속하기 위해서는 로그인 ID와 비밀번호가 필요합니다. 하지만
DevOps 상에서 툴체인을 활용해 자동 배포를 하기 위해서는 매번 로그인과 비밀번호를 기
입해서 접속하기에 번거로우므로 SSH를 생성한 뒤 Private Key를 서버측에 저장해두고,
Client 측(접속하는 측)의 Public key Pair up을 통해 자동으로 접속하도록 설정합니다.
Step.1 가상머신에 접속하기 위해서는 접속 프로그램이 필요합니다. 본 시나리오에서는
Putty 프로그램(다운로드 링크: https://putty.ko.softonic.com/)을 사용해 가상머신에 접속하도
록 하겠습니다. Putty 프로그램을 다운받으신 뒤 Public IP를 입력해 가상머신에 접속(Open)
합니다.
가장 처음 접속시에 Putty Security alert 창이 뜨지만 무시하고 ‘예’를 클릭합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 44 of 69
그림. Putty 프로그램에 가상 공인 아이피 입력
그림. 초기 접속시 Alert 화면
Step.2 초기 접속시, Bluemix Infra 가상정보를 입력하여 로그인 합니다. Username: root 와
Password: MQ3At6Kx를 입력합니다. (비밀번호는 입력시에 표기되지 않습니다.)
로그인 정보
Login as: root
root@169.56.126.29’s password: MQ3At6Kx
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 45 of 69
그림. 가상 서버 접속
Step.3 가상서버에 로그인 ID와 비밀번호 없이 접속하기 위해 SSH key pair를 생성합니다.
Ssh-keygen입력시 key를 저장할 디렉토리와 패스워드를 입력하게 되는데, 자동으로 접속하
기 위해서는 패스워드를 입력하면 안되므로 엔터를 눌러 다음으로 넘어갑니다. 계속 넘어가
다보면 SSH 키 생성이 완료됩니다.
SSH 키 생성하기
root@devtest1:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
그림. SSH 키 생성 화면
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 46 of 69
Step.4 SSH 키를 사용하기 위해서는 Authorized_key라는 디렉토리에 Public Key를 넣어주어
야 합니다. 그리고 접속하는 Client에서는 그에 페어가 되는 Private Key를 가지고 있으면 계
정 로그인 정보를 입력할 필요 없이 접속할 수 있습니다.
먼저 SSH를 확인하기 위해 다음과 같은 명령어를 입력합니다. 입력하면 ssh-rsa로 시작하는
Public 키를 확인할 수 있습니다. 현재 서버측(가상머신)에서 키를 생성했고, 이전에 언급한
대로 접속하는 측(Client)에서는 Private 키를 가지면서 접속하려는 서버의 Public 키와 매칭
해 접속을 허용하기 때문에, 접속하는 측(Bluemix DevOps의 파이프라인 내 Stage)에 Private
키를 넣어주고, 현재 접속해 있는 서버에 Public 키를 Authorized_key 폴더에 넣어주겠습니
다.
Public 키 확인
root@devtest1:~# cat ~/.ssh/id_rsa.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQC01frCFs30Dp7w7l+9Zvb6aluJ4/gWTMMF0zTirOZbK
xpym5D21EXdTFPFrAz/raVd2V+jGpT3qe9pmD5OvLrp+oZHtVsXLXAKAvUYY61m815EFzeWOq
Pyr9zRxaMz/weUcjyB0ZAj root@devtest1.test.com
그림. SSH Public key 확인
Private 키 확인
root@devtest1:~# cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtNX6whbN9A6e8O5fvWb2+mpbieP4FkzDBdM04qzmWx2p6vQk
YSGpliaB6O9wYYY+VFkQnhdffNDGGOOZ8EMWJXObpLLdDpGOiHRlZV0uOa4ClAPN
……………(생략)
oxiCwDlXslw2dHAeCFgsdbsYJ/abTgwIGixkqTN5DbJICz60qvS63g==
-----END RSA PRIVATE KEY-----
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 47 of 69
그림. SSH Private 키 확인
Step.5 생성한 Public key를 root/.ssh/경로에 있는 authorized_key 파일 안에 저장하겠습니
다.
Authorized_key 파일에 Public 키 저장
root@devtest1:~# cd ~/.ssh/
root@devtest1:~# cat ~/.ssh/id_rsa.pub >> authorized_keys
Step.6 authorized_keys에 Public 키가 잘 입력이 되었는지 확인합니다. 입력이 확인 된 경우
가상머신의 SSH 키 페어 설정이 끝났습니다. Ctrl +z 키를 통해 다시 명령창으로 복귀합니다.
Authorized_key 파일 확인
root@devtest1:~# vi authorized_keys
2.2.3 Create and Configure Stages
가상머신에 로그인 정보 없이 접속하기 위한 과정을 이전 단계에서 끝마쳤습니다. 이제
Petclinic 어플리케이션을 가상머신에 배포하기 위한 Open toolchain의 Pipeline을 설정하겠
습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 48 of 69
Step.1 가상머신에 배포하기 위해 Pipeline에서 Add Stage를 통해 Stage를 추가합니다. 이름
을 Deploy to Bluemix Infra로 설정하고, Input Type을 Build Artifacts로 설정합니다. 현재 이
전에 빌드된 아티팩트를 가상머신으로 배포하는 역할의 Stage를 구성하고 있습니다.
그림. 가상머신 배포 Stage 설정
Step.2 JOBS 탭에서 가상머신 배포를 위한 JOB을 추가합니다. 현재(17.4월)까지는 가상머신
배포를 위한 Deploy가 아직 업데이트 이전이기 때문에 특정 Deploy type을 선택하지 않고
쉘 스크립트를 통해 배포하기 위해 ADD JOB- Test를 선택합니다.
그림. 가상머신 배포를 위한 JOBS 설정
Step.3 Deploy 구성을 설정합니다. Tester Type을 Simple로 선택합니다. 이후 Test command
란에 아래의 내용을 복사에 붙여 넣습니다. 명령은 bash shell로 작성되었으며 SSH key를 통
해 가상머신에 계정 정보 입력 없이 접속합니다. 해당 가상머신에 접속한 뒤 환경 값으로
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 49 of 69
정의한 REMOTE_COMMAND 값에 따라 명령을 실행하는 내용을 포함합니다.
가상머신 배포를 위한 Deploy Script
#!/bin/bash
SSH_KEY_FILE="$(mktemp)"
SSH_OPTIONS="-o PreferredAuthentications=publickey -o
StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i
$SSH_KEY_FILE"
SSH_USER="root"
echo "$SSH_KEY" > "$SSH_KEY_FILE"
for SERVER in ${SERVERS};
do
echo "server: $SERVER"
scp $SSH_OPTIONS $TARGET $SSH_USER@$SERVER:/tmp/
echo "eval $REMOTE_COMMAND" | ssh $SSH_OPTIONS $SSH_USER@$SERVER
2>/dev/null
echo $?
done
rm "$SSH_KEY_FILE"
그림. Deploy Script 작성
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 50 of 69
스크립트를 살펴보겠습니다. 환경값에서 실습에 사용할 서버를 공인 IP 정의한 정보를 가져
옵니다. PetClinic 어플리케이션을 빌드 한 결과물인 .war 파일을 서버의 임시폴더인 /tmp/에
저장하고 이후 REMOTE_COMMAND에서 정의한 위치에 .war을 압축해제합니다.
for SERVER in ${SERVERS};
do
echo "server: $SERVER"
scp $SSH_OPTIONS $TARGET $SSH_USER@$SERVER:/tmp/
echo "eval $REMOTE_COMMAND" | ssh $SSH_OPTIONS $SSH_USER@$SERVER
2>/dev/null
echo $?
done
Step.4 다음으로 쉘스크립트에서 정의한 값에 대한 세부 사항을 기입하기 위해
ENVIRONMENT PROPERTIES 탭으로 이동합니다. ADD PROPERTY를 통해 환경 값을 정의하
고 관련 내용을 기입할 수 있습니다. Text Area Property를 선택하실 경우 장문의 내용을 기
입하시기에 편리합니다.
그림. 환경 값 입력
Step.5 좌측에 { }안에 들어 있는 TARGET, SERVERS, SSH_KEY, REMOTE_COMMAND를 입력하
고 우측란에 해당하는 값을 입력합니다.
• TARGET: Petclinic 어플리케이션 빌드 후 결과물인 .war 파일을 가르키며 이후 bash
shell에 따라 가상머신의 /tmp/폴더로 전송합니다.
spring-petclinic-1.4.2.war
• SERVERS: 서버 IP마다 한칸씩 띄워서 기입함으로써 여러개의 서버 IP를 입력하실 수
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 51 of 69
도 있습니다.
169.56.126.29 (각자 생성한 가상머신 공인 IP 입력)
• SSH_KEY: ssh-keygen을 통해 생성한 Private Key값을 입력합니다.
(현재 가상머신에 접속해서 ssh key값을 생성하지 않았으므로 아래는 ssh key 값 생
성 이후 기입하는 란이라는 이해만 하고 일단 목록만 만든 뒤 넘어갑니다.)
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAuo43bUqYPx//h7OmtriHCx/dn1HS+DVEvG9tVSlSHHM7AkQj
qeeKgjn253QmCiGeYzkvJns/0fQD3DfAATZtSY8afaEOdUN0C8HSViU+PoUw54HW
……………………………………………………………(생략)
3LiUz+3PIzm88AhoVvAWRw6QYMnSTTx1QJ+S86DAXsQXdApcThph
-----END RSA PRIVATE KEY-----
• REMOTE_COMMAND: Petclinic 경로에 따라 어플리케이션을 운영하기 위한 Tomcat
을 중지한 뒤 빌드한 .war 파일을 적용한 뒤 Tomcat을 재시작하는 명령을 포함하고
있습니다.
/opt/apache-tomcat-8.5.13/bin/shutdown.sh
rm -rf /opt/petclinic/webapp
unzip -q /tmp/spring-petclinic-1.4.2.war -d /opt/petclinic/webapp
/opt/apache-tomcat-8.5.13/bin/startup.sh
값을 입력 후 SAVE 버튼을 통해 저장합니다.
그림. 환경 값 입력
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 52 of 69
2.2.4 Install and configure JDK and Tomcat
Jave 어플리케이션을 가상머신에서 구동하고 조작하기 위해 JDK를 설치하고 이를 웹서비스
하기 위한 Tomcat을 설치합니다.
Step.1 아래와 같은 명령어를 입력해 JDK와 Tomcat을 설치합니다. (JDK와 Tomcat의 경우
버전이 지속적으로 업그레이드 되므로 가장 최신 버전을 설치해서 사용하시면 됩니다. 이
경우 Deploy to IaaS Stage의 환경변수에서 Tomcat의 이름을 버전에 맞게 수정해 주어야 합
니다.)
JDK 설치 (버전에 따라 설치 명령어가 바뀔 수 있음)
yum install java-1.8.0-openjdk-devel.x86_64
JDK 설치 확인
rpm -qa java*jdk-devel
javac -version
그림. 설치한 JDK 버전 확인
Tomcat을 설치할 경우 ~/opt/ 경로 아래에 설치합니다. 현재 경로에 상관없이 아래 명령어
를 통해 ~/opt/ 경로로 이동하고 Tomcat을 설치합니다.
Tomcat 설치 (버전에 따라 설치 명령어가 바뀔 수 있음)
cd
cd ..
cd opt
wget http://mirror.apache-kr.org/tomcat/tomcat-8/v8.5.13/bin/apache-
tomcat-8.5.13.tar.gz
Tomcat 압축 해제 (버전에 따라 해제 명령어가 바뀔 수 있음)
tar -zxf apache-tomcat-8.5.13.tar.gz
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 53 of 69
그림. Tomcat 설치 후 압축 풀기
추가적으로, 빌드 후 생성된 .war 파일을 압축 해제하고 그 파일을 통해 웹서비스에 필요한
파일을 구성해야 하기 때문에 .war 파일 압축해제를 위한 모듈을 설치합니다.
Unzip 모듈 설치
yum install unzip
그림. Unzip 모듈 설치
Step.2 Petclinic을 서비스하기 위한 폴더를 생성합니다. 아래의 명령어를 통해 폴더를 생성
합니다. (~/opt/petclinic/webapp/의 형태로 폴더 생성)
~/opt/petclinic/webapp/ 경로의 폴더 생성 (현재 /opt/에 있다고 가정 )
mkdir petclinic
cd petclinic
mkdir webapp
그림. Petclinic과 webapp 폴더 생성
Step.3 PetClinic 어플리케이션의 가상머신으로의 배포를 확인하기 위해 처음에 빌드했던 어
플리케이션 아티팩트를 Drag & Drop 형태로 새로만든 Stage에 Input 합니다. Pipeline에서는
1) 순차적으로 진행하는 방식과 2)아티팩트를 원하는 Stage에 직접 넣어주어 해당 Stage만
실행의 2가지 방식을 제공합니다.
이 결과 Build 스테이지에서 빌드한 .war 파일이 ~/tmp/ 경로로 전송되고 Step.2에서 생성
한 ~/opt/petclinic/webapp/ 경로에 자동으로 압축 해제됩니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 54 of 69
그림. Build 12 아티팩트를 가상머신 구성 Stage로 인풋
그림. 가상머신 성공 Log 기록 확인
Step.4 Deploy to IaaS 스테이지가 문제가 없이 진행 될 경우 명령어에 따라 Tomcat이 시작
됩니다. ‘가상머신의 IP:8080’ 를 주소창에 입력해봅니다. 아직까지 Tomcat의 웹화면 경로를
Petclinic 어플리케이션으로 변경하지 않았으므로 Tomcat 설치시의 기본 화면이 확인됩니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 55 of 69
그림. 기본 Tomcat 웹화면
Step.5 Tomcat이 설치된 경로로 이동해 기본 설정된 Tomcat의 웹화면 경로를 변경합니다.
아래의 경로로 이동합니다.
경로 이동
~/opt/apache-tomcat-8.5.13/conf
그림. /conf 폴더
Step.6 Server.xml 파일을 열어 기본 Tomcat 웹화면으로 향하는 경로를 Petclinic 경로로 변
경합니다.
Server.xml 파일 열람
vi server.xml
Step.7 server.xml 파일의 가장 아래 부분에서 다음과 같은 코드를 찾고
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 56 of 69
그림. 기본 localhost 경로 정보
그 바로 하단에 아래의 코드를 추가 기입합니다. 다음의 코드는 기존의 Tomcat 기본 화면을
웹화면으로 띄우는 경로를 Pipeline을 통해 배포하고 .war을 압축해제한 Petclinc 의 웹화면
을 띄우도록 ~/opt/petclinic/webapp 경로로 바꿔줍니다.
~/opt/petclinic/webapp로 경로 변경 설정
<Context docBase="/opt/petclinic/webapp" path=""
reloadable="false" />
완성된 server.xml의 코드는 아래와 같습니다.
수정 후 server.xml 코드
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="/opt/petclinic/webapp" path=""
reloadable="false" />
<!-- SingleSignOn valve, share authentication between web
applications
Documentation at: /docs/config/valve.html -->
그림. /opt/petclinic/webapp 경로 변경 코드 추가
Step.8 위 사항을 저장합니다. 다음의 순서대로 키보드를 터치 및 기입합니다.
ESC + : + wq + Enter key 입력
Step.9 변경된 경로를 확인하기 위해 Tomcat을 재 시작합니다. 재시작하기 위해서는 1)
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 57 of 69
Deploy to IaaS 스테이지를 다시 한번 실행하거나 2) 아래의 경로로 이동해 직접 Tomcat을
중지하고 다시 재시작합니다. 2)번의 방법은 아래를 참조하세요
Tomcat 재시작을 위한 경로 이동
~/opt/apache-tomcat-8.5.13/bin
Tomcat 중지
./shutdown.sh
Tomcat 재시작
./startup.sh
그림. Tomcat 중지 및 재시작
Step.10 다시 한번 가상머신의 공인 ip:8080 주소를 확인합니다. 정상적으로 PetClinic 어플
리케이션이 표시되는 것을 확인할 수 있습니다.
그림. 8080포트에서 작동중인 Petclinic
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 58 of 69
+) Web server port change
PetClinic을 서비스하는 공인 IP의 기본 8080 포트를 원하는 포트로 변경하는 방법을 가이드
합니다.
Step.1 server.xml에 정의되어 있는 포트를 변경하기 위해 다음의 경로로 이동하고 파일을
열람합니다.
server.xml 경로로 이동
~/opt/apache-tomcat-8.5.13/conf
Server.xml 파일 열람
vi server.xml
Step.2 8080 포트로 설정되어 있는 다음의 내용을 찾고 이를 변경하려는 포트(e.g. 80포트)
로 변경하고 저장합니다.
변경 전 셋팅된 8080 포트
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
그림. 기본 설정인 8080포트
변경 후 셋팅된 80 포트
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
그림. 변경한 80포트
위 사항을 저장합니다. 다음의 순서대로 키보드를 터치 및 기입합니다.
ESC + : + wq + Enter key 입력
Step.3 Tomcat을 재시작함으로써 변경된 내용을 적용합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 59 of 69
Tomcat 재시작을 위한 경로 이동
~/opt/apache-tomcat-8.5.13/bin
Tomcat 중지
./shutdown.sh
Tomcat 재시작
./startup.sh
Step.4 가상머신 공인 IP:80 입력시 표시되는 PetClinic 웹화면을 확인합니다.
그림. 80포트의 Petclinic
Lab 2.3 Deploy application to IBM Container
이번 실습에서는 IBM에서 제공하는 IBM Container Services에 어플리케이션을 배포하겠습니
다. IBM은 Docker 기반의 컨테이너 서비스를 제공하며, 오케스트레이션 도구로 Docker
Swam과 Composer를 지원합니다. 현재 Beta 버전의 Kubernetes 또한 컨테이너 클러스터링
관리를 위해 사용해 보실 수 있습니다.
2.3.1 Create Stage for building Container Image
컨테이너에 어플리케이션을 배포하기 위해서는 사전 작업이 필요합니다. 기존의 어플리케이
션을 바로 배포할 수 없으며, ‘Image’라는 컨테이너 실행파일을 빌드 한 뒤 이를 실행시키는
여러 조건사항을 포함하고 있는 Dockerfile을 통해 어플리케이션을 컨테이너에 배포합니다.
결과적으로 1. Image 빌드 2. 빌드된 이미지 컨테이너에 배포해 어플리케이션 실행의 순서
를 거쳐 진행해야합니다. 첫번째로 Open toolchain에서 컨테이너 이미지를 빌드하기 위한
스테이지를 추가하겠습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 60 of 69
Step.1 위에서 실습하신 내용을 바탕으로 ADD Stage를 통해 스테이지를 추가합니다. Stage
이름을 Build Container Image로 명명하고, Input Type에 Build Artifact, Stage에 Build Stage,
Job에 Build를 선택합니다.
그림. 컨테이너 이미지 빌드 스테이지 생성
Step.2 JOB 탭에서 ADD JOB – Build를 선택한 뒤 Builder Type을 IBM Container Service로
선택합니다. Free trial 계정의 경우 하나의 Space에만 컨테이너를 배포할 수 있으므로 이전
에 컨테이너를 배포하신적이 있다면 해당 Space를 꼭 선택해야 합니다. 사용할
Organization, Space와 빌드할 이미지 이름을 입력하고 Build Script에 다음의 코드를 복사해
붙여 넣습니다. (이미지 이름 입력시 이름이 숫자로 시작할 경우 오류가 날 수 있습니다. e.g
170404DevOps)
Container Image Build Script
#!/bin/bash
log_and_echo "$LABEL" "Starting build script"
log_and_echo "$LABEL" "No unit tests cases have been checked in"
if [ -f Dockerfile ]; then
log_and_echo "$LABEL" "Building ${FULL_REPOSITORY_NAME}"
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 61 of 69
${EXT_DIR}/utilities/sendMessage.sh -l info -m "New container build
requested for ${FULL_REPOSITORY_NAME}"
# build image
BUILD_COMMAND=""
if [ "${USE_CACHED_LAYERS}" == "true" ]; then
BUILD_COMMAND="build --pull --tag ${FULL_REPOSITORY_NAME}
${WORKSPACE}"
ice_retry ${BUILD_COMMAND}
RESULT=$?
else
BUILD_COMMAND="build --no-cache --tag ${FULL_REPOSITORY_NAME}
${WORKSPACE}"
ice_retry ${BUILD_COMMAND}
RESULT=$?
fi
if [ $RESULT -ne 0 ]; then
log_and_echo "$ERROR" "Error building image"
ice_retry info
ice_retry images
${EXT_DIR}/print_help.sh
${EXT_DIR}/utilities/sendMessage.sh -l bad -m "Container build of
${FULL_REPOSITORY_NAME} failed. $(get_error_info)"
exit 1
else
log_and_echo "$SUCCESSFUL" "Container build of
${FULL_REPOSITORY_NAME} was successful"
${EXT_DIR}/utilities/sendMessage.sh -l good -m "Container build of
${FULL_REPOSITORY_NAME} was successful"
fi
else
log_and_echo "$ERROR" "Dockerfile not found in project"
${EXT_DIR}/utilities/sendMessage.sh -l bad -m "Failed to get
Dockerfile. $(get_error_info)"
exit 1
fi
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 62 of 69
echo "IMAGE_NAME=${FULL_REPOSITORY_NAME}" >>
$ARCHIVE_DIR/build.properties
IBM Container는 Docker 기반의 컨테이너 서비스를 제공하고 있으며, Docker Image는
Dockerfile에서 포함하고 있는 배포방식을 통해 이미지가 빌드 됩니다. 본 시나리오에서 사
용하는 Petclinic 어플리케이션은 Dockerfile을 포함하고 있으므로 추가적으로 Dockerfile을
생성 및 설정하실 필요 없이 사용하실 수 있습니다.
Step.3 Stage를 실행시키고 로그기록을 확인합니다. Devtest170404 이름의 이미지가 생성된
것을 확인할 수 있습니다.
그림. 컨테이너 이미지 빌드 성공
2.3.2 Create Stage for Deploying application to IBM Container
어플리케이션을 IBM Container에 배포하기 위해 Delivery Pipeline에서 Stage를 추가해 설정
하겠습니다. Docker 기반의 컨테이너에 배포해 운영하기 위해서는 Docker Image가 필요합
니다. 직전에 컨테이너 이미지를 빌드한 결과물 아티팩트를 인풋 트리거로 사용합니다.
Docker 이미지는 실행파일로 이해할 수 있으며 배포시에 실행되어 어플리케이션이 동작한
다고 이해할 수 있습니다.
Step.1 ADD Stage를 통해 컨테이너 배포를 위한 스테이지를 추가합니다. Stage 이름을
Deploy to IBM Container로 변경, Input Type을 Build Artifacts로 설정하고 Staging은 이전에
생성한 Build Container Image로 선택합니다. Build Artifacts는 처음 코드가 배포 된 후 어플
리케이션을 빌드한 결과물입니다. 이 결과물을 이전에 클라우드 파운드리에 배포한 것과 같
이 IBM 컨테이너에도 배포해야 하므로 그 결과물을 Input 해 주도록 설정합니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 63 of 69
그림. 새로운 Stage 추가 및 설정
Step.2 JOBS 탭으로 이동하여 ADD JOBS – Deploy를 선택해 배포를 위한 스테이지 설정 화
면을 불러옵니다.
그림. JOBS 추가
Step.3 Deployer Type을 IBM Bluemix Containers on Bluemix로 변경합니다. 어플리케이션을
배포할 Organization, Space, 어플리케이션 이름 및 포트를 설정할 수 있습니다.
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 64 of 69
그림. 컨테이너 Stage 구성
Step.4 배포 스크립트는 IBM Containers On Bluemix 선택시 자동 값으로 주어지는 코드를
사용합니다. 코드가 없을시에는 하단의 코드를 사용합니다.
#!/bin/bash
echo -e "${label_color}Starting deployment script${no_color}"
git_retry clone https://github.com/Osthanes/deployscripts.git
deployscripts
/bin/bash deployscripts/deploycontainer.sh
RESULT=$?
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 65 of 69
if [ -f "${DEPLOY_PROPERTY_FILE}" ]; then
source "$DEPLOY_PROPERTY_FILE"
fi
if [ $RESULT -ne 0 ]; then
echo -e "${red}Executed failed or had warnings ${no_color}"
${EXT_DIR}/print_help.sh
exit $RESULT
fi
echo -e "${green}Execution complete${no_label}"
Step.5 Stage를 실행하고 컨테이너 이미지 빌드와 IBM Container에 배포 되는지 Pipeline과
Log를 통해 확인합니다. 로그기록을 통해 6분전에 컨테이너 이미지가 레파지토리에 갱신된
것 또한 확인할 수 있습니다.
그림. 컨테이너 이미지 배포 확인
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 66 of 69
그림. 컨테이너 이미지 빌드 및 배포 성공
Step.6 Bluemix 대시보드에서 생성된 컨테이너를 확인할 수 있으며 80포트를 클릭할 시
PetClinic 어플리케이션에 접근할 수 있습니다. 포트는 변경 가능하고 Vulnerability Advisor
기능으로 컨테이너 이미지 검사 서비스를 통해 결과를 리포팅 받을 수 있습니다.
그림. 컨테이너 동작
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 67 of 69
그림. 오픈툴체인을 활용한 CF, 컨테이너, 가상머신 배포 파이프라인
© IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session
Day1: DevOps & Deployment configuration
Page 68 of 69
© Copyright IBM Corporation 2017
IBM Korea Corporation
Gukjegeumyung-ro
Seoul, Yeongdeungpo-gu
TEL : (02)3781-7500
www.ibm.com/kr
Produced in the Korea IBM Cloud service
All rights reserved
Mar 2017
IBM, the IBM logo, and ibm.com are trademarks of International Business Machines Corp., registered in
many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other
companies. A current list of IBM trademarks is available on the web at “Copyright and trademark
information” at ibm.com/legal/copytrade.shtml
This document is current as of the initial date of publication and may be changed by IBM at anytime. Not
all offerings are available in every country in which IBM operates.
THE INFORMATION IN THIS DOCUMENT IS PROVIDED "AS IS" WITHOUT ANY WARRANTY,
EXPRESS OR IMPLIED, INCLUDING WITHOUT ANY WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND ANY WARRANTY OR CONDITION OF NON-INFRINGEMENT.
IBM products are warranted according to the terms and conditions of the agreements under which they are
provided.

More Related Content

Similar to IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0

Bluemix meetup seoul 1st (bluemix + io t) v1.1 (20150714 kt hwang)
Bluemix meetup seoul 1st (bluemix + io t) v1.1 (20150714 kt hwang)Bluemix meetup seoul 1st (bluemix + io t) v1.1 (20150714 kt hwang)
Bluemix meetup seoul 1st (bluemix + io t) v1.1 (20150714 kt hwang)Kyoungtae (KT) Hwang
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디소라 정
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSAVMware Tanzu Korea
 
SpeedMIS v6 소개
SpeedMIS v6 소개SpeedMIS v6 소개
SpeedMIS v6 소개Wonbae Jung
 
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...Amazon Web Services Korea
 
WeAreDevelopers_micro_frontend_framework.pdf
WeAreDevelopers_micro_frontend_framework.pdfWeAreDevelopers_micro_frontend_framework.pdf
WeAreDevelopers_micro_frontend_framework.pdfjaneSim13
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)Amazon Web Services Korea
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가VMware Tanzu Korea
 
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원BESPIN GLOBAL
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
Why container ?
Why container ?Why container ?
Why container ?관무 류
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...Amazon Web Services Korea
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...Amazon Web Services Korea
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Nanha Park
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online SeriesAmazon Web Services Korea
 
Deployment techniques for cloud native
Deployment techniques for cloud nativeDeployment techniques for cloud native
Deployment techniques for cloud nativeAlex Jeong
 
Openshift 활용을 위한 Application의 준비, Cloud Native
Openshift 활용을 위한 Application의 준비, Cloud NativeOpenshift 활용을 위한 Application의 준비, Cloud Native
Openshift 활용을 위한 Application의 준비, Cloud Nativerockplace
 

Similar to IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0 (20)

Bluemix meetup seoul 1st (bluemix + io t) v1.1 (20150714 kt hwang)
Bluemix meetup seoul 1st (bluemix + io t) v1.1 (20150714 kt hwang)Bluemix meetup seoul 1st (bluemix + io t) v1.1 (20150714 kt hwang)
Bluemix meetup seoul 1st (bluemix + io t) v1.1 (20150714 kt hwang)
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
 
SpeedMIS v6 소개
SpeedMIS v6 소개SpeedMIS v6 소개
SpeedMIS v6 소개
 
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
 
WeAreDevelopers_micro_frontend_framework.pdf
WeAreDevelopers_micro_frontend_framework.pdfWeAreDevelopers_micro_frontend_framework.pdf
WeAreDevelopers_micro_frontend_framework.pdf
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가
 
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
Session 1. 디지털 트렌스포메이션의 핵심, 클라우드 마이그레이션 A to Z - 베스핀글로벌 이근우 위원
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
Why container ?
Why container ?Why container ?
Why container ?
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
 
Hiapp
HiappHiapp
Hiapp
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
 
Deployment techniques for cloud native
Deployment techniques for cloud nativeDeployment techniques for cloud native
Deployment techniques for cloud native
 
Openshift 활용을 위한 Application의 준비, Cloud Native
Openshift 활용을 위한 Application의 준비, Cloud NativeOpenshift 활용을 위한 Application의 준비, Cloud Native
Openshift 활용을 위한 Application의 준비, Cloud Native
 

Recently uploaded

오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료Softwide Security
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)Wonjun Hwang
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료Softwide Security
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdfssuserf8b8bd1
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 

Recently uploaded (6)

오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 

IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0

  • 1. Bluemix Hands on Day 1 – DevOps and Deployment Configuration Published at 2017/04/04 IBM Korea Cloud Service Author: Beomsik Kim
  • 2. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 1 of 69 Document History Document Location This is a snapshot of an on-line document. Paper copies are valid only on the day they are printed. Refer to the author if you are in any doubt about the currency of this document. The source of the document will be found in IBM Bluemix Revision History Date of this revision: Date of next revision (date) Revision No Revision Date Summary of Change Author Changes Marked 1 4-April-17 Initial version Beomsik Kim (IBM Cloud / beomskim@kr.ibm.com) Disclaimer LIMIT OF LIABILITY/DISCAIMER OF WARRANTY: THE AUTHOR MAKE NO REPRESENTATIONS OR WRRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETETENSS OF THE CONTETNS OF THIS WORK AND SPECIFICALLY DISCALIM ALL WARRANTIES, INCLUDING WITHOUT LIMITATION WRRANTIES OF FITNESS FOR A PARTICUALR PURPOSE. THE SOWFTWARE VERSION OR SOFTLAYER’S OFFERING MYA HAVE CHANGED OR DISAPPERAED BETWEEN WHEN THIS WORK WAS WRITTEN AND WHEN IT IS READ
  • 3. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 2 of 69 Table of Contents DAY ONE: DEVOPS AND DEPLOYMENT CONFIGURATION LAB 1.1 CREATE AND CONFIGURE OPEN TOOLCHAIN ........................................................ 4 1.1.1 Create Java application with Cloud Foundry app in Bluemix Catalog....................................4 1.1.2 Connect to enabled toolchain........................................................................................................6 LAB 2.1 DEPLOY APPLICATION TO CLOUD FOUNDRY BY CODE CHANGE ....................... 9 2.1.1 Change, Commit and push application code to GitHub deployed on Cloud FoundryError! Bookmark not defined. 2.1.2 Change the code...........................................................................................................................16 2.1.3 Add pluggable services combined to PetClinic application in Toolchain................................21 2.1.3.1 Sauce labs Integration..............................................................................................................22 2.1.3.2 Availability Monitoring integration ........................................................................................30 2.1.3.3 Pagerduty integration...............................................................................................................32 2.1.3.4 Slack integration.......................................................................................................................36 LAB 2.2 DEPLOY APPLICATION TO IBM INFRASTRUCTURE .............................................. 38 2.2.1 Create Virtual Server with Cent OS ..........................................................................................38 2.2.2 Configure SSH to Virtual machine.............................................................................................43 2.2.3 Create and Configure Stages ......................................................................................................47 2.2.4 Install and configure JDK and Tomcat......................................................................................52 +) Web server port Change..................................................................................................................57 LAB 2.3 DEPLOY APPLICATION TO IBM CONTAINER .......................................................... 59 2.3.1 Create Stage for building Container Image...............................................................................59 2.3.2 Create Stage for Deploying application to IBM Container......................................................62
  • 4. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 3 of 69 Day One: DevOps and Deployment Configuration 첫날에는 Java로 만들어진 PetClinic 샘플 앱을 생성해서 여러 타겟 서버에 배포하는 실습 을 해보겠습니다. IBM에서 제공하는 컴퓨팅 모델에는 베어메탈, 가상머신, 클라우드 파운드 리, 컨테이너, 오픈 휘스크가 있으며 필요에 따라 적절한 컴퓨팅 모델을 선택해서 사용하실 수 있습니다. Bluemix에서는 기본적으로 Node.js, Java, PHP, Go, Ruby, Python 등의 런타임을 제공하며 Cloud Foundry apps, Bolierplates 등을 통해 모바일, IoT, DB를 포함한 Java, Node.js 팩 등 빠르게 어플리케이션을 시작할 수도 있습니다. 그림 1. Bluemix Catalog 블루믹스 카탈로그를 클릭하시면 블루믹스 퍼블릭 모델에서 제공하는 모든 종류의 서비스 를 확인하실 수 있습니다. 첫날 실습을 위한 시나리오에서는 블루믹스 카탈로그 상에서 1)Java 샘플 어플리케이션을 생성하고어플리케이션을 배포하기 위한 IBM 툴인 2) Open Toolchain과 연동해 3) IBM에서 제공하는 클라우드 파운드리, 컨테이너 및 가상머신에 배포 하는 내용으로 이루어져 있습니다. 오늘 수업을 완료하시면 블루믹스의 다음 기능에 대해 다룰 수 있습니다. 1. Bluemix 카탈로그 내 필요한 어플리케이션 생성하기 2. 어플리케이션 배포를 위한 Open Toolchine 연동 및 구성하기 3. 어플리케이션 배포시 필요한 서비스 Fabric 구성하기 4. 어플리케이션 배포를 위한 타겟 서버(클라우드 파운드리, 컨테이너, 가상머신) 구성
  • 5. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 4 of 69 및 배포하기 5. 가상 머신 배포를 위한 Bluemix Infra에서 가상머신 주문하기 Lab 1.1 Create and Configure Open Toolchain 이 실습을 통해서, IBM Bluemix 카탈로그 내 Cloud Foundry apps를 이용하여 손쉽게 Java 어플리케이션을 생성하고, 향후 타겟 서버에 배포하기 위한 IBM DevOps 툴인 Open Toolchin을 연동해 보겠습니다. 1.1.1 Create Java application with Cloud Foundry app in Bluemix Catalog Step.1 IBM Bluemix 포탈에 로그인 한 뒤 홈페이지 우측 상단에 있는 Catalog를 클릭합니다. 이후 좌측 메뉴바에서 Cloud Foundry app을 클릭합니다. 그림. Bluemix 포탈 내 카탈로그 화면 Step.2 Cloud Foundry apps 탭에서 Liberty for Java 서비스를 클릭합니다. 이후 화면에서 어 플리케이션 생성을 위해 필요한 이름과 서비스 옵션을 선택합니다. 본 시나리오에서는 가 장 기본 디폴트 옵션으로 구성해 진행하겠습니다. 시나리오 진행을 위해 어플리케이션 이 름을 170330DevOps로 기입하고 Create 버튼을 클릭합니다. 기본 도메인은 IBM에서 제공 하는 mybluemix.net으로 설정됩니다.
  • 6. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 5 of 69 그림. Liberty for Java 정보 기입 화면 Step.3 다음 화면에서 어플리케이션 동작 여부를 확인 할 수 있으며, 잠시 뒤에 어플리케이 션이 동작합니다. Getting Started 화면에서는 클라우드 파운드리 앱인 Cloud Foundry CLI 컨 트롤을 위한 CLI 파일을 다운받으실 수 있으며, 샘플 테스트를 위해 코드를 다운받으실 수 있습니다. 어플리케이션 동작 여부를 확인 한 뒤, 여러 타겟 서버에 배포하기 위해 Toolchain을 연동하겠습니다. 왼쪽 사이드 메뉴바에서 Overview 탭을 클릭하여 이동합니다. 그림. 생성된 어플리케이션의 Overview 화면
  • 7. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 6 of 69 위 화면에서는 어플리케이션 생성시 선택한 스펙 옵션과 비용, 활동 내역을 확인할 수 있으 며, 웹 콘솔에서 바로 인스턴스, RAM에 대한 스펙을 클릭만으로 손쉽게 변경하실 수 있습니 다. 초록색의 Running 표시 옆의 https://170330devops.mybluemix.net/ URL을 클릭하실 경우 초 기에 설정되어 있는 샘플 Java 어플리케이션을 확인 하실 수 있습니다. 그림. Java 샘플 어플리케이션 웹 화면 Toolchain 연동을 위해 Overview 화면 우측 하단에 있는 Continuous delivery란의 Enable 버 튼을 클릭합니다. 1.1.2 Connect to enabled Toolchain Toolchain 또한 어디에 배포할 것인지, 어떤 추가 서비스 옵션을 가지고 구성할 것인지에 따 라 여러 종류가 있을 수 있고, 다양한 형태로 만들어 질 수 있습니다. 이처럼 사용하기 위한 고유의 Toolchain 정보를 확인하고 추가적인 옵션을 선택합니다. Step.1 어플리케이션이 위치할 Organization 위치를 선택하고, Toolchain 이름을 기입합니다. 기본적으로 값이 지정되어 있으며, 필요에 따라 변경할 수 있습니다. 기본 구성 • Git Hub Issues • Git Hub Repository • Orion Web IDE • Delivery Pipeline
  • 8. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 7 of 69 그림. 기 구성된 툴체인 서비스 및 옵션 구성 화면 Step.2 어플리케이션에 사용하기 위해 가져올 또는 앞으로 소스코드를 관리할 저장소의 위 치를 지정합니다. 새롭게 생성(New)하거나, 기존에 저장되어 있는 GitHub 내 소스코드를 복 제(Clone), Fork 및 기존 코드를 그대로 사용(Existing)하는 옵션을 제공합니다. 금번 시나리 오에서는 Java를 사용한 Pet Clinic 어플리케이션으로 툴체인 구성 및 배포를 실습한 것이므 로, Repository type: Clone 하고 다음의 GitHub URL 값을 사용합니다. Create 버튼을 클릭합 니다. URL: https://github.com/Beomskim/170329-HDCC-devops.git
  • 9. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 8 of 69 그림. Pet Clinic 소스가 저장된 Git Hub 레파지토리 그림. Pet Clinic Git Hub URL 입력
  • 10. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 9 of 69 Lab 2.1 Deploy application to Cloud Foundry by code change 구성된 서비스들의 기능을 확인하기 위해 Issues, GitHub, Eclipse Orion WebIDE, Delivery Pipeline을 클릭하여 탐색합니다. 그림. 샘플 Open Toolchain Toolchain 생성 후 웹화면에 기본 값으로 구성된 타일 모양의 서비스 4가지는 다음의 용도 를 가집니다. 1. Issues : GitHub의 이슈관리와 연결되어 있습니다. 코드 작업을 위한 작업 할당 및 스 케쥴링에 사용할 수 있습니다. 2. GitHub : 소스코드가 저장되거나 소스코드를 가져오는 저장소 입니다. URL을 통해 소 스코드를 복제하거나 Zip형태로 다운받아 사용할 수 있습니다. 3. Eclipse Orion WebIDE : 웹상에서 코드를 확인하고, 수정할 수 있는 기능을 제공합니 다. GitHub와 연결되어 있으며, 소스코드 수정시 Commit 기능과 Push 기능을 이용해 GitHub에 소스코드를 전달합니다. Push, Pull, Patch 방식을 통해 다른 개발 툴 e.g) Visual studio와 같은 코드 작성 툴과 병렬적으로 개발 후 코드 버전 관리를 할 수 있습니다. 4. Delivery Pipeline : 어플리케이션을 배포하는 기능을 제공합니다. 배포를 위한 빌드, 배포, 스테이징, 테스트, 프로덕션을 구성할 수 있습니다.
  • 11. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 10 of 69 그림. GitHub Issue 그림. GitHub 소스 레파지토리
  • 12. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 11 of 69 그림. Orion WebIDE Pet Clinic Java 코드 화면 그림. Delivery Pipeline 설정 전 화면 Cloud Foundry를 이용해 처음 Java 어플리케이션을 생성했을 때 주어진 URL (e.g https://170323devops.mybluemix.net/)에서 샘플 어플리케이션 웹 화면을 볼 수 있었습니다. 그 이유는 Cloud Foundry app을 생성 했을 때 기본적으로 Target 서버 (여기에서는 US South – https://api.ng.bluemix.net)에 배포되어 생성되도록 기본 설정이 됬기 때문입니다.(필
  • 13. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 12 of 69 요시, Target server 변경 가능) 여러분의 계정이 조금씩 과금되는 이유는 배포 후 바로 어플 리케이션이 Cloud Foundry 위에서 동작하기 때문입니다. Cloud Foundry apps를 통한 Java 어플리케이션 생성시 URL에서 확인한 샘플 어플리케이션 과 Open toolchain을 연동하면서 가져온 GitHub상의 Pet Clinic 어플리케이션은 다른 소스입 니다. 아직 Pet Clinic 어플리케이션을 Cloud Foundry에 배포하지 않았기 때문에 여전히 초 기 주어진 URL(https://170330devops.mybluemix.net/)상에는 기본 Java 샘플 어플리케이션이 동작하고 있습니다. 이번 실습에서는 1)Open Toolchian 상에서 Delivery Pipeline 기능을 이용해 소스코드를 Cloud Foundry로 배포함으로써 Pet Clinic 어플리케이션으로 변경된 웹화면을 확인하고 2) Eclipse Orion WebIDE를 통해 Pet Clinic Java 어플리케이션의 Html 상 문구를 변경한 뒤코 드를 저장 및 3) GitHub로 커밋후 푸시해 딜리버리 파이프라인을 통해 재 배포된 어플리케 이션을 확인해 보겠습니다. 2.1.1 Change, Commit and push application code to GitHub deployed on Cloud Foundry 이번 실습에 사용할 Pet Clinic 어플리케이션을 Delivery pipeline 기능을 이요해 Cloud Foundry에 배포함으로 기존에 확인하셨던 샘플 어플리케이션을 대체하겠습니다. 그림. 초기 앱 생성시 샘플 어플리케이션 화면 Step.1 Toolchain 의 Delivery Pipeline을 클릭하여 기 구성된 Build Stage를 찾습니다. Stage 우측 상단에 설정 버튼을 통해 Stage Configuration을 클릭하여 해당 스테이지 구성을 변경 합니다.
  • 14. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 13 of 69 그림. Stage 구성 변경 Step.2 Stage의 구성을 아래와 같이 변경합니다. Maven 빌드를 이용하고 Shell Script를 통해 서 빌드를 위한 커스터마이즈를 할 수 있습니다. 내용에는 향 후 실습을 위한 Dockerfile 카 피 내용이 포함되어 있습니다. 빌드 아카이브 디렉토리 설정과 테스트 보고서를 위한 파일 패턴 구성을 포함하였습니다. 그림. Build Stage 변경
  • 15. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 14 of 69 Step.3 Stage 구성 변경 후 시작버튼 클릭시 Build가 진행됩니다. Build가 완료되면 다음 단 계의 Stage로 넘어가며 이는 자동/메뉴얼 방식으로 변경이 가능합니다. Log 기록 화면을 통 해 Stage 작동 시간, 성공 여부, Log 기록에 대해 확인 할 수 있습니다. 그림. Build Stage 실행 후 Pass 그림. Build Stage 로그 Step.4 Deploy Stage의 구성을 확인하시면 Cloud Foundry로 배포되도록 기본 구성 및 스크 립트가 설정되어 있습니다. Target, Organization, Space 및 Application Name을 변경할 수 있습니다. 결론적으로 테스트를 위해서는 Build Stage의 스크립트의 조작 외에는 변경하지 않으셔도 무방합니다. 이전단계와 같이 Log 기록을 확인하실 수 있으며, Deploy Stage 아래 결과로 나오는 URL(예, http://170330devops.mybluemix.net/vets.html)을 클릭하시면 Pet Clinic이 기존의 Java 샘플 어플리케이션 대신 Cloud Foundry에 배포됨을 확인하실 수 있습 니다.
  • 16. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 15 of 69 그림. Deploy Stage 기본 설정 값 그림. Deploy Stage Pass 화면 및 URL 확인
  • 17. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 16 of 69 그림. Pet Clinic Java 어플리케이션 화면 2.1.2 Change the code Eclipse Orion WebIDE를 사용해 Cloud Foundry에 배포한 어플리케이션의 문구를 변경해 Git Hub로 Push할 준비를 하겠습니다. Step.1 Open Toolchain 화면에서 Eclipse Orion WebIDE를 클릭하고, 초기 PetClinic Web 화 면의 문구를 변경할 수 있는 messages.properties 파일을 클릭합니다. (경로: src/main/resources/messages/messages.properties) 그림. messages.properties 화면 Step.2 messages.properties 파일에서 Welcome 메세지(Welcome to ABC)를 Welcome to Petclinic으로 변경한 뒤 File-Save 버튼을 통해 변경 사항을 저장합니다.
  • 18. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 17 of 69 그림. messages.properties 화면 Step.2 기존의 문구를 IBM DevOps Code Commit Test로 변경합니다. Welcome-Welcome to ABC  Welcome-Welcome to Petclinic Step.3 좌측 상단 메뉴바의 File-Save를 통해 변경된 내용을 저장합니다. 그림. Code 변경사항 저장화면 Step.4 연필 모양 아래의 Git 버튼을 클릭하고 Git Hub 코드 푸시를 위한 메세지 작성 및 Commit을 진행합니다.
  • 19. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 18 of 69 그림. Git 버튼 그림. Git 푸시화면 이동 Step.5 변경 사항을 Git Hub 레파지토리에 푸시하기 위해서는 변경 사항에 대한 코멘트가 필요합니다. 코드 변경사항에 대한 코멘트 후 우측 상단의 Commit 버튼을 눌러 푸시 직전 단계로 리스트화 합니다. 그림. Commit 메세지란 및 변경사항 확인 탭 Step.6 Commit이 완료되면 왼쪽 화면의 Outgoing 부분에 저장된 Commit 리스트가 보입니 다. 여러개의 Commit이 있을 경우 선택적으로 GitHub로 푸시 할 수 있으며, 반대로 다른 곳에서 전송된 Commit의 경우 Incoming 란에 표시됩니다. GitHub 푸시를 위해 Change the tile 리스트를 선택한후 Push 버튼을 클릭합니다.
  • 20. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 19 of 69 그림. Commit에 대한 GitHub Push Push 버튼을 누르게 되면 처음에 연결된 GitHub 레파지토리로 변경된 소스코드가 반영되며 기존에 설정된 Delivery Pipeline에서 자동으로 Target 서버(US South)로 배포하도록 설정되 어 있습니다. 자동으로 배포가 되는것을 원치 않을시, Delivery Pipeline의 Build Stage에서 메 뉴얼로 빌드 및 배포 하도록 설정할 수도 있습니다. Delivery Pipeline에서 각 Stage 별 진행 상황과 완료 및 실패 여부를 확인 할 수 있습니다. 아래 사진에서 Commit 후 Push로 인해 src 디렉토리가 3분 전에 새로 갱신되었음을 확인 할 수 있습니다.
  • 21. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 20 of 69 그림. Push 후 GitHub 갱신된 화면 그림. GitHub 푸시 후 자동으로 Pipeline 실행되는 화면 그림. Cloud Foundry에 배포 성공 화면
  • 22. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 21 of 69 그림. PetClinic Welcome 메세지 변경 위 그림의 Deploy Stage의 하단에 있는 URL을 클릭할 시에 새롭게 배포된 어플리케이션의 변경 내용을 확인할 수 있습니다. 매번 배포할 때 마다 Build X 형태로 버전관리가 됩니다. 배포에 관한 로그 기록을 확인하고 싶을 시, ‘View logs and history’를 클릭합니다. 그림. 어플리케이션 배포 성공 로그 기록 화면 2.1.3 Add pluggable services combined to PetClinic application in Toolchain Cloud Foundry app의 장점은 Bluemix 위의 서비스들과 결합되어 다양한 서비스를 이용해 볼 수 있다는 점에 있습니다. 서비스들에는 IBM에서 제공하는 서비스 뿐만 아니라 3rd party 업체의 소프트웨어를 포함합니다. 이번 실습에서는 Toolchian 우측에 있는 Add Tools 버튼을 통해 다양한 서비스들을 추가해 연동해 보겠습니다. 금번 시나리오에서 진행할 서비스는 Sauce Labs, Availability Monitoring, PagerDuty, Slack입니다. 각 서비스들의 개요는 아래와 같습니다. 서비스 설명
  • 23. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 22 of 69 • Sauce Labs : Cross-Browser 웹사이트 테스트, 모바일 앱 테스트 • Availability Monitoring : 가용성 모니터링 및 개선 • PagerDuty : 실시간 이벤트 알림 전달(SMS, Call, email) • Slack : 전용화된 채널을 통해 실시간 메시징 및 커뮤니케이션 그림. 추가 가능한 서비스 목록(17.04 기준) 2.1.3.1 Sauce Labs Integration 기본적으로 툴체인에서 서비스를 추가 할 때, Open Toolchain에서는 추가하려는 서비스의 Access Key를 가져와 연동하는 방식을 제공합니다. Sauce Labs 홈페이지에서 Free trial 계정 을 생성한 뒤 Access Key을 받아 기입해 툴을 추가합니다. Step.1 Add Tool 버튼을 통해 Sauce Labs을 추가화면으로 이동한 뒤, 좌측의 Sauce Labs 홈 페이지 이동 버튼을 통해 이동합니다. 인증을 마치고 회원 가입을 완료합니다.
  • 24. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 23 of 69 그림. Sauce Labs 툴 추가 화면 그림. Sauce Labs 회원 가입 인증
  • 25. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 24 of 69 그림. Sauce Labs 대시보드 Step.2 좌측 하단의 계정 이름을 클릭, User Setting 을 클릭하여 아래로 내리면 Access Key 에 대한 정보를 확인하실 수 있습니다. 계정 비밀번호를 입력하시고 Access key를 복사해 Open toolchian의 API Key에 입력합니다. 이름의 경우 임의로 설정하실 수 없으며, Sauce Labs에서 기입하신 별칭을 입력하셔야 구성에 오류가 없습니다.
  • 26. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 25 of 69 그림. Sauce Labs Access Key 그림. Open toolchain 상 Access key 입력 그림. Sauce Labs 구성 완료 Step.3 Sauce Labs를 사용해 테스트 결과를 받아보려면 Delivery Pipeline에서 테스트를 위한 Stage가 있어야 합니다. Stage 구성을 위해 Delivery Pipeline에서 테스트 타입의 Stage를 추 가합니다. Input에서는 Build 단계의 아티펙트를 가져오는 기본 설정을 유지하고, JOBS 탭에 서 Tester Type을 Sauce Labs로 변경합니다. 이에 따른 Organization, Space 및 테스트 실행 명령을 지정한 뒤 저장합니다.
  • 27. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 26 of 69 그림. 테스트 Stage 구성 Step.4 배포하기 전에 테스트를 완료하기 위해 Sauce Labs 스테이지를 Drag & Drop으로 Build Stage 다음으로 이동 시킨 뒤 다시 한번 Build Stage를 실행해 Sauce Labs을 통한 테 스트 결과를 받아봅니다.
  • 28. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 27 of 69 그림. Sauce Labs Stage 구성 Step.5 Sauce Labs 연동이 완료되었습니다. Toolchain의 Sauce Labs 클릭해 이동 후 좌측의 New Manual Test 를 통해 테스트 할 타입을 선택 한 뒤 테스트를 진행합니다. Cloud Foundry에 배포했던 PetClinic URL을 입력하고, 인터넷 타입을 선택한 뒤 Start Session을 클 릭합니다. 그림. New Manual Test 클릭
  • 29. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 28 of 69 그림. 테스트 진행할 타입 선택 그림. 테스트 진행할 타입 선택 테스트 하고자 하는 URL을 입력해서 TEST를 진행하면 그 URL을 지속적으로 모니터링하고 로그값을 기록합니다. 현재 Free trial 상 동시에 모니터링 가능한 세션은 8개입니다. 테스트 운영이 끝나면 앤드유저가 접속하는 홈페이지에 대한 녹화된 화면을 확인할 수 있고 관련 로그값을 확인할 수 있습니다.
  • 30. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 29 of 69 그림. Manual Test Logs 그림. 테스트 결과 및 현재 진행 중인 세션 개수
  • 31. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 30 of 69 그림. 녹화된 Pet Clinic 홈페이지 2.1.3.2 Availability Monitoring integration Availability Monitoring은 Access Key가 없이 바로 연동이 가능합니다. Add Tools를 이용해 서비스를 추가하고 이를 확인합니다. 현재 관리중인 어플리케이션 목록을 확인할 수 있으며 가용성, 현재 상태와 사용량을 확인할 수 있습니다. ‘테스트 모두 보기’를 통해 세부적인 테 스트 내용을 확인하실 수 있습니다. Step.1 Add Tool을 통해 Availability Monitoring을 추가합니다. 그림. Availability Monitoring 형성 Step.2 Availability Monitoring로 현재 상태 및 테스트 결과를 확인하고 필요시 추가적으로 테스트를 구성합니다. 그림. 연결된 어플리케이션 목록
  • 32. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 31 of 69 그림. 사용 가능성 모니터링 화면
  • 33. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 32 of 69 그림. Availability Monitoring 세부 테스트 항목 및 결과 2.1.3.3 Pagerduty integration Pagerduty는 DevOps상의 오류가 있을시 알람기능을 제공하는 서비스입니다. 필요에 따라, 이메일, 문자, 전화서비스를 통해 오류 상황을 파악할 수 있으며, 오류에 대해 처리하는 기 능을 제공합니다. 전화 알람을 이용시에 국제전화로 전화가 걸려오며 Pagerduty 홈페이지에 서 각 오류 상황에 관한 로그기록을 확인할 수 있습니다. 서비스 연동 방식은 위에서 실습 한 Sauce Lab과 유사한 방식으로 API Access Key를 입력해 연동합니다. Pagerduty 홈페이지 회원가입을 한 뒤 필요 정보를 받아옵니다. Step.1 Add-Toolchain을 통해 Pagerduty를 추가합니다. Step.2 Tool-chain과 연동하기 위해 Pagerduty API Key를 가져옵니다. Pagerduty 회원 가입 후 Configuration – API Access 탭으로 이동합니다. API Access 탭은 Pagerduty Account Owner만 확인 할 수 있습니다. 만일 이 계정에 여러 계정이 연동되어 있는 경우 Owner가 아닌 계정에서는 API Key에 대한 확인 권한이 없습니다.
  • 34. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 33 of 69 그림. Pagerduty API Access Key 확인 Step.3 Create New API Key 버튼을 통해 API Key를 생성합니다. 초기에 API Key를 생성 했을 시 한번만 확인할 수 있으므로 향 후 사용이 필요할 시 따로 메모를 해 두고 사용하길 권장 드립니다. API Key에 대한 설명을 기입한 뒤 Create Key 버튼을 통해 생성합니다. 그림. API Key 생성
  • 35. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 34 of 69 그림. API Key 생성 Step.4 생성한 API Key를 복사해 Pagerduty에 기입하고 다른 필요 사항을 기입한 뒤 구성을 완료합니다. 가입자 이메일과 담당 전화번호를 정확히 입력해야 구성에 문제가 없으며 향후 이메일 및 전화번호를 통한 알람 정보로 사용됩니다. 그림. API Key 입력 위 과정을 통해 간단하게 Pagerduty를 연동할 수 있으며, 알람에 대한 설정, 리포트 기능, 계정 추가, API 관리, 정책 설정, 스케쥴링 및 분석은 Pagerduty 홈페이지에서 확인할 수 있 습니다. 알람은 문자, 전화, 이메일을 통해 받을 수 있으며 필요에 따라 선택해 알람을 받아 볼 수 있습니다.
  • 36. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 35 of 69 그림. Pagerduty 하나의 계정에 등록된 User 목록 그림. 기존에 등록된 Services 목록 그림. 리포트 대시보드
  • 37. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 36 of 69 그림. 알람 기능 설정(문자, 전화, 이메일) 2.1.3.4 Slack integration DevOps methodology의 Culture에 해당하는 Slack은 협업을 위한 대화 툴입니다. Slack을 통 해 개발자 및 이해 관계자들을 그룹화 하여 이야기 나눌 수 있으며 간편한 파일 송 수신이 가능합니다. 또한 Toolchain의 Pipeline에서 구성한 Stage의 진행 상황을 채널에 실시간 알 람 받을 수 있으며 이를 통해 각 Stage가 정상적으로 통과했는지 오류가 나서 진행이 중단 됬는지 각 해당하는 관계자들과 정보를 공유할 수 있습니다. Slack의 경우 Webhook URL을 통해 알람을 수신합니다 Step.1 Add Tools 버튼을 통해 Slack을 추가합니다. Step.2 Webhook URL을 가져오기 위해 홈페이지 (링크: https://api.slack.com/incoming- webhooks)에 접속합니다. Incoming webhook integration 버튼을 클릭해 이동합니다. 그림. Webhook 가이드 Step.3 기존에 사용하던 Slack 채널이 있을시 로그인과 채널 정보 입력으로 Webhook URL 을 생성할 수 있습니다. Slack 계정과 채널이 없으실 경우 회원가입과 채널 생성 후 본 Step 을 진행하세요. 채널 정보 입력시 아래 그림과 같이 Slack 채널 목록을 확인할 수 있습니다. 알람을 받기 위한 채널을 선택한 뒤 Add Incoming Webhooks integration 버튼을 클릭합니 다.
  • 38. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 37 of 69 그림. Webhook Slack 채널 연동 Step.4 생성된 Webhook URL을 복사해 Toolchain의 Slack에 붙여넣습니다. 그림. Webhook URL 그림. Webhook URL Slack에 입력 Step.5 Slack 클릭시 자동으로 연동된 Slack 채널로 이동하며 팀원들과 대화를 나눌 수 있습 니다. 또 Pipeline에서 진행한 Stage 단계에 대한 알람을 받아볼 수 있어 Stage 진행, 오류를
  • 39. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 38 of 69 실시간으로 확인 할 수 있습니다. Pagerduty와 함께 이용할 경우 오류처리에 대한 해결 또 한 가능합니다. 그림. 연동된 Slack 화면(Pipeline 진행상태 표기) Lab 2.2 Deploy application to IBM Infrastructure 이번 실습에서는 IBM Bluemix Infrastructure(구, SoftLayer)를 이용해서 가상머신을 생성한 뒤, Java 어플리케이션을 배포하겠습니다. 현재(2017.3월 기준) IBM은 전세계적으로 32개의 데이 터센터를 보유하고 있으며, 글로벌 서비스를 고려하고 있을 시에 Bluemix Infra 사용을 고려 해 볼 수 있습니다. Bluemix Infra 사용자 포탈에서 가상머신 생성에 필요한 CPU, Memory, Network, Storage를 설정하고 리눅스 운영체제를 설치한 뒤 어플리케이션을 배포하겠습니다. 2.2.1 Create Virtual Server with Cent OS Step.1 Bluemix Infra 사용자 포탈(https://control.softlayer.com/)에 접속하고 로그인합니다. 기존에 Blumix Platform에서 생성하신 Bluemix 계정이 있을 시 로그인 화면 하단의 “Log in with IBM id” 버튼을 클릭하여 추가 계정 생성 없이 로그인 하실 수 있습니다.
  • 40. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 39 of 69 그림. Bluemix Infra 사용자 포탈 로그인 화면 그림. Bluemix Infra 고객 포탈 Step.2 로그인 후 Bluemix Infra 웹 콘솔의 좌측에 위치하고 있는 Device를 선택합니다.
  • 41. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 40 of 69 그림. 포탈 내 Device 선택 화면 Step.3 가상 머신을 생성하기 위해 Virtual Server(Public node)의 Hourly 과금 모델을 선택 합니다. 그림. Virtual Server Public node 선택 화면 Step.4 샘플어플리케이션을 배포할 가상머신의 스펙을 정하고 ‘ADD TO ORDER’를 클릭합니 다. 선택한 가상머신 스펙은 아래와 같습니다.(본 시나리오에서 필자는 데모계정을 사용하므 로 실제 구매 비용에 있어서 차이가 있을 수 있습니다.) 가상머신 구성 스펙 • Location : Seoul (SEO01) • CPU : 1 x 2.0 GHz Core • RAM : 1 GB • OS : CentOS 7.x - Minimal Install (64 bit) • DISK : 25 GB (SAN) • Uplink Port Speeds : 10 Mbps Public & Private Network Uplinks 그림. Datacenter 지역 설정
  • 42. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 41 of 69 그림. CPU 모델 설정 그림. RAM 설정 그림. OS 설정 Step.5 구매화면으로 넘어갔을 시, ‘Advanced System Configuration – Host and Domain Names’ 에서 향 후 사용할 도메인을 입력합니다. 선택한 스펙 옵션을 한번 더 확인한 뒤에 도메인 주소를 입력하고 Service Terms에 확인 체크를 한 뒤에 ‘Submit Order’를 눌러 구매 를 완료합니다. 본 시나리오에서는 도메인으로 devtest1.test.com을 입력하였습니다. 그림. 선택한 옵션 확인
  • 43. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 42 of 69 그림. 도메인 설정 그림. Term 체크 및 구매 그림. 서버 구매 Confirmed 화면 구매가 완료되고 5~10분 경과 후에 생성된 가상머신을 확인합니다. Step.6 구매한 서버 정보를 확인하기 위해 Customer 포탈 – Devices – Device List 를 클릭 합니다. 프로비저닝이 완료된 서버의 정보는 다음과 같습니다. 가상 서버 정보 • Device Name: devtest1.test.com • Public IP : 169.56.126.29 • Private IP : 10.178.9.152 • Username : root • Password : MQ3At6Kx
  • 44. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 43 of 69 그림. Device Lisk 선택 그림. 가상머신 프로비저닝 그림. 프로비저닝 완료 후 가상머신 정보 2.2.2 Configure SSH to Virtual Machine 가상머신을 생성한 뒤 접속하기 위해서는 로그인 ID와 비밀번호가 필요합니다. 하지만 DevOps 상에서 툴체인을 활용해 자동 배포를 하기 위해서는 매번 로그인과 비밀번호를 기 입해서 접속하기에 번거로우므로 SSH를 생성한 뒤 Private Key를 서버측에 저장해두고, Client 측(접속하는 측)의 Public key Pair up을 통해 자동으로 접속하도록 설정합니다. Step.1 가상머신에 접속하기 위해서는 접속 프로그램이 필요합니다. 본 시나리오에서는 Putty 프로그램(다운로드 링크: https://putty.ko.softonic.com/)을 사용해 가상머신에 접속하도 록 하겠습니다. Putty 프로그램을 다운받으신 뒤 Public IP를 입력해 가상머신에 접속(Open) 합니다. 가장 처음 접속시에 Putty Security alert 창이 뜨지만 무시하고 ‘예’를 클릭합니다.
  • 45. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 44 of 69 그림. Putty 프로그램에 가상 공인 아이피 입력 그림. 초기 접속시 Alert 화면 Step.2 초기 접속시, Bluemix Infra 가상정보를 입력하여 로그인 합니다. Username: root 와 Password: MQ3At6Kx를 입력합니다. (비밀번호는 입력시에 표기되지 않습니다.) 로그인 정보 Login as: root root@169.56.126.29’s password: MQ3At6Kx
  • 46. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 45 of 69 그림. 가상 서버 접속 Step.3 가상서버에 로그인 ID와 비밀번호 없이 접속하기 위해 SSH key pair를 생성합니다. Ssh-keygen입력시 key를 저장할 디렉토리와 패스워드를 입력하게 되는데, 자동으로 접속하 기 위해서는 패스워드를 입력하면 안되므로 엔터를 눌러 다음으로 넘어갑니다. 계속 넘어가 다보면 SSH 키 생성이 완료됩니다. SSH 키 생성하기 root@devtest1:~# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. 그림. SSH 키 생성 화면
  • 47. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 46 of 69 Step.4 SSH 키를 사용하기 위해서는 Authorized_key라는 디렉토리에 Public Key를 넣어주어 야 합니다. 그리고 접속하는 Client에서는 그에 페어가 되는 Private Key를 가지고 있으면 계 정 로그인 정보를 입력할 필요 없이 접속할 수 있습니다. 먼저 SSH를 확인하기 위해 다음과 같은 명령어를 입력합니다. 입력하면 ssh-rsa로 시작하는 Public 키를 확인할 수 있습니다. 현재 서버측(가상머신)에서 키를 생성했고, 이전에 언급한 대로 접속하는 측(Client)에서는 Private 키를 가지면서 접속하려는 서버의 Public 키와 매칭 해 접속을 허용하기 때문에, 접속하는 측(Bluemix DevOps의 파이프라인 내 Stage)에 Private 키를 넣어주고, 현재 접속해 있는 서버에 Public 키를 Authorized_key 폴더에 넣어주겠습니 다. Public 키 확인 root@devtest1:~# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC01frCFs30Dp7w7l+9Zvb6aluJ4/gWTMMF0zTirOZbK xpym5D21EXdTFPFrAz/raVd2V+jGpT3qe9pmD5OvLrp+oZHtVsXLXAKAvUYY61m815EFzeWOq Pyr9zRxaMz/weUcjyB0ZAj root@devtest1.test.com 그림. SSH Public key 확인 Private 키 확인 root@devtest1:~# cat ~/.ssh/id_rsa -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAtNX6whbN9A6e8O5fvWb2+mpbieP4FkzDBdM04qzmWx2p6vQk YSGpliaB6O9wYYY+VFkQnhdffNDGGOOZ8EMWJXObpLLdDpGOiHRlZV0uOa4ClAPN ……………(생략) oxiCwDlXslw2dHAeCFgsdbsYJ/abTgwIGixkqTN5DbJICz60qvS63g== -----END RSA PRIVATE KEY-----
  • 48. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 47 of 69 그림. SSH Private 키 확인 Step.5 생성한 Public key를 root/.ssh/경로에 있는 authorized_key 파일 안에 저장하겠습니 다. Authorized_key 파일에 Public 키 저장 root@devtest1:~# cd ~/.ssh/ root@devtest1:~# cat ~/.ssh/id_rsa.pub >> authorized_keys Step.6 authorized_keys에 Public 키가 잘 입력이 되었는지 확인합니다. 입력이 확인 된 경우 가상머신의 SSH 키 페어 설정이 끝났습니다. Ctrl +z 키를 통해 다시 명령창으로 복귀합니다. Authorized_key 파일 확인 root@devtest1:~# vi authorized_keys 2.2.3 Create and Configure Stages 가상머신에 로그인 정보 없이 접속하기 위한 과정을 이전 단계에서 끝마쳤습니다. 이제 Petclinic 어플리케이션을 가상머신에 배포하기 위한 Open toolchain의 Pipeline을 설정하겠 습니다.
  • 49. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 48 of 69 Step.1 가상머신에 배포하기 위해 Pipeline에서 Add Stage를 통해 Stage를 추가합니다. 이름 을 Deploy to Bluemix Infra로 설정하고, Input Type을 Build Artifacts로 설정합니다. 현재 이 전에 빌드된 아티팩트를 가상머신으로 배포하는 역할의 Stage를 구성하고 있습니다. 그림. 가상머신 배포 Stage 설정 Step.2 JOBS 탭에서 가상머신 배포를 위한 JOB을 추가합니다. 현재(17.4월)까지는 가상머신 배포를 위한 Deploy가 아직 업데이트 이전이기 때문에 특정 Deploy type을 선택하지 않고 쉘 스크립트를 통해 배포하기 위해 ADD JOB- Test를 선택합니다. 그림. 가상머신 배포를 위한 JOBS 설정 Step.3 Deploy 구성을 설정합니다. Tester Type을 Simple로 선택합니다. 이후 Test command 란에 아래의 내용을 복사에 붙여 넣습니다. 명령은 bash shell로 작성되었으며 SSH key를 통 해 가상머신에 계정 정보 입력 없이 접속합니다. 해당 가상머신에 접속한 뒤 환경 값으로
  • 50. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 49 of 69 정의한 REMOTE_COMMAND 값에 따라 명령을 실행하는 내용을 포함합니다. 가상머신 배포를 위한 Deploy Script #!/bin/bash SSH_KEY_FILE="$(mktemp)" SSH_OPTIONS="-o PreferredAuthentications=publickey -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i $SSH_KEY_FILE" SSH_USER="root" echo "$SSH_KEY" > "$SSH_KEY_FILE" for SERVER in ${SERVERS}; do echo "server: $SERVER" scp $SSH_OPTIONS $TARGET $SSH_USER@$SERVER:/tmp/ echo "eval $REMOTE_COMMAND" | ssh $SSH_OPTIONS $SSH_USER@$SERVER 2>/dev/null echo $? done rm "$SSH_KEY_FILE" 그림. Deploy Script 작성
  • 51. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 50 of 69 스크립트를 살펴보겠습니다. 환경값에서 실습에 사용할 서버를 공인 IP 정의한 정보를 가져 옵니다. PetClinic 어플리케이션을 빌드 한 결과물인 .war 파일을 서버의 임시폴더인 /tmp/에 저장하고 이후 REMOTE_COMMAND에서 정의한 위치에 .war을 압축해제합니다. for SERVER in ${SERVERS}; do echo "server: $SERVER" scp $SSH_OPTIONS $TARGET $SSH_USER@$SERVER:/tmp/ echo "eval $REMOTE_COMMAND" | ssh $SSH_OPTIONS $SSH_USER@$SERVER 2>/dev/null echo $? done Step.4 다음으로 쉘스크립트에서 정의한 값에 대한 세부 사항을 기입하기 위해 ENVIRONMENT PROPERTIES 탭으로 이동합니다. ADD PROPERTY를 통해 환경 값을 정의하 고 관련 내용을 기입할 수 있습니다. Text Area Property를 선택하실 경우 장문의 내용을 기 입하시기에 편리합니다. 그림. 환경 값 입력 Step.5 좌측에 { }안에 들어 있는 TARGET, SERVERS, SSH_KEY, REMOTE_COMMAND를 입력하 고 우측란에 해당하는 값을 입력합니다. • TARGET: Petclinic 어플리케이션 빌드 후 결과물인 .war 파일을 가르키며 이후 bash shell에 따라 가상머신의 /tmp/폴더로 전송합니다. spring-petclinic-1.4.2.war • SERVERS: 서버 IP마다 한칸씩 띄워서 기입함으로써 여러개의 서버 IP를 입력하실 수
  • 52. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 51 of 69 도 있습니다. 169.56.126.29 (각자 생성한 가상머신 공인 IP 입력) • SSH_KEY: ssh-keygen을 통해 생성한 Private Key값을 입력합니다. (현재 가상머신에 접속해서 ssh key값을 생성하지 않았으므로 아래는 ssh key 값 생 성 이후 기입하는 란이라는 이해만 하고 일단 목록만 만든 뒤 넘어갑니다.) -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAuo43bUqYPx//h7OmtriHCx/dn1HS+DVEvG9tVSlSHHM7AkQj qeeKgjn253QmCiGeYzkvJns/0fQD3DfAATZtSY8afaEOdUN0C8HSViU+PoUw54HW ……………………………………………………………(생략) 3LiUz+3PIzm88AhoVvAWRw6QYMnSTTx1QJ+S86DAXsQXdApcThph -----END RSA PRIVATE KEY----- • REMOTE_COMMAND: Petclinic 경로에 따라 어플리케이션을 운영하기 위한 Tomcat 을 중지한 뒤 빌드한 .war 파일을 적용한 뒤 Tomcat을 재시작하는 명령을 포함하고 있습니다. /opt/apache-tomcat-8.5.13/bin/shutdown.sh rm -rf /opt/petclinic/webapp unzip -q /tmp/spring-petclinic-1.4.2.war -d /opt/petclinic/webapp /opt/apache-tomcat-8.5.13/bin/startup.sh 값을 입력 후 SAVE 버튼을 통해 저장합니다. 그림. 환경 값 입력
  • 53. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 52 of 69 2.2.4 Install and configure JDK and Tomcat Jave 어플리케이션을 가상머신에서 구동하고 조작하기 위해 JDK를 설치하고 이를 웹서비스 하기 위한 Tomcat을 설치합니다. Step.1 아래와 같은 명령어를 입력해 JDK와 Tomcat을 설치합니다. (JDK와 Tomcat의 경우 버전이 지속적으로 업그레이드 되므로 가장 최신 버전을 설치해서 사용하시면 됩니다. 이 경우 Deploy to IaaS Stage의 환경변수에서 Tomcat의 이름을 버전에 맞게 수정해 주어야 합 니다.) JDK 설치 (버전에 따라 설치 명령어가 바뀔 수 있음) yum install java-1.8.0-openjdk-devel.x86_64 JDK 설치 확인 rpm -qa java*jdk-devel javac -version 그림. 설치한 JDK 버전 확인 Tomcat을 설치할 경우 ~/opt/ 경로 아래에 설치합니다. 현재 경로에 상관없이 아래 명령어 를 통해 ~/opt/ 경로로 이동하고 Tomcat을 설치합니다. Tomcat 설치 (버전에 따라 설치 명령어가 바뀔 수 있음) cd cd .. cd opt wget http://mirror.apache-kr.org/tomcat/tomcat-8/v8.5.13/bin/apache- tomcat-8.5.13.tar.gz Tomcat 압축 해제 (버전에 따라 해제 명령어가 바뀔 수 있음) tar -zxf apache-tomcat-8.5.13.tar.gz
  • 54. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 53 of 69 그림. Tomcat 설치 후 압축 풀기 추가적으로, 빌드 후 생성된 .war 파일을 압축 해제하고 그 파일을 통해 웹서비스에 필요한 파일을 구성해야 하기 때문에 .war 파일 압축해제를 위한 모듈을 설치합니다. Unzip 모듈 설치 yum install unzip 그림. Unzip 모듈 설치 Step.2 Petclinic을 서비스하기 위한 폴더를 생성합니다. 아래의 명령어를 통해 폴더를 생성 합니다. (~/opt/petclinic/webapp/의 형태로 폴더 생성) ~/opt/petclinic/webapp/ 경로의 폴더 생성 (현재 /opt/에 있다고 가정 ) mkdir petclinic cd petclinic mkdir webapp 그림. Petclinic과 webapp 폴더 생성 Step.3 PetClinic 어플리케이션의 가상머신으로의 배포를 확인하기 위해 처음에 빌드했던 어 플리케이션 아티팩트를 Drag & Drop 형태로 새로만든 Stage에 Input 합니다. Pipeline에서는 1) 순차적으로 진행하는 방식과 2)아티팩트를 원하는 Stage에 직접 넣어주어 해당 Stage만 실행의 2가지 방식을 제공합니다. 이 결과 Build 스테이지에서 빌드한 .war 파일이 ~/tmp/ 경로로 전송되고 Step.2에서 생성 한 ~/opt/petclinic/webapp/ 경로에 자동으로 압축 해제됩니다.
  • 55. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 54 of 69 그림. Build 12 아티팩트를 가상머신 구성 Stage로 인풋 그림. 가상머신 성공 Log 기록 확인 Step.4 Deploy to IaaS 스테이지가 문제가 없이 진행 될 경우 명령어에 따라 Tomcat이 시작 됩니다. ‘가상머신의 IP:8080’ 를 주소창에 입력해봅니다. 아직까지 Tomcat의 웹화면 경로를 Petclinic 어플리케이션으로 변경하지 않았으므로 Tomcat 설치시의 기본 화면이 확인됩니다.
  • 56. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 55 of 69 그림. 기본 Tomcat 웹화면 Step.5 Tomcat이 설치된 경로로 이동해 기본 설정된 Tomcat의 웹화면 경로를 변경합니다. 아래의 경로로 이동합니다. 경로 이동 ~/opt/apache-tomcat-8.5.13/conf 그림. /conf 폴더 Step.6 Server.xml 파일을 열어 기본 Tomcat 웹화면으로 향하는 경로를 Petclinic 경로로 변 경합니다. Server.xml 파일 열람 vi server.xml Step.7 server.xml 파일의 가장 아래 부분에서 다음과 같은 코드를 찾고 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
  • 57. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 56 of 69 그림. 기본 localhost 경로 정보 그 바로 하단에 아래의 코드를 추가 기입합니다. 다음의 코드는 기존의 Tomcat 기본 화면을 웹화면으로 띄우는 경로를 Pipeline을 통해 배포하고 .war을 압축해제한 Petclinc 의 웹화면 을 띄우도록 ~/opt/petclinic/webapp 경로로 바꿔줍니다. ~/opt/petclinic/webapp로 경로 변경 설정 <Context docBase="/opt/petclinic/webapp" path="" reloadable="false" /> 완성된 server.xml의 코드는 아래와 같습니다. 수정 후 server.xml 코드 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/opt/petclinic/webapp" path="" reloadable="false" /> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> 그림. /opt/petclinic/webapp 경로 변경 코드 추가 Step.8 위 사항을 저장합니다. 다음의 순서대로 키보드를 터치 및 기입합니다. ESC + : + wq + Enter key 입력 Step.9 변경된 경로를 확인하기 위해 Tomcat을 재 시작합니다. 재시작하기 위해서는 1)
  • 58. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 57 of 69 Deploy to IaaS 스테이지를 다시 한번 실행하거나 2) 아래의 경로로 이동해 직접 Tomcat을 중지하고 다시 재시작합니다. 2)번의 방법은 아래를 참조하세요 Tomcat 재시작을 위한 경로 이동 ~/opt/apache-tomcat-8.5.13/bin Tomcat 중지 ./shutdown.sh Tomcat 재시작 ./startup.sh 그림. Tomcat 중지 및 재시작 Step.10 다시 한번 가상머신의 공인 ip:8080 주소를 확인합니다. 정상적으로 PetClinic 어플 리케이션이 표시되는 것을 확인할 수 있습니다. 그림. 8080포트에서 작동중인 Petclinic
  • 59. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 58 of 69 +) Web server port change PetClinic을 서비스하는 공인 IP의 기본 8080 포트를 원하는 포트로 변경하는 방법을 가이드 합니다. Step.1 server.xml에 정의되어 있는 포트를 변경하기 위해 다음의 경로로 이동하고 파일을 열람합니다. server.xml 경로로 이동 ~/opt/apache-tomcat-8.5.13/conf Server.xml 파일 열람 vi server.xml Step.2 8080 포트로 설정되어 있는 다음의 내용을 찾고 이를 변경하려는 포트(e.g. 80포트) 로 변경하고 저장합니다. 변경 전 셋팅된 8080 포트 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 그림. 기본 설정인 8080포트 변경 후 셋팅된 80 포트 <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 그림. 변경한 80포트 위 사항을 저장합니다. 다음의 순서대로 키보드를 터치 및 기입합니다. ESC + : + wq + Enter key 입력 Step.3 Tomcat을 재시작함으로써 변경된 내용을 적용합니다.
  • 60. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 59 of 69 Tomcat 재시작을 위한 경로 이동 ~/opt/apache-tomcat-8.5.13/bin Tomcat 중지 ./shutdown.sh Tomcat 재시작 ./startup.sh Step.4 가상머신 공인 IP:80 입력시 표시되는 PetClinic 웹화면을 확인합니다. 그림. 80포트의 Petclinic Lab 2.3 Deploy application to IBM Container 이번 실습에서는 IBM에서 제공하는 IBM Container Services에 어플리케이션을 배포하겠습니 다. IBM은 Docker 기반의 컨테이너 서비스를 제공하며, 오케스트레이션 도구로 Docker Swam과 Composer를 지원합니다. 현재 Beta 버전의 Kubernetes 또한 컨테이너 클러스터링 관리를 위해 사용해 보실 수 있습니다. 2.3.1 Create Stage for building Container Image 컨테이너에 어플리케이션을 배포하기 위해서는 사전 작업이 필요합니다. 기존의 어플리케이 션을 바로 배포할 수 없으며, ‘Image’라는 컨테이너 실행파일을 빌드 한 뒤 이를 실행시키는 여러 조건사항을 포함하고 있는 Dockerfile을 통해 어플리케이션을 컨테이너에 배포합니다. 결과적으로 1. Image 빌드 2. 빌드된 이미지 컨테이너에 배포해 어플리케이션 실행의 순서 를 거쳐 진행해야합니다. 첫번째로 Open toolchain에서 컨테이너 이미지를 빌드하기 위한 스테이지를 추가하겠습니다.
  • 61. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 60 of 69 Step.1 위에서 실습하신 내용을 바탕으로 ADD Stage를 통해 스테이지를 추가합니다. Stage 이름을 Build Container Image로 명명하고, Input Type에 Build Artifact, Stage에 Build Stage, Job에 Build를 선택합니다. 그림. 컨테이너 이미지 빌드 스테이지 생성 Step.2 JOB 탭에서 ADD JOB – Build를 선택한 뒤 Builder Type을 IBM Container Service로 선택합니다. Free trial 계정의 경우 하나의 Space에만 컨테이너를 배포할 수 있으므로 이전 에 컨테이너를 배포하신적이 있다면 해당 Space를 꼭 선택해야 합니다. 사용할 Organization, Space와 빌드할 이미지 이름을 입력하고 Build Script에 다음의 코드를 복사해 붙여 넣습니다. (이미지 이름 입력시 이름이 숫자로 시작할 경우 오류가 날 수 있습니다. e.g 170404DevOps) Container Image Build Script #!/bin/bash log_and_echo "$LABEL" "Starting build script" log_and_echo "$LABEL" "No unit tests cases have been checked in" if [ -f Dockerfile ]; then log_and_echo "$LABEL" "Building ${FULL_REPOSITORY_NAME}"
  • 62. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 61 of 69 ${EXT_DIR}/utilities/sendMessage.sh -l info -m "New container build requested for ${FULL_REPOSITORY_NAME}" # build image BUILD_COMMAND="" if [ "${USE_CACHED_LAYERS}" == "true" ]; then BUILD_COMMAND="build --pull --tag ${FULL_REPOSITORY_NAME} ${WORKSPACE}" ice_retry ${BUILD_COMMAND} RESULT=$? else BUILD_COMMAND="build --no-cache --tag ${FULL_REPOSITORY_NAME} ${WORKSPACE}" ice_retry ${BUILD_COMMAND} RESULT=$? fi if [ $RESULT -ne 0 ]; then log_and_echo "$ERROR" "Error building image" ice_retry info ice_retry images ${EXT_DIR}/print_help.sh ${EXT_DIR}/utilities/sendMessage.sh -l bad -m "Container build of ${FULL_REPOSITORY_NAME} failed. $(get_error_info)" exit 1 else log_and_echo "$SUCCESSFUL" "Container build of ${FULL_REPOSITORY_NAME} was successful" ${EXT_DIR}/utilities/sendMessage.sh -l good -m "Container build of ${FULL_REPOSITORY_NAME} was successful" fi else log_and_echo "$ERROR" "Dockerfile not found in project" ${EXT_DIR}/utilities/sendMessage.sh -l bad -m "Failed to get Dockerfile. $(get_error_info)" exit 1 fi
  • 63. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 62 of 69 echo "IMAGE_NAME=${FULL_REPOSITORY_NAME}" >> $ARCHIVE_DIR/build.properties IBM Container는 Docker 기반의 컨테이너 서비스를 제공하고 있으며, Docker Image는 Dockerfile에서 포함하고 있는 배포방식을 통해 이미지가 빌드 됩니다. 본 시나리오에서 사 용하는 Petclinic 어플리케이션은 Dockerfile을 포함하고 있으므로 추가적으로 Dockerfile을 생성 및 설정하실 필요 없이 사용하실 수 있습니다. Step.3 Stage를 실행시키고 로그기록을 확인합니다. Devtest170404 이름의 이미지가 생성된 것을 확인할 수 있습니다. 그림. 컨테이너 이미지 빌드 성공 2.3.2 Create Stage for Deploying application to IBM Container 어플리케이션을 IBM Container에 배포하기 위해 Delivery Pipeline에서 Stage를 추가해 설정 하겠습니다. Docker 기반의 컨테이너에 배포해 운영하기 위해서는 Docker Image가 필요합 니다. 직전에 컨테이너 이미지를 빌드한 결과물 아티팩트를 인풋 트리거로 사용합니다. Docker 이미지는 실행파일로 이해할 수 있으며 배포시에 실행되어 어플리케이션이 동작한 다고 이해할 수 있습니다. Step.1 ADD Stage를 통해 컨테이너 배포를 위한 스테이지를 추가합니다. Stage 이름을 Deploy to IBM Container로 변경, Input Type을 Build Artifacts로 설정하고 Staging은 이전에 생성한 Build Container Image로 선택합니다. Build Artifacts는 처음 코드가 배포 된 후 어플 리케이션을 빌드한 결과물입니다. 이 결과물을 이전에 클라우드 파운드리에 배포한 것과 같 이 IBM 컨테이너에도 배포해야 하므로 그 결과물을 Input 해 주도록 설정합니다.
  • 64. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 63 of 69 그림. 새로운 Stage 추가 및 설정 Step.2 JOBS 탭으로 이동하여 ADD JOBS – Deploy를 선택해 배포를 위한 스테이지 설정 화 면을 불러옵니다. 그림. JOBS 추가 Step.3 Deployer Type을 IBM Bluemix Containers on Bluemix로 변경합니다. 어플리케이션을 배포할 Organization, Space, 어플리케이션 이름 및 포트를 설정할 수 있습니다.
  • 65. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 64 of 69 그림. 컨테이너 Stage 구성 Step.4 배포 스크립트는 IBM Containers On Bluemix 선택시 자동 값으로 주어지는 코드를 사용합니다. 코드가 없을시에는 하단의 코드를 사용합니다. #!/bin/bash echo -e "${label_color}Starting deployment script${no_color}" git_retry clone https://github.com/Osthanes/deployscripts.git deployscripts /bin/bash deployscripts/deploycontainer.sh RESULT=$?
  • 66. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 65 of 69 if [ -f "${DEPLOY_PROPERTY_FILE}" ]; then source "$DEPLOY_PROPERTY_FILE" fi if [ $RESULT -ne 0 ]; then echo -e "${red}Executed failed or had warnings ${no_color}" ${EXT_DIR}/print_help.sh exit $RESULT fi echo -e "${green}Execution complete${no_label}" Step.5 Stage를 실행하고 컨테이너 이미지 빌드와 IBM Container에 배포 되는지 Pipeline과 Log를 통해 확인합니다. 로그기록을 통해 6분전에 컨테이너 이미지가 레파지토리에 갱신된 것 또한 확인할 수 있습니다. 그림. 컨테이너 이미지 배포 확인
  • 67. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 66 of 69 그림. 컨테이너 이미지 빌드 및 배포 성공 Step.6 Bluemix 대시보드에서 생성된 컨테이너를 확인할 수 있으며 80포트를 클릭할 시 PetClinic 어플리케이션에 접근할 수 있습니다. 포트는 변경 가능하고 Vulnerability Advisor 기능으로 컨테이너 이미지 검사 서비스를 통해 결과를 리포팅 받을 수 있습니다. 그림. 컨테이너 동작
  • 68. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 67 of 69 그림. 오픈툴체인을 활용한 CF, 컨테이너, 가상머신 배포 파이프라인
  • 69. © IBM 2017 – All Rights Reserved, Bluemix DevOps hands on session Day1: DevOps & Deployment configuration Page 68 of 69 © Copyright IBM Corporation 2017 IBM Korea Corporation Gukjegeumyung-ro Seoul, Yeongdeungpo-gu TEL : (02)3781-7500 www.ibm.com/kr Produced in the Korea IBM Cloud service All rights reserved Mar 2017 IBM, the IBM logo, and ibm.com are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the web at “Copyright and trademark information” at ibm.com/legal/copytrade.shtml This document is current as of the initial date of publication and may be changed by IBM at anytime. Not all offerings are available in every country in which IBM operates. THE INFORMATION IN THIS DOCUMENT IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, INCLUDING WITHOUT ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ANY WARRANTY OR CONDITION OF NON-INFRINGEMENT. IBM products are warranted according to the terms and conditions of the agreements under which they are provided.