Piccolo is a project providing MCO (Mixed Critical Orchestration) for SDV(Software Defined Vehicle). PICCOLO is a project specifically designed to consider the unique characteristics of vehicles in the vehicle environment and provide orchestration technology based on containerization for vehicle scenarios.
[Korean Version]
PICCOLO는 자동차를 위한 Mixed Critical Orchestration을 제공하기 위한 프로젝트이다. PICCOLO는 차량 환경에서 차량만의 특성을 고려한 차량의 시나리오를 컨테이너 기반으로 운용하는 오케스트레이션 기술을 제공하기 위한 프로젝트이다.
PICCOLO configures the operating environment required for applications/services installed in vehicles, restricts deployment locations, and supports operation on an application/service level. For Vehicle Services/Applications composed of a collection of Micro Services, PICCOLO operates as follows:
- During the packaging phase, it supports the configuration of Vehicle Service/Application units.
- During the deployment phase, it sets up the operating environment on a Micro Service level.
- During the operation phase, it manages and operates on a Vehicle Service/Application level.
- During the update phase, it updates on a Micro Service level.
PICCOLO provides the PICCOLO Specification for configuring the runtime environment, defining deployment policies, managing device access permissions, and setting up network configurations for applications installed in vehicles. The development of PICCOLO follows the following steps to provide Dynamic Mixed Critical Workloads Orchestration for SDV(Software Defined Vehicle):
- Define manifests/specifications for the management elements and operational methods required for Vehicle Service Orchestration in SDV(Software Defined Vehicle).
- Utilize existing container ecosystems such as K8S, K3S, Docker Swarm, Docker, Containerd, Podman for quick and easy validation.
- Develop core orchestrator functionality (including API-Server and Scheduler) based on an Embedded Edge Platform (TBD).
- Develop the Vehicle Orchestrator Platform (TBD).
[Korean Version]
PICCOLO는 차량에 탑재되는 Application / Service에 필요한 구동 환경을 구성하고 배포 위치를 제한하며 Application / Service 단위 운용을 지원한다.
Micro Service 단위의 집합으로 구성된 Vehicle Service / Application에 대하여 PICCOLO는 아래와 같이 동작한다.
- 패키지 단계에서는 Vehicle Service / Application 단위 구성을 지원한다.
- 배포 단계에서는 Micro Service 단위로 구동 환경을 구성한다.
- 운용 단계에서는 Vehicle Service / Application 단위로 관리 운용한다.
- 업데이트 단계에서는 Micro Service 단위로 업데이트한다.
PICCOLO는 차량에 탑재되는 Application을 위한 구동 환경 설정, 운용 및 배포 정책, 디바이스 접근 권한, 네트워크 설정 등을 위한 PICCOLO Specification을 제공한다. PICCOLO는 SDV를 위한 Dynamic Mixed Critical Workloads Orchestration을 제공하기 위한 프로젝트로 아래와 같은 순서에 따라서 개발을 진행한다.
- SDV를 위한 Vehicle Service Orchestration에 필요한 관리 요소 및 운용 방법에 대한 Manifests / Specification 정의
- K8S, K3S, Docker Swarm, Docker, Containerd, Podman 등 기존 Container Ecosystem을 활용하여 빠르고 쉽게 검증
- Embedded Edge Platform을 위한 Core Orchestrator(API-Server, Scheduler 포함) 기반으로 기능 개발 (TBD)
- Vehicle Orchestrator Platform 개발 (TBD)
See Installation.
See Quick Start.
This folder structure was created by kubebuilder.
However, you don't need kubebuilder
to work.
kubebuilder init --domain piccolo.org --repo crd.piccolo.org/piccolo
kubebuilder create api --group crd --version v1alpha1 --kind VehPod --resource --controller
kubebuilder create api --group crd --version v1alpha1 --kind DevRes --resource --controller=false
kubebuilder create api --group crd --version v1alpha1 --kind VehContainerConfig --resource --controller=false
CRD name | resource | controller |
---|---|---|
Pod | Y | Y |
Device | Y | N |
Function | Y | N |
PICCOLO 프로젝트는 현재 Kubernetes 혹은 K3S 기반의 Operator Pattern을 따른다. (Controllers 참조)
This project aims to follow the Kubernetes Operator pattern.
It uses Controllers, which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster.
The initial version of Piccolo is based on Kubebuilder. So you can get the information you need for Piccolo development from kubebuilder's documentation.
Piccolo also used Helmify to create helm chart.
- Install the CRDs into the cluster:
make install
- Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
make run
- (optional) The controller can apply by pod.
make docker-build docker-push IMG=<some-registry>/piccolo:tag
If you are editing the API definitions, generate the manifests such as CRs or CRDs using:
make manifests
NOTE: Run make help
for more information on all potential make
targets
More information can be found via the Kubebuilder Documentation