Overall Architecture
Modernization Platform 의 아키텍쳐는 크게 아래와 같이 두 종류의 클러스터로 구성이 됩니다.
Control Plane Cluster
Modernization Platform 의 모든 Add-on 서비스들이 구축 및 운영이 되는 클러스터로, Console에서 제공하는 여러 기능을 통해 Data Plane Cluster의 상태 모니터링 및 Agent 설치, Application 배포 및 모니터링 등의 기능을 제공합니다.Data Plane Cluster
실제 Business Application 들이 배포되고 운영 되는 클러스터 입니다. 클러스터 및 Application의 상태 모니터링과 로그 수집을 위한 Agent는 Console의 Cluster관리 기능을 통해서 설치 및 관리가 되고, Application 도 Console에서 제공하는 Application, Deployment Group (CI/CD) 관리 기능을 통해서 Multi-Cluster 환경에 신속하게 배포하고 운영할 수 있습니다.
참고)
아키텍쳐 구성에서 보듯이 Control Plane Cluster와 Data Plane Cluster는 물리적으로 분리되어 있습니다. 해서 Control Plane Cluster에 장애가 발생하더라도 Data Plane Cluster에서 운영 중인 Business Application에는 영향이 발생하지 않습니다. 단, 모니터링/로깅을 위한 메트릭과 로그 수집이 되지 않고, Console을 통한 Application의 신규 배포는 불가합니다.
Monitoring, Logging 노드는 Data Plane Cluster의 수와 Node 수, Application 수의 볼륨에 따라 Scale-Out 될 수 있습니다.
MCM (Multi-Cluster Management) Architecture
Control Plane Cluster에 MCM Backend, MCM Provisioning 컴포넌트가 설치가 됩니다.
Console을 통해 Data Plane Cluster의 신규 생성 또는 등록 요청을 받으면 Ansible이나 Terraform을 통해 CSP(Cloud Service Provider)에서 제공하는 AWS EKS, Azure AKS와 같은 Managed Kubernetes Cluster를 생성 또는 등록할 수 있는 기능을 제공합니다. (신규 생성의 경우 현재 미지원)
또한, 등록된 Cluster들에 대한 모니터링을 위해 메트릭과 로그를 중앙으로 수집하는 에이전트 설치 및 관리 기능을 제공합니다.
CI/CD Architecture
Control Plane Cluster 에 있는 CICD Backend 컴포넌트는 Business Application의 빌드 및 배포를 위해서 Kubernetes의 CRD를 사용하여 Console에서 제공하는 Application과 Deployment Group을 Kubernetes 리소스로 생성 한 후 라이프사이클을 관리합니다.
Kubernetes 환경에 최적화 되어 있는 Tekton을 하용하여 빌드 파이프라인을 구성하고 실행하며, 파이프라인 실행 시 필요한 라이브러리 의존성 관리 서비스(Nexus)과 컨테이너 이미지 관리 서비스(Harbor)가 연동이 됩니다.
Business Application 컨테이너 이미지 빌드가 완료된 후 Console의 Application과 Deployment Group UI/UX를 통해 Kubernetes의 Deployment, Service, Ingress 설정 파일을 동적으로 생성하여 형상관리 서비스(Gitea)에 저장하고 GitOps 서비스인 ArgoCD를 통해서 Multi-Cluster에 Application을 신속하게 배포합니다.
Centralized Monitoring Architecture
Control Plane Cluster에 오픈소스 Cortex 서비스가 실치되고 Data Plane Cluster에 설치되어 있는 Prometheus Agent를 통해 수집되는 모든 메트릭을 Tenant 별로 Cortex 저장소에 저장하고, Kibana에서 Tenant 별로 Organization 을 생성하여 시각화 서비스를 제공합니다.
Monitoring Backend 컴포넌트는 프로젝트(Tenant)의 라이프사이클 이벤트에 맞추어 Kibana에 Organization, ,DataSource, Dashboard 등의 생성/삭제/권한 등을 관리합니다.
Centralized Logging Architecture
Control Plane Cluster 에 EFK(Elasticsearch, FluentD, Kibana) 스택으로 서비스가 설치되어 Data Plane Cluster에 설치되 FluentBit Agent로 부터 수집되는 모든 로그를 Elasticsearch Data Node 에 저장을 합니다.
Elasticsearch Data Node 에 저장된 모든 로그는 Open Distro Kibana 를 통해 접근 권한을 관리 합니다.
Application & Deployment Group - Logical Architecture
Console UI/UX 에서 Application 빌드, 배포를 위해서 Application과 Deployment Group 관리 기능을 제공합니다.
Application은 실제로 MSA(Micro Service Architecture)에서 Micro Service 하나하나가 Application으로 관리될 수 있습니다. 하나의 Application은 필요에 따라 여러개의 파이프라인으로 빌드 될 수 있습니다.
Deployment Group은 Application에서 빌드가 완료되어 Container Image Registry에 등록된 결과물을 배포에 필요한 대상 환경, Kubernetes 설정 파일(Deployment, Service, ConfigMap, Secret, PVC, Ingress 등)을 정의하여 Multi-Cluster 환경에 배포하는 기능입니다.