PaaS-TA 로고

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

사이드카

개방형 클라우드 플랫폼 파스-타의 사이드카 플랫폼구성도 입니다.
사이드카는 kubernetes 기반으로 어플리케이션 플랫폼의 이점을 접목하기 위한 오픈 프로젝트 cf-for-k8s를 기반으로 합니다.
어플리케이션 플랫폼 구성 요소와 거의 유사합니다.
Kubernetes 및 다양한 클라우드 네이티브 오픈 소스 프로젝트들 포함합니다.

아키텍처

파스-타 사이드카는 컨테이너 플랫폼을 이용하여 Kubernetes Cluster 환경을 구성합니다
					Kubernetes Cluster는 System Components 부분과 App workloads 부분으로 분리되어 있습니다
					System Components는 Cloud Controller, Routing Controller, Logging, Eirini, Istio, Fluentd, UAA, Metrics, PostgresDB, kpack, Paketo buildpacks, Minio blobstore로 구성되어 있습니다
					App workloads는 App Staging tasks, App Instance로 구성되어 있습니다.
					각 컴포넌트에 대한 자세한 설명은 구성 요소의 기능 및 역할을 참조

구성 요소의 기능 및 역할

  • 1 Cloud Controller
    애플리케이션 스테이징과 실행을 위한 API를 제공합니다. 빌드팩 선정, 서비스와 바인딩, 접근 인가처리와 같은 애플리케이션의 전반적인 관리를 담당합니다. 개발자가 CLI를 통해 애플리케이션을 파스-타 사이드카로 전송하면 Cloud Controller 가 수신하게 되며, Cloud Controller 는 애플리케이션 바이너리를 저장 후 애플리케이션 메타 데이터 기록을 생성하고 Diego와 통신하여 Stage 상태 준비 및 애플리케이션 실행을 지시합니다. Cloud Controller는 서비스를 위해 조직, 스페이스, 서비스, 서비스 인스턴스, 사용자 역할 등의 정보 유지를 위한 데이터베이스와 애플리케이션 코드 및 빌드팩 저장 등을 위한 Blob 저장소를 유지합니다.
    Git 소스 : https://github.com/cloudfoundry/capi-k8s-release
  • 2 Routing Controller
    Kubernetes에서 실행되는 파스-타 사이드카를 위한 라우팅 및 네트워킹을 제공합니다.
    Git소스 : https://github.com/cloudfoundry/cf-k8s-networking
  • 3 Logging
    파스-타 사이드카에 배포된 어플리케이션에서는 앱 로그를 생성합니다.
    생성된 앱 로그를 구조화하여 결과 출력을 내보낼 수 있습니다.
    Git 소스 : https://github.com/cloudfoundry/cf-k8s-logging
  • 4 Eirini
    Eirini는 Cloud Foundry가 사용자 애플리케이션을 Kubernetes 클러스터에 Pod로 배포할 수 있도록 하는 Kubernetes 위에 있는 추상화 계층입니다. Eirini는 Diego 추상 개념인 LRP(장기 실행 프로세스) 및 Task(일회성 작업) 를 준용합니다.
    Git 소스 : https://github.com/cloudfoundry/eirini
  • 5 Istio
    Istio는 마이크로서비스를 통합하고, 마이크로서비스 전반에서 트래픽 흐름을 관리하고, 정책을 시행하고, 원격 측정 데이터를 집계하는 균일한 방법을 제공하기 위한 오픈 플랫폼입니다.
    Istio의 컨트롤 플레인은 Kubernetes와 같은 기본 클러스터 관리 플랫폼에 대한 추상화 계층을 제공합니다.
    Git 소스 : https://github.com/istio/istio
  • 6 Fluentd
    Fluentd는 통합 로깅 계층을 위한 오픈 소스 데이터 수집기로써 Fluentd를 사용하면 데이터 수집 및 소비를 통합하여 데이터를 더 잘 사용할 수 있습니다.
    Git 소스 : https://github.com/fluent/fluentd
  • 7 UAA
    OAuth2 서버 및 로그인 서버로 동작하여 사용자 인증 관리를 제공합니다.
    Git 소스 : https://github.com/cloudfoundry/uaa
  • 8 Metrics
    Metrics Server는 Kubernetes 빌트인 오토스케일링 파이프라인을 위한 확장 가능하고 효율적인 컨테이너 메트릭 소스입니다.
    Git 소스 : https://github.com/kubernetes-sigs/metrics-server
  • 9 PostgresDB
    파스-타 사이드카의 Tennant, App, 인증정보등이 저장된 Database저장소입니다.
  • 10 kpack
    kpack은 권한 없는 kubernetes API primitives 를 활용하여 Cloud Native Buildpacks(CNB)의 플랫폼 구현으로 OCI 이미지 빌드를 제공합니다.
    Git 소스 : https://github.com/pivotal/kpack
  • 11 Paketo buildpacks
    Paketo Buildpack을 사용하여 애플리케이션 소스 코드를 쉽게 빌드하고 업데이트 상태로 유지하면서 컨테이너 이미지로 변환합니다.
    Paketo 오픈 소스 프로젝트는 가장 인기 있는 언어 및 프레임워크를 위한 프로덕션 준비 빌드팩을 제공합니다.
    Git 소스 : https://github.com/paketo-buildpacks
  • 12 Minio blobstore
    파스-타 사이드카의 어플리케이션 패키지, 빌드팩 캐시 등이 저장된 오브제트 저장소입니다. internal 또는 external 로 구성할 수 있습니다.
    Git 소스 : https://github.com/cloudfoundry/capi-release/tree/develop/jobs/blobstore
  • 13 App Staging tasks
    파스-타 사이드카에 사용자 어플리케이션을 배포하기 위한 스테이징 태스크(analyze, detect, compile, build, export 등) 들을 수행하는 Pod
  • 14 App Instance
    파스-타 사이드카에 배포된 사용자 어플리케이션의 인스턴스(kubernetes pod)
  • 15 Load Balancer
    네트워크 트래픽을 분산하여 플랫폼의 확장성 개선합니다.
  • 16 App registry
    Cloud Native Buildpacks(CNB)의 플랫폼 구현으로 빌드된 OCI 이미지를 저장합니다.
    hub.docker.com 또는 Google Container Registriy 서비스를 이용하거나 external 로 구성할 수 있습니다.
  • 17 kapp
    kapp CLI는 Kubernetes 사용자가 동일한 레이블(label) 리소스 집합으로써 "Kubernetes 애플리케이션" 리소스 묶음으로 관리하도록 합니다.
    리소스 차이점, 레이블(label), 배포(deployment) 및 삭제에 포커싱합니다.
    Git 소스 : https://github.com/vmware-tanzu/carvel-kapp
  • 18 ytt
    ytt(철자로 발음됨)는 YAML 구조를 이해하는 템플릿 도구입니다.
    재사용 가능한 템플릿과 사용자가 제공한 값을 통해 복잡한 소프트웨어를 쉽게 구성할 수 있습니다.
    Git 소스 : https://github.com/vmware-tanzu/carvel-ytt

어플리케이션 배포 흐름

사용자는 cf-cli를 사용하여 애플리케이션을 배포합니다.
						파스-타 사이드카의 인그레스 라우팅은 istio-ingress gateway 가 담당합니다.
						K8S 다양한 CRD(이미지, 빌드, 경로, PeriodicSync 등)와 CF API 를 동기화해주는 컨트롤러들(route controller, kpack controller, cf-api-controller)이 있습니다.
						cf-api-server에는 컨테이너 이미지 레지스트리와 통신할 수 있도로고 도와주는 Registry-buddy가 있고, 멀티파트 패키지 업로드를 관리하기 위한 nginx 가 있습니다
						데이터 저장소 CCDB, UAADB 가 있습니다.

오픈소스 목록

오픈소스 목록
서비스 그룹 서비스 명 오픈소스 명 라이선스 비고
Sidecar sidecar deployment cf-for-k8s Apache2.0  
capi-k8s-release Apache2.0  
cf-k8s-networking Apache2.0  
cf-k8s-logging Apache2.0  
uaa Apache2.0  
Kubernetes projects istio Apache2.0  
envoy Apache2.0  
fluentd Apache2.0  
eirini Apache2.0  
kpack Apache2.0  
Paketo buildpack java Apache2.0  
dotnet-core Apache2.0  
nodejs Apache2.0  
go Apache2.0  
php Apache2.0  
ruby Apache2.0  
python Apache2.0  
nginx Apache2.0  
httpd Apache2.0  
procfile Apache2.0  
대화