Build & Run Your Application

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 명령을 통해 실행됩니다. 실행과정에 대한 자세한 내용은 다음 자료를 참고합니다.