K-PaaS 로고

  • github
    K-PaaS github
    수백만명의 개발자가 Github을 사용하여 개인 프로젝트를 구축하고 비즈니스를 지원하며 오픈 소스 기술을 함께 사용합니다.
  • K-PaaS incubator
    K-PaaS Incubator
    기업들이 K-PaaS를 활용할 수 있도록 지원 하고 있습니다.
  • cloudfoundry
    Cloud Foundry
    Cloud Foundry는 기업이 애플리케이션을 쉽고 빠르게 개발하고 배포하는데 필요한 속도, 단순성 및 제어 기능을 제공합니다.
  • youtube
    Youtube
    개방형 클라우드 플랫폼 K-PaaS 관련 동영상을 지원하고 있습니다.
닫기
  1. K-PaaS 소개
  2. 아키텍처
  3. 컨테이너 플랫폼
  4. v1.4.0 단독 배포

컨테이너 플랫폼 - v1.4.0 단독 배포

개방형 클라우드 플랫폼 K-PaaS의 컨테이너 플랫폼 구성도 입니다.

아키텍처

Kubernetes Cluster는 기본 1개의 master와 n개의 worker로 구성된다. 구성된 클러스터에는 영구한 볼륨으로 Storage Class에 의해 Dynamic Provisioning 되는 외부 스토리지가 추가로 연결된다. 컨테이너플랫폼을 구성하는 요소는 클러스터 내의 논리적인 그룹인 namespace로 구분하여 Pod로 배포된다. 인증에 필요한 KeyCloak, 머신 러닝 워크플로우를 배포할 수 있는 MI-pipeline을 포함한 Kubeflow, 기밀성이 요구되는 데이터를 저장하는 Vault, 데이터 저장을 위한 Database,  Chartmuseum, Core, Portal, JobService, Nginx, Database, Redis 등을 포함한 이미지 및 차트 저장소인 Harbor, 클러스터를 관리할수 있는 구성요소로 Portal-API, Common-API, Web-UI, Terraman, Metrics-API, Portal-Broker를 포함한 Portal,  DevOps를 위한 서비스인 Pipeline-API, Common-API, Web-Pipeline, Inspection-API, Pipeline-Broker, Inspection-Svr, CI-Server, Config-Server, PostgresSQL을 포함한 Pipeline,  DevOps를 위한 서비스인 SC-API, Web-SC, SC-Broker, SCM-Server를 포함한 Source Control로 구성된다.

구성 요소의 기능 및 역할

쿠버네티스 환경 (Control Plane, Worker Node)
  • 1 kube-apiserver
    쿠버네티스 API를 노출하는 쿠버네티스 컨트롤 플레인 컴포넌트이다.
  • 2 kube-controller-manager
    컨트롤러를 구동하는 마스터 상의 컴포넌트이다.
  • 3 kube-scheduler
    노드가 배정되지 않은 새로 생성된 Pod를 감지하고, 실행할 노드를 선택하는 컨트롤 플레인 컴포넌트이다.
  • 4 etcd
    모든 클러스터 데이터를 담는 쿠버네티스 저장소로 사용되는 고가용성 키-값 저장소이다.
  • 5 kubelet
    클러스터의 각 노드에서 실행되는 에이전트로 Pod에서 컨테이너가 정확하게 동작하도록 관리한다
  • 6 cAdvisor
    쿠버네티스에서 사용하는 기본적인 모니터링 에이전트로 모든 노드에 설치되어 노드에 대한 정보와 Pod에 대한 지표를 수집한다.
  • 7 kube-proxy
    클러스터의 각 노드에서 실행되는 네트워크 프록시이다. 기본적으로 IPVS 모드로 설정되어 있다.
  • 8 Pod
    쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다.
컨테이너플랫폼 어플리케이션
  • 1 Portal-API
    컨테이너플랫폼에서 필요한 REST API를 제공한다.
  • 2 Common-API
    컨테이너플랫폼의 DBMS 메타 데이터 제어에 필요한 REST API를 제공한다.
  • 3 Portal-UI
    컨테이너 플랫폼 포탈은 웹 인터페이스를 통해 컨테이너 플랫폼을 사용할 수 있도록 하는 웹 어플리케이션이다.
  • 4 Portal-Broker
    Portal-UI를 K-PaaS에서 서비스로 등록하여 사용할 수 있게 해주는 Broker이다.
  • 5 Harbor
    Docker 이미지 및 helm Chart를 저장할 수 있는 저장소 이다.
  • 6 NFS-provisioner
    NFS Volume을 자동으로 binding하도록 지원하는 역할을 한다.
  • 7 Mariadb
    컨테이너플랫폼 관련 메타 데이터를 관리하는 MariaDB DBMS 이다.
  • 8 Keycloak
    컨테이너플랫폼 서비스간 SSO를 위한 인증기능을 담당한다.
  • 9 Terraman
    멀티 클러스터 배포 및 관리 기능을 사용할 수 있도록 하는 어플리케이션이다.
  • 10 Metric-API
    클러스터, 노드의 상태를 체크하는데 필요한 REST-API를 제공한다.
  • 11 Ingress-nginx-controller
    인그레스 리소스가 작동하기 위한 Nginx 기반 인그레스 컨트롤러이다.
  • 12 Istio
    컨테이너의 연결, 모니터링 및 보안을 클러스터에서 실행하는 구성 가능한 서비스 메시이다.
  • 13 Kubeflow
    머신러닝 워크플로를 쉽게 배포할 수 있게 해주는 툴킷이다.
  • 14 Vault
    컨테이너플랫폼의 Secret 정보를 안전하게 저장하고 관리한다.
  • 15 Rook
    Ceph 스토리지를 Pod 형태로 구성한다.

배포 흐름도

Kubernetes 배포를 진행하게 되면 Kubernetes Cluster가 생성이 된다. 그리고 생성된 Kubernetes Cluster에 컨테이너 플랫폼 제공을 위해 컨테이너 플랫폼 패키지에 Kubernetes cluster 정보를 입력하여 배포를 하게 된다. 배포를 하면 Pod 형태로 배포가 되며 클러스터를 관리할 수 있는 Portal, 이미지 및 차트 저장소인 Harbor, 인증에 필요한 KeyCloak, 볼륨 프로비저닝을 위한 NFS, 데이터 저장을 위한 Database로 구성된다.

오픈소스 목록

오픈소스 목록
서비스 그룹 서비스 명 오픈소스 명 라이선스 비고
Container
Platform
- kubernetes Apache 2.0  
kubespray Apache 2.0  
harbor Apache 2.0  
mariadb GPL v2  
keycloak Apache 2.0  
terraform MPL 2.0  
ingress-nginx-controller Apache 2.0  
istio Apache 2.0  
kubeflow Apache 2.0  
vault MPL 2.0  
rook Apache 2.0  
대화