BXM Cloud Platform은 어플리케이션 개발자가 순수 비즈니스 로직의 개발에 집중할 수 있도록, 클라우드 플랫폼 충족 요건을 위한 제반설정과 컨테이너 이미지 빌드 과정들을 처리합니다. 이를 위해 개발 환경에서 사용할 수 있는 Command Line Interface Tools(kubectl-apps, kubectl-blobstore)와 Gitlab work flow와 연동괴는 job script를 제공합니다. 다음은 BXM Cloud Application의 기본 구조와 deployment, scaling과정을 설명합니다.
본 문서에서는 클라우드 환경에서 정상적으로 배포 실행되고 scaling되기 위해 준수해야 하는 규칙에 대해서는 설명하지 않습니다. Cloud Native Application을 올바르게 작성하기 위한 준수사항들은 문서 프로젝트의 다른 문서를 참고할 수 있습니다.
Create Project
BXM Cloud Platform에 포함된 프레임워크(bxframewok)는 프로젝트 생성을 위한 기본 Command Line Tool을 제공합니다. 해당 도구는 프로젝트 생성시에 프로젝트의 기본 구조와 필수 설정 파일들을 구성합니다.
Application Project Layout
.
..
├── bxframework-sample-app
├── src
│ ├── main
│ │ ├──java
│ │ └──resources
│ └── test
│ ├──java
│ └──resources
├── manifest
│ └── application.yml
├── gradle\
├── build.gradle
├── gradle.properties
├── gradlew
├── gradlew.bat
├── .gitlab-ci.yml
└── .gitignore
- mainfest/application.yml: BXM Cloud Platform Defined Application k8s resource
- gitlab-ci.yml: GitLab CI/CD Pipeline Job Definition
Application Manifest
application manifest파일에는 k8s pod를 생성하기 위해 필요한 정보와 배포 후 서비스 라우팅에 필요한 정보들을 포함합니다. 설정에 포함되어 있는 세부사항들은 별도의 문서로 가이드합니다.
# BXM Cloud Application Manifest
# generated by bxm cloud platform
# Review and apply below config attributes
apiVersion: bxm.bankwareglobal.io/v1
kind: Application
metadata:
# Application Name
name: bxfdemo
spec:
group: example
name: bxfdemo
# Application Buildpack:
# base container image
# middleware
# common library & binaries
# config
buildpack: "((blobstore))/bxframework-buildpack-0.0.1-SNAPSHOT.tgz"
# Service Route Config
ingressSpecs:
- &request
prefix: /dxt/
targetPort: 8080
options: |
circuit_breakers:
- max_connections: 2048
max_pending_requests: 2048
max_retries: 3
add_request_headers:
x-request-start: "%START_TIME%"
- <<: *request
prefix: /dxtmanagement/
targetPort: 9090
# k8s Depoyment Specifications
deploymentSpec:
# Pods count
replicas: 1
podTemplate:
podSpec:
bxmContainers:
- name: bxfdemo
apps:
- "((blobstore))/bxm-cloud-0.0.1-SNAPSHOT.tgz"
env:
- name: JAVA_OPTS
value: "-Xmx2048m"
ports:
- name: http
containerPort: 8080
- name: actuator
containerPort: 9090
Gitlab CI/CD Config
프로젝트 생성과정에서 구성된 .gitlab-ci.yml
파일의 상세 내용과 실행과정은 다음 문서에서 참고할 수 있습니다.
Deploy to k8s cluster
kubectl apps push
BXM Cloud Application의 배포는 kubectl apps push
명령을 통해 실행됩니다. 실행과정에 대한 자세한 내용은 다음 자료를 참고합니다.