skip to Main Content

아코디언을 활용한 어플리케이션 배포#git

4차 산업혁명 시대를 맞이하며 클라우드가 재조명 받고있습니다.
IaaS, PaaS, SaaS가 계속 언급되고 있고 Google의 Kubernetes 가장 화두에 오르고 있습니다.
Kubernetes는 어플리케이션 컨테이너의 배포, Auto Scale, Docker 컨테이너 오케스트레이션 자동화 오픈소스입니다. 
아코디언은 PaaS 플랫폼으로 CI/CD 자동화 및 APM 기능을 제공하고 있습니다. 또한, Kubernetes를 사용하여 개발자와 운영자가 어플리케이션을 구동하기 위한 환경 구성의 부담을 덜고 보다 더 효율적으로 개발에 충실히 할수 있도록 도와줍니다. 그럼, 아코디언을 활용하여 얼마나 빠르게 어플리케이션 구동환경을 구성할 수 있는지 알아보도록하겠습니다.

우선 아코디언을 활용하여 어플리케이션을 배포하는 방법은 4가지가 존재합니다.
1) Git         2) SVN      3) Upload      4) Storage

Git/SVN은 배포 할 어플리케이션의 Git/SVN 주소를 의미하며 아코디언에서 Git과 SVN에 접속하여 소스를 받아 해당 어플리케이션을 배포합니다.

Upload는 binary로 배포하는 것을 의미하며 war파일이나  tomcat 튜닝이 필요하다면 war 파일 + lib 디렉토리 + config 디렉토리가 묶인 tar파일을 Upload하면 기본 tomcat에서 사용자가 지정한 lib, config 디렉토리로 세팅이 됩니다.

Storage는 war나 ear의 파일이 위치하는 노드 서버의 디렉토리 위치를 의미합니다.

아코디언에서는 어플리케이션 프로젝트 정보만 입력해도 손쉽게 클라우드에 어플리케이션을 배포할 수 있습니다. 이번 포스트에서는 어플리케이션 배포 방법 중 Git을 이용하여 아코디언에서 어플리케이션을 배포하는 과정을 안내해드리도록 하겠습니다.

우선 아코디언에 접속하여 프로젝트를 생성합니다.
( Project 생성 방법에 대해서는 이후 포스트에서 상세히 안내 드리도록 하겠습니다.)

– 배포 환경 : Tomcat 8
– 어플리케이션 : petclinic(hsql + spring 프레임워크 + maven)
이번 예제의 샘플로 사용할 Git은 Spring 프레임워크에서 샘플 프로젝트로 제공하는 PetClinic을 사용해 보도록 하겠습니다.
https://github.com/spring-petclinic/spring-framework-petclinic.git

– 앱 등록 Process
1. 프로젝트를 생성을 한 후 좌측 메뉴에서 [앱] 선택 – 우측 상단에 [앱 추가] 버튼을 클릭합니다.
2. 앱 추가화면에서 자신에게 필요한 인스턴스를 선택한 후 우측 하단의 [다음]버튼을 클릭합니다.
인스턴스는 PetClinic 프로젝트가 Spring Framework Web Project이므로 Tomcat Was 서버로 Tomcat8을 선택합니다.

3. 앱 이름/ 소스타입/Repository URL을 입력합니다. 그리고 추가 옵션을 선택한 후 Ports에서 Node Port 값을 입력한 후 [등록] 버튼을 클릭합니다.

– 입력사항

항목 입력값
앱 이름 petclinic
종류 Deployment(Default value)
소스타입 Git(Default value)
Repository URL https://github.com/spring-petclinic/spring-framework-petclinic
Context Path /(Default value)
Security None(Default value)
Node Port 30080 
(30001 ~ 32766 포트번호가 제공되며, 이 중에 포트번호를 선택하여 사용)

앱 등록 시 아코디언에 자체 내장된 Jenkins를 통하여 어플리케이션이 배포가 됩니다. 아래의 화면과 같이 1POD가 올라온 것으로 어플리케이션이 성공적으로 배포된 것을 확인 할 수 있습니다.

이제 배포된 어플리케이션을 접속해 보도록 하겠습니다.
브라우저에서 http://{ACCORDION_HOSTNAME}:30080 접속하면 아래의 화면과 같이 PetClinic어플리케이션화면이 출력됩니다.

위의 예제와 같이 어플리케이션을 생성 시 간단한 설정만으로 WAS서버에 어플리케이션이 배포되는 모습을 확인할 수 있습니다.
배포된 어플리케이션에 접근하기 위한 방법으로 두가지가 존재합니다.

1. 정적인 포트 설정 
2. 도메인 연결

Kubernetes는 기본적으로 내부 동작으로 이루어져 있어 정적 포트나 도메인을 사용하여 외부접속을 합니다. 아코디언은 Kubernetes 기반으로 아코디언에서 정적 포트 설정은 위와 같이 어플리케이션 생성/수정 시에 사용할 수 있도록 되어있고 yaml을 이용하여 정적 포트를 설정할 수 있습니다.

※ 정적 포트 설정
1) 좌측메뉴에서 [네트워크] 선택 – 네트워크 목록에서 해당 어플리케이션 선택합니다.
2) 우측 [액션] 선택 – [라우터 편집] 선택합니다.
3) yaml 정보 편집합니다.
4) 우측하단 [확인]버튼 클릭합니다.

ClusertIP NodePort
spec:
clusertIP:10.111.203.51
ports:
-name: http-port
 port: 8080
targetPort : 8080
selector:
task : petclinic
sessionAffinity: None
type: ClusterIP
spec:
clusertIP:10.111.203.51
ports:
-name: http-port
 port: 8080
targetPort : 8080
nodePort: 30080
selector:
task : petclinic
sessionAffinity: None
type: NodePort

nodePort는 설정하려는 Port가 있을 시 설정하며, nodePort 미 설정시 랜덤 Port로 배정받습니다.
랜덤 Port는 3000번 이상 포트로 배정됩니다.
아래 이미지와 같이 노트포트가 targetNort로 지정한 30080 포트로 NodePort가 설정된 것을 확인할 수 있습니다. 

Back To Top