From 45c482977822e82453f49f2a3ec1d729cde55776 Mon Sep 17 00:00:00 2001 From: Tuna Date: Mon, 15 Aug 2016 22:42:47 +0700 Subject: [PATCH] add architecture doc --- docs/architecture.md | 80 ++++++++++++++++++++++++++++++++- docs/development.md | 8 +++- docs/images/design_diagram.png | Bin 0 -> 50674 bytes 3 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 docs/images/design_diagram.png diff --git a/docs/architecture.md b/docs/architecture.md index 2e5911f73..acd18410d 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1 +1,79 @@ -// This doc describe the internal design of Kompose \ No newline at end of file +# Kompose - Internal Design + +Kompose have been broken to 3 stages: Loader, Transformer and Outputter. Each Stage should have well defined interface so it is easy to write new Loader, Transformer or Outputters and plug it in. Currently Loader and Transformer interfaces are already there. + +![Design Diagram](images/design_diagram.png) + +## Loader + +Loader reads input file (now `kompose` supports [Docker Compose](https://docs.docker.com/compose) v1, v2 and [Docker Distributed Application Bundle](https://blog.docker.com/2016/06/docker-app-bundle/) file) and converts it to KomposeObject. + +Loader is represented by a Loader interface: + +```console +type Loader interface { + LoadFile(file string) kobject.KomposeObject +} +``` + +Every loader “implementation” should be placed into `kompose/pkg/loader` (like compose & bundle). More input formats will be supported in future. You can take a look for more details at: + +* kompose/pkg/loader. +* kompose/pkg/loader/bundle. +* kompose/pkg/loader/compose. + +## KomposeObject + +`KomposeObject` is Kompose internal representation of all containers loaded from input file. First version of `KomposeObject` looks like this (source: [kobject.go](https://github.com/skippbox/kompose/blob/master/pkg/kobject/kobject.go)): + +```console +// KomposeObject holds the generic struct of Kompose transformation +type KomposeObject struct { + ServiceConfigs map[string]ServiceConfig +} + +// ServiceConfig holds the basic struct of a container +type ServiceConfig struct { + ContainerName string + Image string + Environment []EnvVar + Port []Ports + Command []string + WorkingDir string + Args []string + Volumes []string + Network []string + Labels map[string]string + Annotations map[string]string + CPUSet string + CPUShares int64 + CPUQuota int64 + CapAdd []string + CapDrop []string + Entrypoint []string + Expose []string + Privileged bool + Restart string + User string +} +``` + +## Transformer + +Transformer takes KomposeObject and converts it to target/output format (at this moment, there are sets of kubernetes/openshift objects). Similar to `Loader`, Transformer is represented by a Transformer interface: + +```console +type Transformer interface { + Transform(kobject.KomposeObject, kobject.ConvertOptions) []runtime.Object +} +``` + +If you wish to add more providers which contain different kind of objects, transformer would be the place to look into. At this moment Kompose supports Kubernetes (by default) and Openshift providers. More details at: + +* kompose/pkg/transformer +* kompose/pkg/transformer/kubernetes +* kompose/pkg/transformer/openshift + +## Outputter + +Outputter takes Transformer result and executes given action. For example action can be displaying result to stdout or directly deploying artifacts to Kubernetes/OpenShift. \ No newline at end of file diff --git a/docs/development.md b/docs/development.md index 381ec7439..c4ef3d0a5 100644 --- a/docs/development.md +++ b/docs/development.md @@ -13,10 +13,16 @@ $ go build -tags experimental -o kompose ./cli/main You need `-tags experimental` because the current bundlefile package of docker/libcompose is still experimental. -### Building multi-platform binaries with make +### Building binaries with make - You need `make` +#### Build multi-platforms: +```console +$ make binary-cross +``` + +#### Build current platform only: ```console $ make binary ``` diff --git a/docs/images/design_diagram.png b/docs/images/design_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..9298803355d4a175674672bcc65cc59ccc5179fa GIT binary patch literal 50674 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 literal 0 HcmV?d00001