From 5d913ef3506a7b35848148d5a1095a1010230526 Mon Sep 17 00:00:00 2001 From: Charlie Drage Date: Thu, 13 Jan 2022 14:03:11 -0500 Subject: [PATCH] Add new kompose site Adds the new kompose site and moves it to the /docs folder so that it's compatible with old links as well as gh-pages --- .gitignore | 4 +- {site => docs}/404.html | 0 {site => docs}/Gemfile | 0 {site => docs}/Gemfile.lock | 0 {site => docs}/LICENSE | 0 {site => docs}/README.md | 0 {site => docs}/_config.yml | 0 {site => docs}/_data/dates.yml | 0 {site => docs}/_data/menu.yml | 0 {site => docs}/_foobar.yml | 0 {site => docs}/_includes/footer.html | 0 {site => docs}/_includes/meta.html | 0 {site => docs}/_includes/navbar.html | 0 {site => docs}/_layouts/default.html | 0 {site => docs}/_layouts/index.html | 0 {site => docs}/assets/css/animate.css | 0 {site => docs}/assets/css/bootstrap.min.css | 0 {site => docs}/assets/css/github-markdown.css | 0 {site => docs}/assets/css/ionicons.min.css | 0 .../assets/css/jquery.accordion.css | 0 {site => docs}/assets/css/magnific-popup.css | 0 {site => docs}/assets/css/owl.carousel.css | 0 {site => docs}/assets/css/owl.theme.css | 0 {site => docs}/assets/css/style.css | 0 .../favicons/android-chrome-192x192.png | Bin .../favicons/android-chrome-256x256.png | Bin .../favicons/android-chrome-384x384.png | Bin .../assets/favicons/apple-touch-icon.png | Bin .../assets/favicons/browserconfig.xml | 0 .../assets/favicons/favicon-16x16.png | Bin .../assets/favicons/favicon-32x32.png | Bin {site => docs}/assets/favicons/favicon.ico | Bin .../assets/favicons/mstile-150x150.png | Bin .../assets/favicons/safari-pinned-tab.svg | 0 .../assets/favicons/site.webmanifest | 0 {site => docs}/assets/fonts/ionicons.eot | Bin {site => docs}/assets/fonts/ionicons.svg | 0 {site => docs}/assets/fonts/ionicons.ttf | Bin {site => docs}/assets/fonts/ionicons.woff | Bin {site => docs}/assets/fonts/ionicons.woff2 | Bin {site => docs}/assets/icons/c1.png | Bin {site => docs}/assets/icons/c2.png | Bin {site => docs}/assets/icons/c3.png | Bin {site => docs}/assets/icons/c4.png | Bin {site => docs}/assets/icons/c5.png | Bin {site => docs}/assets/icons/fb.png | Bin {site => docs}/assets/icons/github.png | Bin {site => docs}/assets/icons/in.png | Bin {site => docs}/assets/icons/li.png | Bin {site => docs}/assets/icons/p1.png | Bin {site => docs}/assets/icons/p3.png | Bin {site => docs}/assets/icons/p6.png | Bin {site => docs}/assets/icons/rev.png | Bin {site => docs}/assets/icons/rev2.png | Bin {site => docs}/assets/icons/rev3.png | Bin {site => docs}/assets/icons/slack.png | Bin {site => docs}/assets/icons/tt.png | Bin {site => docs}/assets/icons/tw.png | Bin {site => docs}/assets/icons/up.png | Bin {site => docs}/assets/images/gh_engineer.jpg | Bin {site => docs}/assets/images/logo.png | Bin {site => docs}/assets/images/placeholder.jpg | Bin {site => docs}/assets/js/bootstrap.min.js | 0 {site => docs}/assets/js/contact.js | 0 {site => docs}/assets/js/custom.js | 0 {site => docs}/assets/js/jquery-2.1.1.js | 0 {site => docs}/assets/js/jquery.accordion.js | 0 .../assets/js/jquery.validate.min.js | 0 {site => docs}/assets/js/live.js | 0 {site => docs}/assets/js/menu-2.js | 0 {site => docs}/assets/js/menu.js | 0 {site => docs}/assets/js/plugins.js | 0 {site => docs}/assets/js/popper.min.js | 0 {site => docs}/assets/js/validator.js | 0 {site => docs}/assets/video/cat.webm | Bin {site => docs}/assets/video/coding.webm | Bin {site => docs}/assets/video/placeholder.mp4 | Bin {site => docs}/favicon.ico | Bin {site => docs}/feed.xml | 0 {site => docs}/index.md | 0 {site => docs}/js/background.js | 0 {site => docs}/js/icons.js | 0 site/docs/architecture.md | 90 ---- site/docs/conversion.md | 128 ----- site/docs/development.md | 88 ---- site/docs/getting-started.md | 306 ----------- site/docs/images/design_diagram.png | Bin 125039 -> 0 bytes .../images/kompose-maven-output-diagram.png | Bin 16028 -> 0 bytes site/docs/installation.md | 141 ------ site/docs/integrations.md | 57 --- site/docs/maven-example.md | 98 ---- site/docs/user-guide.md | 474 ------------------ 92 files changed, 2 insertions(+), 1384 deletions(-) rename {site => docs}/404.html (100%) rename {site => docs}/Gemfile (100%) rename {site => docs}/Gemfile.lock (100%) rename {site => docs}/LICENSE (100%) rename {site => docs}/README.md (100%) rename {site => docs}/_config.yml (100%) rename {site => docs}/_data/dates.yml (100%) rename {site => docs}/_data/menu.yml (100%) rename {site => docs}/_foobar.yml (100%) rename {site => docs}/_includes/footer.html (100%) rename {site => docs}/_includes/meta.html (100%) rename {site => docs}/_includes/navbar.html (100%) rename {site => docs}/_layouts/default.html (100%) rename {site => docs}/_layouts/index.html (100%) rename {site => docs}/assets/css/animate.css (100%) rename {site => docs}/assets/css/bootstrap.min.css (100%) rename {site => docs}/assets/css/github-markdown.css (100%) rename {site => docs}/assets/css/ionicons.min.css (100%) rename {site => docs}/assets/css/jquery.accordion.css (100%) rename {site => docs}/assets/css/magnific-popup.css (100%) rename {site => docs}/assets/css/owl.carousel.css (100%) rename {site => docs}/assets/css/owl.theme.css (100%) rename {site => docs}/assets/css/style.css (100%) rename {site => docs}/assets/favicons/android-chrome-192x192.png (100%) rename {site => docs}/assets/favicons/android-chrome-256x256.png (100%) rename {site => docs}/assets/favicons/android-chrome-384x384.png (100%) rename {site => docs}/assets/favicons/apple-touch-icon.png (100%) rename {site => docs}/assets/favicons/browserconfig.xml (100%) rename {site => docs}/assets/favicons/favicon-16x16.png (100%) rename {site => docs}/assets/favicons/favicon-32x32.png (100%) rename {site => docs}/assets/favicons/favicon.ico (100%) rename {site => docs}/assets/favicons/mstile-150x150.png (100%) rename {site => docs}/assets/favicons/safari-pinned-tab.svg (100%) rename {site => docs}/assets/favicons/site.webmanifest (100%) rename {site => docs}/assets/fonts/ionicons.eot (100%) rename {site => docs}/assets/fonts/ionicons.svg (100%) rename {site => docs}/assets/fonts/ionicons.ttf (100%) rename {site => docs}/assets/fonts/ionicons.woff (100%) rename {site => docs}/assets/fonts/ionicons.woff2 (100%) rename {site => docs}/assets/icons/c1.png (100%) rename {site => docs}/assets/icons/c2.png (100%) rename {site => docs}/assets/icons/c3.png (100%) rename {site => docs}/assets/icons/c4.png (100%) rename {site => docs}/assets/icons/c5.png (100%) rename {site => docs}/assets/icons/fb.png (100%) rename {site => docs}/assets/icons/github.png (100%) rename {site => docs}/assets/icons/in.png (100%) rename {site => docs}/assets/icons/li.png (100%) rename {site => docs}/assets/icons/p1.png (100%) rename {site => docs}/assets/icons/p3.png (100%) rename {site => docs}/assets/icons/p6.png (100%) rename {site => docs}/assets/icons/rev.png (100%) rename {site => docs}/assets/icons/rev2.png (100%) rename {site => docs}/assets/icons/rev3.png (100%) rename {site => docs}/assets/icons/slack.png (100%) rename {site => docs}/assets/icons/tt.png (100%) rename {site => docs}/assets/icons/tw.png (100%) rename {site => docs}/assets/icons/up.png (100%) rename {site => docs}/assets/images/gh_engineer.jpg (100%) rename {site => docs}/assets/images/logo.png (100%) rename {site => docs}/assets/images/placeholder.jpg (100%) rename {site => docs}/assets/js/bootstrap.min.js (100%) rename {site => docs}/assets/js/contact.js (100%) rename {site => docs}/assets/js/custom.js (100%) rename {site => docs}/assets/js/jquery-2.1.1.js (100%) rename {site => docs}/assets/js/jquery.accordion.js (100%) rename {site => docs}/assets/js/jquery.validate.min.js (100%) rename {site => docs}/assets/js/live.js (100%) rename {site => docs}/assets/js/menu-2.js (100%) rename {site => docs}/assets/js/menu.js (100%) rename {site => docs}/assets/js/plugins.js (100%) rename {site => docs}/assets/js/popper.min.js (100%) rename {site => docs}/assets/js/validator.js (100%) rename {site => docs}/assets/video/cat.webm (100%) rename {site => docs}/assets/video/coding.webm (100%) rename {site => docs}/assets/video/placeholder.mp4 (100%) rename {site => docs}/favicon.ico (100%) rename {site => docs}/feed.xml (100%) rename {site => docs}/index.md (100%) rename {site => docs}/js/background.js (100%) rename {site => docs}/js/icons.js (100%) delete mode 100644 site/docs/architecture.md delete mode 100644 site/docs/conversion.md delete mode 100644 site/docs/development.md delete mode 100644 site/docs/getting-started.md delete mode 100644 site/docs/images/design_diagram.png delete mode 100644 site/docs/images/kompose-maven-output-diagram.png delete mode 100644 site/docs/installation.md delete mode 100644 site/docs/integrations.md delete mode 100644 site/docs/maven-example.md delete mode 100644 site/docs/user-guide.md diff --git a/.gitignore b/.gitignore index d608f78b2..19fcdb714 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,8 @@ bin changes.txt # Ignore built site -site/_site/ -site/.jekyll-cache/ +docs/_site/ +docs/.jekyll-cache/ # # GO SPECIFIC diff --git a/site/404.html b/docs/404.html similarity index 100% rename from site/404.html rename to docs/404.html diff --git a/site/Gemfile b/docs/Gemfile similarity index 100% rename from site/Gemfile rename to docs/Gemfile diff --git a/site/Gemfile.lock b/docs/Gemfile.lock similarity index 100% rename from site/Gemfile.lock rename to docs/Gemfile.lock diff --git a/site/LICENSE b/docs/LICENSE similarity index 100% rename from site/LICENSE rename to docs/LICENSE diff --git a/site/README.md b/docs/README.md similarity index 100% rename from site/README.md rename to docs/README.md diff --git a/site/_config.yml b/docs/_config.yml similarity index 100% rename from site/_config.yml rename to docs/_config.yml diff --git a/site/_data/dates.yml b/docs/_data/dates.yml similarity index 100% rename from site/_data/dates.yml rename to docs/_data/dates.yml diff --git a/site/_data/menu.yml b/docs/_data/menu.yml similarity index 100% rename from site/_data/menu.yml rename to docs/_data/menu.yml diff --git a/site/_foobar.yml b/docs/_foobar.yml similarity index 100% rename from site/_foobar.yml rename to docs/_foobar.yml diff --git a/site/_includes/footer.html b/docs/_includes/footer.html similarity index 100% rename from site/_includes/footer.html rename to docs/_includes/footer.html diff --git a/site/_includes/meta.html b/docs/_includes/meta.html similarity index 100% rename from site/_includes/meta.html rename to docs/_includes/meta.html diff --git a/site/_includes/navbar.html b/docs/_includes/navbar.html similarity index 100% rename from site/_includes/navbar.html rename to docs/_includes/navbar.html diff --git a/site/_layouts/default.html b/docs/_layouts/default.html similarity index 100% rename from site/_layouts/default.html rename to docs/_layouts/default.html diff --git a/site/_layouts/index.html b/docs/_layouts/index.html similarity index 100% rename from site/_layouts/index.html rename to docs/_layouts/index.html diff --git a/site/assets/css/animate.css b/docs/assets/css/animate.css similarity index 100% rename from site/assets/css/animate.css rename to docs/assets/css/animate.css diff --git a/site/assets/css/bootstrap.min.css b/docs/assets/css/bootstrap.min.css similarity index 100% rename from site/assets/css/bootstrap.min.css rename to docs/assets/css/bootstrap.min.css diff --git a/site/assets/css/github-markdown.css b/docs/assets/css/github-markdown.css similarity index 100% rename from site/assets/css/github-markdown.css rename to docs/assets/css/github-markdown.css diff --git a/site/assets/css/ionicons.min.css b/docs/assets/css/ionicons.min.css similarity index 100% rename from site/assets/css/ionicons.min.css rename to docs/assets/css/ionicons.min.css diff --git a/site/assets/css/jquery.accordion.css b/docs/assets/css/jquery.accordion.css similarity index 100% rename from site/assets/css/jquery.accordion.css rename to docs/assets/css/jquery.accordion.css diff --git a/site/assets/css/magnific-popup.css b/docs/assets/css/magnific-popup.css similarity index 100% rename from site/assets/css/magnific-popup.css rename to docs/assets/css/magnific-popup.css diff --git a/site/assets/css/owl.carousel.css b/docs/assets/css/owl.carousel.css similarity index 100% rename from site/assets/css/owl.carousel.css rename to docs/assets/css/owl.carousel.css diff --git a/site/assets/css/owl.theme.css b/docs/assets/css/owl.theme.css similarity index 100% rename from site/assets/css/owl.theme.css rename to docs/assets/css/owl.theme.css diff --git a/site/assets/css/style.css b/docs/assets/css/style.css similarity index 100% rename from site/assets/css/style.css rename to docs/assets/css/style.css diff --git a/site/assets/favicons/android-chrome-192x192.png b/docs/assets/favicons/android-chrome-192x192.png similarity index 100% rename from site/assets/favicons/android-chrome-192x192.png rename to docs/assets/favicons/android-chrome-192x192.png diff --git a/site/assets/favicons/android-chrome-256x256.png b/docs/assets/favicons/android-chrome-256x256.png similarity index 100% rename from site/assets/favicons/android-chrome-256x256.png rename to docs/assets/favicons/android-chrome-256x256.png diff --git a/site/assets/favicons/android-chrome-384x384.png b/docs/assets/favicons/android-chrome-384x384.png similarity index 100% rename from site/assets/favicons/android-chrome-384x384.png rename to docs/assets/favicons/android-chrome-384x384.png diff --git a/site/assets/favicons/apple-touch-icon.png b/docs/assets/favicons/apple-touch-icon.png similarity index 100% rename from site/assets/favicons/apple-touch-icon.png rename to docs/assets/favicons/apple-touch-icon.png diff --git a/site/assets/favicons/browserconfig.xml b/docs/assets/favicons/browserconfig.xml similarity index 100% rename from site/assets/favicons/browserconfig.xml rename to docs/assets/favicons/browserconfig.xml diff --git a/site/assets/favicons/favicon-16x16.png b/docs/assets/favicons/favicon-16x16.png similarity index 100% rename from site/assets/favicons/favicon-16x16.png rename to docs/assets/favicons/favicon-16x16.png diff --git a/site/assets/favicons/favicon-32x32.png b/docs/assets/favicons/favicon-32x32.png similarity index 100% rename from site/assets/favicons/favicon-32x32.png rename to docs/assets/favicons/favicon-32x32.png diff --git a/site/assets/favicons/favicon.ico b/docs/assets/favicons/favicon.ico similarity index 100% rename from site/assets/favicons/favicon.ico rename to docs/assets/favicons/favicon.ico diff --git a/site/assets/favicons/mstile-150x150.png b/docs/assets/favicons/mstile-150x150.png similarity index 100% rename from site/assets/favicons/mstile-150x150.png rename to docs/assets/favicons/mstile-150x150.png diff --git a/site/assets/favicons/safari-pinned-tab.svg b/docs/assets/favicons/safari-pinned-tab.svg similarity index 100% rename from site/assets/favicons/safari-pinned-tab.svg rename to docs/assets/favicons/safari-pinned-tab.svg diff --git a/site/assets/favicons/site.webmanifest b/docs/assets/favicons/site.webmanifest similarity index 100% rename from site/assets/favicons/site.webmanifest rename to docs/assets/favicons/site.webmanifest diff --git a/site/assets/fonts/ionicons.eot b/docs/assets/fonts/ionicons.eot similarity index 100% rename from site/assets/fonts/ionicons.eot rename to docs/assets/fonts/ionicons.eot diff --git a/site/assets/fonts/ionicons.svg b/docs/assets/fonts/ionicons.svg similarity index 100% rename from site/assets/fonts/ionicons.svg rename to docs/assets/fonts/ionicons.svg diff --git a/site/assets/fonts/ionicons.ttf b/docs/assets/fonts/ionicons.ttf similarity index 100% rename from site/assets/fonts/ionicons.ttf rename to docs/assets/fonts/ionicons.ttf diff --git a/site/assets/fonts/ionicons.woff b/docs/assets/fonts/ionicons.woff similarity index 100% rename from site/assets/fonts/ionicons.woff rename to docs/assets/fonts/ionicons.woff diff --git a/site/assets/fonts/ionicons.woff2 b/docs/assets/fonts/ionicons.woff2 similarity index 100% rename from site/assets/fonts/ionicons.woff2 rename to docs/assets/fonts/ionicons.woff2 diff --git a/site/assets/icons/c1.png b/docs/assets/icons/c1.png similarity index 100% rename from site/assets/icons/c1.png rename to docs/assets/icons/c1.png diff --git a/site/assets/icons/c2.png b/docs/assets/icons/c2.png similarity index 100% rename from site/assets/icons/c2.png rename to docs/assets/icons/c2.png diff --git a/site/assets/icons/c3.png b/docs/assets/icons/c3.png similarity index 100% rename from site/assets/icons/c3.png rename to docs/assets/icons/c3.png diff --git a/site/assets/icons/c4.png b/docs/assets/icons/c4.png similarity index 100% rename from site/assets/icons/c4.png rename to docs/assets/icons/c4.png diff --git a/site/assets/icons/c5.png b/docs/assets/icons/c5.png similarity index 100% rename from site/assets/icons/c5.png rename to docs/assets/icons/c5.png diff --git a/site/assets/icons/fb.png b/docs/assets/icons/fb.png similarity index 100% rename from site/assets/icons/fb.png rename to docs/assets/icons/fb.png diff --git a/site/assets/icons/github.png b/docs/assets/icons/github.png similarity index 100% rename from site/assets/icons/github.png rename to docs/assets/icons/github.png diff --git a/site/assets/icons/in.png b/docs/assets/icons/in.png similarity index 100% rename from site/assets/icons/in.png rename to docs/assets/icons/in.png diff --git a/site/assets/icons/li.png b/docs/assets/icons/li.png similarity index 100% rename from site/assets/icons/li.png rename to docs/assets/icons/li.png diff --git a/site/assets/icons/p1.png b/docs/assets/icons/p1.png similarity index 100% rename from site/assets/icons/p1.png rename to docs/assets/icons/p1.png diff --git a/site/assets/icons/p3.png b/docs/assets/icons/p3.png similarity index 100% rename from site/assets/icons/p3.png rename to docs/assets/icons/p3.png diff --git a/site/assets/icons/p6.png b/docs/assets/icons/p6.png similarity index 100% rename from site/assets/icons/p6.png rename to docs/assets/icons/p6.png diff --git a/site/assets/icons/rev.png b/docs/assets/icons/rev.png similarity index 100% rename from site/assets/icons/rev.png rename to docs/assets/icons/rev.png diff --git a/site/assets/icons/rev2.png b/docs/assets/icons/rev2.png similarity index 100% rename from site/assets/icons/rev2.png rename to docs/assets/icons/rev2.png diff --git a/site/assets/icons/rev3.png b/docs/assets/icons/rev3.png similarity index 100% rename from site/assets/icons/rev3.png rename to docs/assets/icons/rev3.png diff --git a/site/assets/icons/slack.png b/docs/assets/icons/slack.png similarity index 100% rename from site/assets/icons/slack.png rename to docs/assets/icons/slack.png diff --git a/site/assets/icons/tt.png b/docs/assets/icons/tt.png similarity index 100% rename from site/assets/icons/tt.png rename to docs/assets/icons/tt.png diff --git a/site/assets/icons/tw.png b/docs/assets/icons/tw.png similarity index 100% rename from site/assets/icons/tw.png rename to docs/assets/icons/tw.png diff --git a/site/assets/icons/up.png b/docs/assets/icons/up.png similarity index 100% rename from site/assets/icons/up.png rename to docs/assets/icons/up.png diff --git a/site/assets/images/gh_engineer.jpg b/docs/assets/images/gh_engineer.jpg similarity index 100% rename from site/assets/images/gh_engineer.jpg rename to docs/assets/images/gh_engineer.jpg diff --git a/site/assets/images/logo.png b/docs/assets/images/logo.png similarity index 100% rename from site/assets/images/logo.png rename to docs/assets/images/logo.png diff --git a/site/assets/images/placeholder.jpg b/docs/assets/images/placeholder.jpg similarity index 100% rename from site/assets/images/placeholder.jpg rename to docs/assets/images/placeholder.jpg diff --git a/site/assets/js/bootstrap.min.js b/docs/assets/js/bootstrap.min.js similarity index 100% rename from site/assets/js/bootstrap.min.js rename to docs/assets/js/bootstrap.min.js diff --git a/site/assets/js/contact.js b/docs/assets/js/contact.js similarity index 100% rename from site/assets/js/contact.js rename to docs/assets/js/contact.js diff --git a/site/assets/js/custom.js b/docs/assets/js/custom.js similarity index 100% rename from site/assets/js/custom.js rename to docs/assets/js/custom.js diff --git a/site/assets/js/jquery-2.1.1.js b/docs/assets/js/jquery-2.1.1.js similarity index 100% rename from site/assets/js/jquery-2.1.1.js rename to docs/assets/js/jquery-2.1.1.js diff --git a/site/assets/js/jquery.accordion.js b/docs/assets/js/jquery.accordion.js similarity index 100% rename from site/assets/js/jquery.accordion.js rename to docs/assets/js/jquery.accordion.js diff --git a/site/assets/js/jquery.validate.min.js b/docs/assets/js/jquery.validate.min.js similarity index 100% rename from site/assets/js/jquery.validate.min.js rename to docs/assets/js/jquery.validate.min.js diff --git a/site/assets/js/live.js b/docs/assets/js/live.js similarity index 100% rename from site/assets/js/live.js rename to docs/assets/js/live.js diff --git a/site/assets/js/menu-2.js b/docs/assets/js/menu-2.js similarity index 100% rename from site/assets/js/menu-2.js rename to docs/assets/js/menu-2.js diff --git a/site/assets/js/menu.js b/docs/assets/js/menu.js similarity index 100% rename from site/assets/js/menu.js rename to docs/assets/js/menu.js diff --git a/site/assets/js/plugins.js b/docs/assets/js/plugins.js similarity index 100% rename from site/assets/js/plugins.js rename to docs/assets/js/plugins.js diff --git a/site/assets/js/popper.min.js b/docs/assets/js/popper.min.js similarity index 100% rename from site/assets/js/popper.min.js rename to docs/assets/js/popper.min.js diff --git a/site/assets/js/validator.js b/docs/assets/js/validator.js similarity index 100% rename from site/assets/js/validator.js rename to docs/assets/js/validator.js diff --git a/site/assets/video/cat.webm b/docs/assets/video/cat.webm similarity index 100% rename from site/assets/video/cat.webm rename to docs/assets/video/cat.webm diff --git a/site/assets/video/coding.webm b/docs/assets/video/coding.webm similarity index 100% rename from site/assets/video/coding.webm rename to docs/assets/video/coding.webm diff --git a/site/assets/video/placeholder.mp4 b/docs/assets/video/placeholder.mp4 similarity index 100% rename from site/assets/video/placeholder.mp4 rename to docs/assets/video/placeholder.mp4 diff --git a/site/favicon.ico b/docs/favicon.ico similarity index 100% rename from site/favicon.ico rename to docs/favicon.ico diff --git a/site/feed.xml b/docs/feed.xml similarity index 100% rename from site/feed.xml rename to docs/feed.xml diff --git a/site/index.md b/docs/index.md similarity index 100% rename from site/index.md rename to docs/index.md diff --git a/site/js/background.js b/docs/js/background.js similarity index 100% rename from site/js/background.js rename to docs/js/background.js diff --git a/site/js/icons.js b/docs/js/icons.js similarity index 100% rename from site/js/icons.js rename to docs/js/icons.js diff --git a/site/docs/architecture.md b/site/docs/architecture.md deleted file mode 100644 index dd162ae82..000000000 --- a/site/docs/architecture.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: default -permalink: /architecture/ -title: Architecture -redirect_from: - - /docs/architecture.md/ - - /docs/architecture/ ---- - -# Architecture and Internal Design - -* TOC -{:toc} - -`kompose` has 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 only Loader and Transformer interfaces are defined. - -![Design Diagram](/docs/images/design_diagram.png) - -## Loader - -Loader reads input file (now `kompose` supports [Docker Compose](https://docs.docker.com/compose) v1, v2 and converts it to KomposeObject. - -Loader is represented by a Loader interface: - -```go -type Loader interface { - LoadFile(file string) kobject.KomposeObject -} -``` - -Every loader “implementation” should be placed into `kompose/pkg/loader` (like compose). More input formats will be supported in future. You can take a look for more details at: - -* [kompose/pkg/loader](https://github.com/kubernetes/kompose/tree/master/pkg/loader) -* [kompose/pkg/loader/compose](https://github.com/kubernetes/kompose/tree/master/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/kubernetes/kompose/blob/master/pkg/kobject/kobject.go)): - -```go -// 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: - -```go -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](https://github.com/kubernetes/kompose/tree/master/pkg/transformer) -* [kompose/pkg/transformer/kubernetes](https://github.com/kubernetes/kompose/tree/master/pkg/transformer/kubernetes) -* [kompose/pkg/transformer/openshift](https://github.com/kubernetes/kompose/tree/master/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. diff --git a/site/docs/conversion.md b/site/docs/conversion.md deleted file mode 100644 index 79d19d4e5..000000000 --- a/site/docs/conversion.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: default -title: Conversion -permalink: /conversion/ -redirect_from: - - /docs/conversion.md/ - - /docs/conversion/ ---- - -# Conversion Matrix - -* TOC -{:toc} - -This document outlines all possible conversion details regarding `docker-compose.yaml` values to Kubernetes / OpenShift artifacts. - -## Version Table - -| Supported | Compose Version | Docker Engine Version | -|------------|-----------------|-----------------------| -| N | 3.8 | 19.03.0+ | -| N | 3.7 | 18.06.0+ | -| N | 3.6 | 18.02.0+ | -| N | 3.5 | 17.12.0+ | -| N | 3.4 | 17.09.0+ | -| Y | 3.3 | 17.06.0+ | -| Y | 3.2 | 17.04.0+ | -| Y | 3.1 | 1.13.1+ | -| Y | 3.0 | 1.13.0+ | -| Y | 2.4 | 17.12.0+ | -| Y | 2.3 | 17.06.0+ | -| Y | 2.2 | 1.13.0+ | -| Y | 2.1 | 1.12.0+ | -| Y | 2.0 | 1.10.0+ | - -**Note:** We don't support anything 3.4 and above at the moment. It is reccomended to specify `version: "3.3"` in your `docker-compose.yaml` and converting. We use a library called [libcompose](https://github.com/docker/libcompose) that supports up to version `3.3`. If you are interested in adding additional support, please open up a PR! - -## Conversion Table - -__Glossary:__ - -- __✓:__ Converts -- __-:__ Not in this Docker Compose Version -- __n:__ Not yet implemented -- __x:__ Not applicable / no 1-1 conversion - -| Keys | V1 | V2 | V3 | Kubernetes / OpenShift | Notes | -|------------------------|----|----|----|----------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------| -| build | ✓ | ✓ | ✓ | | Builds/Pushes to Docker repository. See [user guide on build and push image](https://kompose.io/user-guide/#build-and-push-image) | -| build: context | ✓ | ✓ | ✓ | | | -| build: dockerfile | ✓ | ✓ | ✓ | | | -| build: args | n | n | n | | | -| build: cache_from | - | - | n | | | -| cap_add | ✓ | ✓ | ✓ | Container.SecurityContext.Capabilities.Add | | -| cap_drop | ✓ | ✓ | ✓ | Container.SecurityContext.Capabilities.Drop | | -| command | ✓ | ✓ | ✓ | Container.Args | | -| configs | n | n | ✓ | | | -| configs: short-syntax | n | n | ✓ | | Only create configMap | -| configs: long-syntax | n | n | ✓ | | If target path is /, ignore this and only create configMap | -| cgroup_parent | x | x | x | | Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/11986 | -| container_name | ✓ | ✓ | ✓ | Metadata.Name + Deployment.Spec.Containers.Name | | -| credential_spec | x | x | x | | Only applicable to Windows containers | -| deploy | - | - | ✓ | | | -| deploy: mode | - | - | ✓ | | | -| deploy: replicas | - | - | ✓ | Deployment.Spec.Replicas / DeploymentConfig.Spec.Replicas | | -| deploy: placement | - | - | ✓ | Affinity | | -| deploy: update_config | - | - | ✓ | Workload.Spec.Strategy | Deployment / DeploymentConfig | -| deploy: resources | - | - | ✓ | Containers.Resources.Limits.Memory / Containers.Resources.Limits.CPU | Support for memory as well as cpu | -| deploy: restart_policy | - | - | ✓ | Pod generation | This generated a Pod, see the [user guide on restart](http://kompose.io/user-guide/#restart) | -| deploy: labels | - | - | ✓ | Workload.Metadata.Labels | Only applied to workload resource | -| devices | x | x | x | | Not supported within Kubernetes, See issue https://github.com/kubernetes/kubernetes/issues/5607 | -| depends_on | x | x | x | | | -| dns | x | x | x | | Not used within Kubernetes. Kubernetes uses a managed DNS server | -| dns_search | x | x | x | | See `dns` key | -| domainname | ✓ | ✓ | ✓ | SubDomain | | -| tmpfs | ✓ | ✓ | ✓ | Containers.Volumes.EmptyDir | Creates emptyDirvolume with medium set to Memory & mounts given directory inside container | -| entrypoint | ✓ | ✓ | ✓ | Container.Command | | -| env_file | n | n | ✓ | | | -| environment | ✓ | ✓ | ✓ | Container.Env | | -| expose | ✓ | ✓ | ✓ | Service.Spec.Ports | | -| endpoint_mode | n | n | ✓ | | If endpoint_mode=vip, the created Service will be forced to set to NodePort type | -| extends | ✓ | ✓ | ✓ | | Extends by utilizing the same image supplied | -| external_links | x | x | x | | Kubernetes uses a flat-structure for all containers and thus external_links does not have a 1-1 conversion | -| extra_hosts | n | n | n | | | -| group_add | ✓ | ✓ | ✓ | | | -| healthcheck | - | n | ✓ | | | -| hostname | ✓ | ✓ | ✓ | HostName | | -| image | ✓ | ✓ | ✓ | Deployment.Spec.Containers.Image | | -| isolation | x | x | x | | Not applicable as this applies to Windows with HyperV support | -| labels | ✓ | ✓ | ✓ | Metadata.Annotations | | -| links | x | x | x | | All containers in the same pod are accessible in Kubernetes | -| logging | x | x | x | | Kubernetes has built-in logging support at the node-level | -| network_mode | x | x | x | | Kubernetes uses its own cluster networking | -| networks | ✓ | ✓ | ✓ | | See `networks` key | -| networks: aliases | x | x | x | | See `networks` key | -| networks: addresses | x | x | x | | See `networks` key | -| pid | ✓ | ✓ | ✓ | HostPID | | -| ports | ✓ | ✓ | ✓ | Service.Spec.Ports | | -| ports: short-syntax | ✓ | ✓ | ✓ | Service.Spec.Ports | | -| ports: long-syntax | - | - | ✓ | Service.Spec.Ports | | -| secrets | - | - | ✓ | Secret | External Secret is not Supported | -| secrets: short-syntax | - | - | ✓ | Secret | External Secret is not Supported | -| secrets: long-syntax | - | - | ✓ | Secret | External Secret is not Supported | -| security_opt | x | x | x | | Kubernetes uses its own container naming scheme | -| stop_grace_period | ✓ | ✓ | ✓ | TerminationGracePeriodSeconds | | -| stop_signal | x | x | x | | Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/30051 | -| sysctls | n | n | n | | | -| ulimits | x | x | x | | Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/3595 | -| userns_mode | x | x | x | | Not supported within Kubernetes and ignored in Docker Compose Version 3 | -| volumes | ✓ | ✓ | ✓ | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster | -| volumes: short-syntax | ✓ | ✓ | ✓ | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster | -| volumes: long-syntax | - | - | ✓ | PersistentVolumeClaim | Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster | -| restart | ✓ | ✓ | ✓ | | | -| | | | | | | -| __Volume__ | x | x | x | | | -| driver | x | x | x | | | -| driver_opts | x | x | x | | | -| external | x | x | x | | | -| labels | x | x | x | | | -| | | | | | | -| __Network__ | x | x | x | | | -| driver | x | x | x | | | -| driver_opts | x | x | x | | | -| enable_ipv6 | x | x | x | | | -| ipam | x | x | x | | | -| internal | x | x | x | | | -| labels | x | x | x | | | -| external | x | x | x | | | diff --git a/site/docs/development.md b/site/docs/development.md deleted file mode 100644 index 073e0df4d..000000000 --- a/site/docs/development.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: default -permalink: /development/ -title: Development -redirect_from: - - /docs/development.md/ - - /docs/development/ ---- - -# Development Guide - -## Building Kompose - -Read about building kompose [here](https://github.com/kubernetes/kompose#building). - -## Workflow -### Fork the main repository - -1. Go to https://github.com/kubernetes/kompose -2. Click the "Fork" button (at the top right) - -### Clone your fork - -The commands below require that you have $GOPATH. We highly recommended you put Kompose' code into your $GOPATH. - -```console -git clone https://github.com/$YOUR_GITHUB_USERNAME/kompose.git $GOPATH/src/github.com/kubernetes/kompose -cd $GOPATH/src/github.com/kubernetes/kompose -git remote add upstream 'https://github.com/kubernetes/kompose' -``` - -### Create a branch and make changes - -```console -git checkout -b myfeature -# Make your code changes -``` - -### Keeping your development fork in sync - -```console -git fetch upstream -git rebase upstream/master -``` - -Note: If you have write access to the main repository at github.com/kubernetes/kompose, you should modify your git configuration so that you can't accidentally push to upstream: - -```console -git remote set-url --push upstream no_push -``` - -### Committing changes to your fork - -```console -git commit -git push -f origin myfeature -``` - -### Creating a pull request - -1. Visit https://github.com/$YOUR_GITHUB_USERNAME/kompose.git -2. Click the "Compare and pull request" button next to your "myfeature" branch. -3. Check out the pull request process for more details - -## Go Modules and dependency management - -Kompose uses [Go Modules](https://github.com/golang/go/wiki/Modules) to manage dependencies. -If you want to make changes to dependencies please make sure that `go.mod` and `go.sum` are updated properly. - -##### Updating Kubernetes and OpenShift -Kubernetes version depends on what version is OpenShift using. -OpenShift is using forked Kubernetes to carry some patches. -Currently it is not possible to use different Kubernetes version from version that OpenShift uses. -(for more see comments in `go.mod`) - -### Adding CLI tests - -[Kompose CLI tests](https://github.com/kubernetes/kompose/tree/master/script/test/cmd) run `kompose convert` with docker-compose files, and cross-check the k8s and OpenShift artifacts generated with the template files. - -To generate CLI tests, please run `make gen-cmd`. - -### CI - -For Kompose, we use numerous CI's: - - - [TravisCI](https://travis-ci.org/kubernetes/kompose): Unit and CLI tests - - [SemaphoreCI](https://semaphoreci.com/cdrage/kompose-2): Integration / cluster tests - - [Fabric8CI](http://jenkins.cd.k8s.fabric8.io/): Secondary integration tests / future cluster tests diff --git a/site/docs/getting-started.md b/site/docs/getting-started.md deleted file mode 100644 index f18eb94a6..000000000 --- a/site/docs/getting-started.md +++ /dev/null @@ -1,306 +0,0 @@ ---- -layout: default -permalink: /getting-started/ -title: Getting Started -redirect_from: - - /docs/getting-started.md/ - - /docs/getting-started/ ---- - -# Getting Started - -* TOC -{:toc} - -This is how you'll get started with Kompose! - -There are three different guides depending on your container orchestrator as well as operating system. - -For beginners and the most compatibility, follow the _Minikube and Kompose_ guide. - -## Minikube and Kompose - -In this guide, we'll deploy a sample `docker-compose.yaml` file to a Kubernetes cluster. - -Requirements: - - [minikube](https://github.com/kubernetes/minikube) - - [kompose](https://github.com/kubernetes/kompose) - -__Start `minikube`:__ - -If you don't already have a Kubernetes cluster running, [minikube](https://github.com/kubernetes/minikube) is the best way to get started. - -```sh -$ minikube start -Starting local Kubernetes v1.7.5 cluster... -Starting VM... -Getting VM IP address... -Moving files into cluster... -Setting up certs... -Connecting to cluster... -Setting up kubeconfig... -Starting cluster components... -Kubectl is now configured to use the cluster -``` - -__Download an [example Docker Compose file](https://raw.githubusercontent.com/kubernetes/kompose/master/examples/docker-compose.yaml), or use your own:__ - -```sh -wget https://raw.githubusercontent.com/kubernetes/kompose/master/examples/docker-compose.yaml -``` - -__Convert your Docker Compose file to Kubernetes:__ - -Run `kompose convert` in the same directory as your `docker-compose.yaml` file. - -```sh -$ kompose convert -INFO Kubernetes file "frontend-service.yaml" created -INFO Kubernetes file "redis-master-service.yaml" created -INFO Kubernetes file "redis-slave-service.yaml" created -INFO Kubernetes file "frontend-deployment.yaml" created -INFO Kubernetes file "redis-master-deployment.yaml" created -INFO Kubernetes file "redis-slave-deployment.yaml" created -``` - -Then you can use `kubectl apply` to create these resources in kubernetes. - - -__Access the newly deployed service:__ - -Now that your service has been deployed, let's access it. - -If you're using `minikube` you may access it via the `minikube service` command. - -```sh -$ minikube service frontend -``` - -Otherwise, use `kubectl` to see what IP the service is using: - -```sh -$ kubectl describe svc frontend -Name: frontend -Namespace: default -Labels: service=frontend -Selector: service=frontend -Type: LoadBalancer -IP: 10.0.0.183 -LoadBalancer Ingress: 123.45.67.89 -Port: 80 80/TCP -NodePort: 80 31144/TCP -Endpoints: 172.17.0.4:80 -Session Affinity: None -No events. - -``` - -Note: If you're using a cloud provider, your IP will be listed next to `LoadBalancer Ingress`. - -If you have yet to expose your service (for example, within GCE), use the command: - -```sh -kubectl expose deployment frontend --type="LoadBalancer" -``` - -To check functionality, you may also `curl` the URL. - -```sh -$ curl http://123.45.67.89 -``` - -## Minishift and Kompose - -In this guide, we'll deploy a sample `docker-compose.yaml` file to an OpenShift cluster. - -Requirements: - - [minishift](https://github.com/minishift/minishift) - - [kompose](https://github.com/kubernetes/kompose) - - An OpenShift route created - -__Note:__ The service will NOT be accessible until you create an OpenShift route with `oc expose`. You must also have a virtualization environment setup. By default, `minishift` uses KVM. - -__Start `minishift`:__ - -[Minishift](https://github.com/minishift/minishift) is a tool that helps run OpenShift locally using a single-node cluster inside of a VM. Similar to [minikube](https://github.com/kubernetes/minikube). - -```sh -$ minishift start -Starting local OpenShift cluster using 'kvm' hypervisor... --- Checking OpenShift client ... OK --- Checking Docker client ... OK --- Checking Docker version ... OK --- Checking for existing OpenShift container ... OK -... -``` - -__Download an [example Docker Compose file](https://raw.githubusercontent.com/kubernetes/kompose/master/examples/docker-compose.yaml), or use your own:__ - -```sh -wget https://raw.githubusercontent.com/kubernetes/kompose/master/examples/docker-compose.yaml -``` - -__Convert your Docker Compose file to OpenShift:__ - -Run `kompose convert --provider=openshift` in the same directory as your `docker-compose.yaml` file. - -```sh -$ kompose convert --provider=openshift -INFO OpenShift file "frontend-service.yaml" created -INFO OpenShift file "redis-master-service.yaml" created -INFO OpenShift file "redis-slave-service.yaml" created -INFO OpenShift file "frontend-deploymentconfig.yaml" created -INFO OpenShift file "frontend-imagestream.yaml" created -INFO OpenShift file "redis-master-deploymentconfig.yaml" created -INFO OpenShift file "redis-master-imagestream.yaml" created -INFO OpenShift file "redis-slave-deploymentconfig.yaml" created -INFO OpenShift file "redis-slave-imagestream.yaml" created -``` - -Then you can use `kubectl apply` to create these resources in OpenShift cluster. - -__Access the newly deployed service:__ - -After deployment, you must create an OpenShift route in order to access the service. - -If you're using `minishift`, you'll use a combination of `oc` and `minishift` commands to access the service. - -Create a route for the `frontend` service using `oc`: - -```sh -$ oc expose service/frontend -route "frontend" exposed -``` - -Access the `frontend` service with `minishift`: - -```sh -$ minishift openshift service frontend --namespace=myproject -Opening the service myproject/frontend in the default browser... -``` - -You can also access the GUI interface of OpenShift for an overview of the deployed containers: - -```sh -$ minishift console -Opening the OpenShift Web console in the default browser... -``` - -## RHEL and Kompose - -In this guide, we'll deploy a sample `docker-compose.yaml` file using both RHEL (Red Hat Enterprise Linux) and OpenShift. - -Requirements: - - Red Hat Enterprise Linux 7.4 - - [Red Hat Development Suite](https://developers.redhat.com/products/devsuite/overview/) - - Which includes: - - [minishift](https://github.com/minishift/minishift) - - [kompose](https://github.com/kubernetes/kompose) - -__Note:__ A KVM hypervisor must be setup in order to correctly use `minishift` on RHEL. You can set it up via the [CDK Documentation](https://access.redhat.com/documentation/en-us/red_hat_container_development_kit/3.1/html-single/getting_started_guide/index#setup-virtualization) under "Set up your virtualization environment". - -__Install Red Hat Development Suite:__ - -Before we are able to use both `minishift` and `kompose`, DevSuite must be installed. A more concise [installation document is available](https://developers.redhat.com/products/cdk/hello-world#fndtn-rhel). - -Change to root. - -```sh -$ su - -``` - -Enable the Red Hat Developer Tools software repository. - -```sh -$ subscription-manager repos --enable rhel-7-server-devtools-rpms -$ subscription-manager repos --enable rhel-server-rhscl-7-rpms -``` - -Add the Red Hat Developer Tools key to your system. - -```sh -$ cd /etc/pki/rpm-gpg -$ wget -O RPM-GPG-KEY-redhat-devel https://www.redhat.com/security/data/a5787476.txt -$ rpm --import RPM-GPG-KEY-redhat-devel -``` - -Install Red Hat Development Suite and Kompose. - -```sh -$ yum install rh-devsuite kompose -y -``` - -__Start `minishift`:__ - -Before we begin, we must do a few preliminary steps setting up `minishift`. - -```sh -$ su - -$ ln -s /var/lib/cdk-minishift-3.0.0/minishift /usr/bin/minishift -$ minishift setup-cdk --force --default-vm-driver="kvm" -$ ln -s /home/$(whoami)/.minishift/cache/oc/v3.5.5.8/oc /usr/bin/oc -``` - -Now we may start `minishift`. - -```sh -$ minishift start -Starting local OpenShift cluster using 'kvm' hypervisor... --- Checking OpenShift client ... OK --- Checking Docker client ... OK --- Checking Docker version ... OK --- Checking for existing OpenShift container ... OK -... -``` - -__Download an [example Docker Compose file](https://raw.githubusercontent.com/kubernetes/kompose/master/examples/docker-compose.yaml), or use your own:__ - -```sh -wget https://raw.githubusercontent.com/kubernetes/kompose/master/examples/docker-compose.yaml -``` - -__Convert your Docker Compose file to OpenShift:__ - -Run `kompose convert --provider=openshift` in the same directory as your `docker-compose.yaml` file. - -```sh -$ kompose convert --provider=openshift -INFO OpenShift file "frontend-service.yaml" created -INFO OpenShift file "redis-master-service.yaml" created -INFO OpenShift file "redis-slave-service.yaml" created -INFO OpenShift file "frontend-deploymentconfig.yaml" created -INFO OpenShift file "frontend-imagestream.yaml" created -INFO OpenShift file "redis-master-deploymentconfig.yaml" created -INFO OpenShift file "redis-master-imagestream.yaml" created -INFO OpenShift file "redis-slave-deploymentconfig.yaml" created -INFO OpenShift file "redis-slave-imagestream.yaml" created -``` - -Then you can use `kubectl apply` to create these resources in OpenShift. - -__Access the newly deployed service:__ - -After deployment, you must create an OpenShift route in order to access the service. - -If you're using `minishift`, you'll use a combination of `oc` and `minishift` commands to access the service. - -Create a route for the `frontend` service using `oc`: - -```sh -$ oc expose service/frontend -route "frontend" exposed -``` - -Access the `frontend` service with `minishift`: - -```sh -$ minishift openshift service frontend --namespace=myproject -Opening the service myproject/frontend in the default browser... -``` - -You can also access the GUI interface of OpenShift for an overview of the deployed containers: - -```sh -$ minishift console -Opening the OpenShift Web console in the default browser... -``` diff --git a/site/docs/images/design_diagram.png b/site/docs/images/design_diagram.png deleted file mode 100644 index 460d4abd7402b2a8f512b3f0b6fb5ac26ce2faee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125039 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�&oY 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 J)Qd*<{s)LFzPA7X diff --git a/site/docs/installation.md b/site/docs/installation.md deleted file mode 100644 index a789b617e..000000000 --- a/site/docs/installation.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: default -permalink: /installation/ -title: Installation -redirect_from: - - /docs/installation.md/ - - /docs/installation/ ---- - -# Installation - -* TOC -{:toc} - -We have multiple ways to install Kompose. Our preferred method is downloading the binary from the latest GitHub release. - -## GitHub release - -Kompose is released via GitHub on a three-week cycle, you can see all current releases on the [GitHub release page](https://github.com/kubernetes/kompose/releases). - -__Linux and macOS:__ - -```sh -# Linux -curl -L https://github.com/kubernetes/kompose/releases/download/v1.26.1/kompose-linux-amd64 -o kompose - -# macOS -curl -L https://github.com/kubernetes/kompose/releases/download/v1.26.1/kompose-darwin-amd64 -o kompose - -chmod +x kompose -sudo mv ./kompose /usr/local/bin/kompose -``` - -__Windows:__ - -Download from [GitHub](https://github.com/kubernetes/kompose/releases/download/v1.26.1/kompose-windows-amd64.exe) and add the binary to your PATH. - -## Go - -Installing using `go get` pulls from the master branch with the latest development changes. - -```sh -go get -u github.com/kubernetes/kompose -``` - -## CentOS - -Kompose is in [EPEL](https://fedoraproject.org/wiki/EPEL) CentOS repository. -If you don't have [EPEL](https://fedoraproject.org/wiki/EPEL) repository already installed and enabled you can do it by running `sudo yum install epel-release` - -If you have [EPEL](https://fedoraproject.org/wiki/EPEL) enabled in your system, you can install Kompose like any other package. - -```bash -sudo yum -y install kompose -``` - -## Fedora -Kompose is in Fedora 24, 25 and 26 repositories. You can install it just like any other package. - -```bash -sudo dnf -y install kompose -``` - -## Ubuntu/Debian - -A deb package is released for compose. Download latest package in the assets in [github releases](https://github.com/kubernetes/kompose/releases). - -```bash -wget https://github.com/kubernetes/kompose/releases/download/v1.26.1/kompose_1.26.1_amd64.deb # Replace 1.26.1 with latest tag -sudo apt install ./kompose_1.26.1_amd64.deb -``` - -## macOS -On macOS you can install latest release via [Homebrew](https://brew.sh) or [MacPorts](https://www.macports.org/). - -```bash -# Homebrew -brew install kompose - -# MacPorts -port install kompose -``` - -## Windows -Kompose can be installed via [Chocolatey](https://chocolatey.org/packages/kubernetes-kompose) - -```console -choco install kubernetes-kompose -``` - -## openSUSE/SLE -Kompose is available in the official Virtualization:containers repository for openSUSE Tumbleweed, Leap 15, Leap 42.3 and SUSE Linux Enterprise 15. - -Head over to [software.opensuse.org for One-Click Installation](https://software.opensuse.org//download.html?project=Virtualization%3Acontainers&package=kompose) or add the repository manually: -```bash -#openSUSE Tumbleweed -sudo zypper addrepo https://download.opensuse.org/repositories/Virtualization:containers/openSUSE_Tumbleweed/Virtualization:containers.repo - -#openSUSE Leap 42.3 -sudo zypper addrepo https://download.opensuse.org/repositories/Virtualization:containers/openSUSE_Leap_42.3/Virtualization:containers.repo - -#openSUSE Leap 15 -sudo zypper addrepo https://download.opensuse.org/repositories/Virtualization:/containers/openSUSE_Leap_15.2/Virtualization:containers.repo - -#SUSE Linux Enterprise 15 -sudo zypper addrepo https://download.opensuse.org/repositories/Virtualization:/containers/SLE_15_SP1/Virtualization:containers.repo -``` -and install the package: -```bash -sudo zypper refresh -sudo zypper install kompose -``` - -## NixOS - -To install from [Nixpkgs](https://github.com/NixOS/nixpkgs), use [nix-env](https://nixos.org/manual/nix/stable/command-ref/nix-env.html). - -```bash -nix-env --install -A nixpkgs.kompose -``` - -To run `kompose` without installing it, use [nix-shell](https://nixos.org/manual/nix/stable/command-ref/nix-shell.html). - -```bash -nix-shell -p kompose --run "kompose convert" -``` - - -## Docker - -You can build an image from the offical repo for [Docker](https://docs.docker.com/engine/reference/commandline/build/) or [Podman](https://docs.podman.io/en/latest/markdown/podman-build.1.html): - -```bash -docker build -t kompose https://github.com/kubernetes/kompose.git -``` - -To run the built image against the current directory, run the following command: - -```bash -docker run --rm -it -v $PWD:/opt kompose sh -c "cd /opt && kompose convert" -``` diff --git a/site/docs/integrations.md b/site/docs/integrations.md deleted file mode 100644 index d1aeb0b05..000000000 --- a/site/docs/integrations.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: default -permalink: /integrations/ -title: Integrations -redirect_from: - - /docs/integrations.md/ - - /docs/integrations/ ---- - -# Integrations - -* TOC -{:toc} - -There are some projects out there known to use Kompose integrated in some form or another - -### Kompose UI by Jad Chamoun (ICANN) and Joe Haddad (Anghami) - -__Description:__ "A web interface to convert Docker Compose files to Kubernetes YAML" - -__Link:__ [https://github.com/JadCham/komposeui](https://github.com/JadCham/komposeui) - -### Kompose Docker Container by Cloudfind - -__Description:__ "A Docker container for the Kompose translator for docker-compose" - -__Link:__ [https://github.com/cloudfind/kompose-docker](https://github.com/cloudfind/kompose-docker) - -### KPM by CoreOS - -__Description:__ "KPM is a tool to deploy and manage application stacks on Kubernetes" - -__Link:__ [https://github.com/coreos/kpm](https://github.com/coreos/kpm) - -### Docker Image for Adobe Enterprise Manager by Adfinis SyGroup AG - -__Description:__ "Docker Image for Adobe Enterprise Manager" - -__Link:__ [https://github.com/adfinis-sygroup/aem-docker/tree/master](https://github.com/adfinis-sygroup/aem-docker/tree/master) - -### Kompose Ansible Playbook by Chris Houseknecht (Red Hat) - -__Description:__ "Download and unarchive the latest kompose release asset for your OS" - -__Link:__ [https://github.com/chouseknecht/kompose-install-role](https://github.com/chouseknecht/kompose-install-role) - -### Fabric8 Maven Plugin by Red Hat - -__Description:__ "Maven is one of the widely used build tools for Java applications. The Fabric8 Maven Plugin is a maven extension that simplifies the deployment of Java applications to Kubernetes or OpenShift cluster. -The main task of this plugin is to build Docker images, generate Kubernetes or OpenShift resource descriptors and run/deploy the application on Kubernetes or OpenShift cluster. -Plugin has wide range of configuration options. Docker Compose is one of the option to bring up deployments on Kubernetes or OpenShift cluster. -Technically, Fabric8 Maven Plugin processes the external docker-compose.yml file and generates Kubernetes or OpenShift resources via Kompose." - -__Links:__ - -* [Quickstart](/docs/maven-example.md) -* [Documentation](https://maven.fabric8.io/#docker-compose) diff --git a/site/docs/maven-example.md b/site/docs/maven-example.md deleted file mode 100644 index 42dddb6a7..000000000 --- a/site/docs/maven-example.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: default -permalink: /maven-example/ -title: Maven Example -redirect_from: - - /docs/maven-example.md/ - - /docs/maven-example/ ---- - -# Fabric8 Maven Plugin + Kompose: -Let's deploy a Springboot Java application with Docker Compose file using Fabric8 Maven Plugin to Kubernetes or OpenShift. - -##### Requirements -* Linux or MacOS or Windows -* JDK 1.7+ - [JDK Quick Installation Guide](http://openjdk.java.net/install/) -* Maven 3.x+ - [Maven Installation Guide](http://www.baeldung.com/install-maven-on-windows-linux-mac) -* Kompose - [Kompose Installation Guide](/docs/installation.md) - -__1. Clone the example project from GitHub__ -```bash -$ git clone https://github.com/piyush1594/kompose-maven-example.git -``` - -Change current directory to `kompose-maven-example` directory. -```bash -$ cd kompose-maven-example -``` - -__2. Add Fabric8 Maven Plugin to your project__ -```bash -$ mvn io.fabric8:fabric8-maven-plugin:3.5.28:setup -``` - -Add the Fabric8 Maven Plugin configuration to `pom.xml` of project. `pom.xml` is manifest or deployment descriptor file of a maven project. - -__3. Install Kompose through Maven__ -```bash -$ mvn fabric8:install -``` - -This command installs the `kompose` on the host. - -__4. Configure Fabric8 Maven Plugin to use a Docker Compose file__ -```bash - - io.fabric8 - fabric8-maven-plugin - - path for docker compose file - - - - - resource - build - - - - -``` - -Add the `` and `` sections to `pom.xml` as shown in above `pom.xml` snippet. Update the `` to provide the relative path of Docker Compose file from `pom.xml` - -__5. Deploy application on Kubernetes or OpenShift__ - - Make sure that Kubernetes/OpenShift cluster or Minikube/minishift is running. In case, if anything of this is not running, you can run minishift to test this application by using following command. -```bash -$ minishift start -``` - - Below command deploys this application on Kubernetes or OpenShift. -```bash -$ mvn fabric8:deploy -``` - -Now that your service has been deployed, let's access it by querying `pod`, `service` from Kubernetes or OpenShift. -```bash -$ oc get pods -NAME READY STATUS RESTARTS AGE -springboot-docker-compose-1-xl0vb 1/1 Running 0 5m -springboot-docker-compose-s2i-1-build 0/1 Completed 0 7m -``` - -```bash -$ oc get svc -NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE -springboot-docker-compose 172.30.205.137 8080/TCP 6m -``` - -Let's access the Springboot service. -```bash -$ minishift openshift service --in-browser springboot-docker-compose -Created the new window in existing browser session. -``` - -It will open your application endpoint in default browser. - -![Output-Diagram](/docs/images/kompose-maven-output-diagram.png) diff --git a/site/docs/user-guide.md b/site/docs/user-guide.md deleted file mode 100644 index e59cb627a..000000000 --- a/site/docs/user-guide.md +++ /dev/null @@ -1,474 +0,0 @@ ---- -layout: default -permalink: /user-guide/ -title: User Guide -redirect_from: - - /docs/user-guide.md/ - - /docs/user-guide/ ---- - -# User Guide - -* TOC -{:toc} - -Kompose has support for two providers: OpenShift and Kubernetes. -You can choose a targeted provider using global option `--provider`. If no provider is specified, Kubernetes is set by default. - - -## Kompose Convert - -Kompose supports conversion of V1, V2, and V3 Docker Compose files into Kubernetes and OpenShift objects. - -### Kubernetes - -```sh -$ kompose --file docker-voting.yml convert -WARN Unsupported key networks - ignoring -WARN Unsupported key build - ignoring -INFO Kubernetes file "worker-svc.yaml" created -INFO Kubernetes file "db-svc.yaml" created -INFO Kubernetes file "redis-svc.yaml" created -INFO Kubernetes file "result-svc.yaml" created -INFO Kubernetes file "vote-svc.yaml" created -INFO Kubernetes file "redis-deployment.yaml" created -INFO Kubernetes file "result-deployment.yaml" created -INFO Kubernetes file "vote-deployment.yaml" created -INFO Kubernetes file "worker-deployment.yaml" created -INFO Kubernetes file "db-deployment.yaml" created - -$ ls -db-deployment.yaml docker-compose.yml docker-gitlab.yml redis-deployment.yaml result-deployment.yaml vote-deployment.yaml worker-deployment.yaml -db-svc.yaml docker-voting.yml redis-svc.yaml result-svc.yaml vote-svc.yaml worker-svc.yaml -``` - -You can also provide multiple docker-compose files at the same time: - -```sh -$ kompose -f docker-compose.yml -f docker-guestbook.yml convert -INFO Kubernetes file "frontend-service.yaml" created -INFO Kubernetes file "mlbparks-service.yaml" created -INFO Kubernetes file "mongodb-service.yaml" created -INFO Kubernetes file "redis-master-service.yaml" created -INFO Kubernetes file "redis-slave-service.yaml" created -INFO Kubernetes file "frontend-deployment.yaml" created -INFO Kubernetes file "mlbparks-deployment.yaml" created -INFO Kubernetes file "mongodb-deployment.yaml" created -INFO Kubernetes file "mongodb-claim0-persistentvolumeclaim.yaml" created -INFO Kubernetes file "redis-master-deployment.yaml" created -INFO Kubernetes file "redis-slave-deployment.yaml" created - -$ ls -mlbparks-deployment.yaml mongodb-service.yaml redis-slave-service.jsonmlbparks-service.yaml -frontend-deployment.yaml mongodb-claim0-persistentvolumeclaim.yaml redis-master-service.yaml -frontend-service.yaml mongodb-deployment.yaml redis-slave-deployment.yaml -redis-master-deployment.yaml -``` - -When multiple docker-compose files are provided the configuration is merged. Any configuration that is common will be over ridden by subsequent file. - -### OpenShift - -```sh -$ kompose --provider openshift --file docker-voting.yml convert -WARN [worker] Service cannot be created because of missing port. -INFO OpenShift file "vote-service.yaml" created -INFO OpenShift file "db-service.yaml" created -INFO OpenShift file "redis-service.yaml" created -INFO OpenShift file "result-service.yaml" created -INFO OpenShift file "vote-deploymentconfig.yaml" created -INFO OpenShift file "vote-imagestream.yaml" created -INFO OpenShift file "worker-deploymentconfig.yaml" created -INFO OpenShift file "worker-imagestream.yaml" created -INFO OpenShift file "db-deploymentconfig.yaml" created -INFO OpenShift file "db-imagestream.yaml" created -INFO OpenShift file "redis-deploymentconfig.yaml" created -INFO OpenShift file "redis-imagestream.yaml" created -INFO OpenShift file "result-deploymentconfig.yaml" created -INFO OpenShift file "result-imagestream.yaml" created -``` - -It also supports creating buildconfig for build directive in a service. By default, it uses the remote repo for the current git branch as the source repo, and the current branch as the source branch for the build. You can specify a different source repo and branch using ``--build-repo`` and ``--build-branch`` options respectively. - -```sh -$ kompose --provider openshift --file buildconfig/docker-compose.yml convert -WARN [foo] Service cannot be created because of missing port. -INFO OpenShift Buildconfig using git@github.com:rtnpro/kompose.git::master as source. -INFO OpenShift file "foo-deploymentconfig.yaml" created -INFO OpenShift file "foo-imagestream.yaml" created -INFO OpenShift file "foo-buildconfig.yaml" created -``` - -**Note**: If you are manually pushing the Openshift artifacts using ``oc create -f``, you need to ensure that you push the imagestream artifact before the buildconfig artifact, to workaround this Openshift issue: https://github.com/openshift/origin/issues/4518 . - -## Alternative Conversions - -The default `kompose` transformation will generate Kubernetes [Deployments](http://kubernetes.io/docs/user-guide/deployments/) and [Services](http://kubernetes.io/docs/user-guide/services/), in yaml format. You have alternative option to generate json with `-j`. Also, you can alternatively generate [Replication Controllers](http://kubernetes.io/docs/user-guide/replication-controller/) objects, [Daemon Sets](http://kubernetes.io/docs/admin/daemons/), [Statefulset](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) or [Helm](https://github.com/helm/helm) charts. - -```sh -$ kompose convert -j -INFO Kubernetes file "redis-svc.json" created -INFO Kubernetes file "web-svc.json" created -INFO Kubernetes file "redis-deployment.json" created -INFO Kubernetes file "web-deployment.json" created -``` -The `*-deployment.json` files contain the Deployment objects. - -```sh -$ kompose convert --controller replicationController -INFO Kubernetes file "redis-svc.yaml" created -INFO Kubernetes file "web-svc.yaml" created -INFO Kubernetes file "redis-replicationcontroller.yaml" created -INFO Kubernetes file "web-replicationcontroller.yaml" created -``` - -The `*-replicationcontroller.yaml` files contain the Replication Controller objects. If you want to specify replicas (default is 1), use `--replicas` flag: `$ kompose convert --controller replicationController --replicas 3` - -```sh -$ kompose convert --controller daemonSet -INFO Kubernetes file "redis-svc.yaml" created -INFO Kubernetes file "web-svc.yaml" created -INFO Kubernetes file "redis-daemonset.yaml" created -INFO Kubernetes file "web-daemonset.yaml" created -``` - -The `*-daemonset.yaml` files contain the Daemon Set objects - -```sh -$ kompose convert --controller statefulset -INFO Kubernetes file "db-service.yaml" created -INFO Kubernetes file "wordpress-service.yaml" created -INFO Kubernetes file "db-statefulset.yaml" created -INFO Kubernetes file "wordpress-statefulset.yaml" created -``` - -The `*statefulset-.yaml` files contain the Statefulset objects. - - -If you want to generate a Chart to be used with [Helm](https://github.com/kubernetes/helm) simply do: - -```sh -$ kompose convert -c -INFO Kubernetes file "web-svc.yaml" created -INFO Kubernetes file "redis-svc.yaml" created -INFO Kubernetes file "web-deployment.yaml" created -INFO Kubernetes file "redis-deployment.yaml" created -chart created in "./docker-compose/" - -$ tree docker-compose/ -docker-compose -├── Chart.yaml -├── README.md -└── templates - ├── redis-deployment.yaml - ├── redis-svc.yaml - ├── web-deployment.yaml - └── web-svc.yaml -``` - -The chart structure is aimed at providing a skeleton for building your Helm charts. It's compatible with both Helm V2 and Helm V3. - -## Labels - -`kompose` supports Kompose-specific labels within the `docker-compose.yml` file to -explicitly define the generated resources' behavior upon conversion, like Service, PersistentVolumeClaim... - -The currently supported options are: - -| Key | Value | -|----------------------|-------------------------------------| -| kompose.service.type | nodeport / clusterip / loadbalancer / headless | -| kompose.service.group | name to group the containers contained in a single pod | -| kompose.service.expose | true / hostnames (separated by comma) | -| kompose.service.nodeport.port | port value (string) | -| kompose.service.expose.tls-secret | secret name | -| kompose.volume.size | kubernetes supported volume size | -| kompose.volume.storage-class-name | kubernetes supported volume storageClassName | -| kompose.volume.type | use k8s volume type, eg "configMap", "persistentVolumeClaim", "emptyDir", "hostPath" | -| kompose.controller.type | deployment / daemonset / replicationcontroller | -| kompose.image-pull-policy | kubernetes pods imagePullPolicy | -| kompose.image-pull-secret | kubernetes secret name for imagePullSecrets | -| kompose.service.healthcheck.readiness.disable | kubernetes readiness disable | -| kompose.service.healthcheck.readiness.test | kubernetes readiness exec command | -| kompose.service.healthcheck.readiness.http_get_path | kubernetes readiness httpGet path | -| kompose.service.healthcheck.readiness.http_get_port | kubernetes readiness httpGet port | -| kompose.service.healthcheck.readiness.tcp_port | kubernetes readiness tcpSocket port | -| kompose.service.healthcheck.readiness.interval | kubernetes readiness interval value | -| kompose.service.healthcheck.readiness.timeout | kubernetes readiness timeout value | -| kompose.service.healthcheck.readiness.retries | kubernetes readiness retries value | -| kompose.service.healthcheck.readiness.start_period | kubernetes readiness start_period | -| kompose.service.healthcheck.liveness.http_get_path | kubernetes liveness httpGet path | -| kompose.service.healthcheck.liveness.http_get_port | kubernetes liveness httpGet port | -| kompose.service.healthcheck.liveness.tcp_port | kubernetes liveness tcpSocket port | - -**Note**: `kompose.service.type` label should be defined with `ports` only (except for headless service), otherwise `kompose` will fail. - - - -- `kompose.service.type` defines the type of service to be created. - -For example: - -```yaml -version: "2" -services: - nginx: - image: nginx - dockerfile: foobar - build: ./foobar - cap_add: - - ALL - container_name: foobar - labels: - kompose.service.type: nodeport -``` - - - `kompose.service.group` defines the group of containers included in a single pod. - -For example: - -```yaml -version: "3" - -services: - nginx: - image: nginx - depends_on: - - logs - labels: - - kompose.service.group=sidecar - - logs: - image: busybox - command: ["tail -f /var/log/nginx/access.log"] - labels: - - kompose.service.group=sidecar -``` - -- `kompose.service.expose` defines if the service needs to be made accessible from outside the cluster or not. If the value is set to "true", the provider sets the endpoint automatically, and for any other value, the value is set as the hostname. If multiple ports are defined in a service, the first one is chosen to be the exposed. - - For the Kubernetes provider, an ingress resource is created and it is assumed that an ingress controller has already been configured. If the value is set to a comma sepatated list, multiple hostnames are supported.Hostname with path is also supported. - - For the OpenShift provider, a route is created. -- `kompose.service.nodeport.port` defines the port value when service type is `nodeport`, this label should only be set when the service only contains 1 port. Usually kubernetes define a port range for node port values, kompose will not validate this. -- `kompose.service.expose.tls-secret` provides the name of the TLS secret to use with the Kubernetes ingress controller. This requires kompose.service.expose to be set. - -For example: - -```yaml -version: "2" -services: - web: - image: tuna/docker-counter23 - ports: - - "5000:5000" - links: - - redis - labels: - kompose.service.expose: "counter.example.com,foobar.example.com" - kompose.service.expose.tls-secret: "example-secret" - redis: - image: redis:3.0 - ports: - - "6379" -``` - -- `kompose.serviceaccount-name` defines the service account name to provide the credential info of the pod. - -For example: - -```yaml -version: '3.4' -services: - app: - image: python - labels: - kompose.serviceaccount-name: "my-service" -``` - -- `kompose.image-pull-secret` defines a kubernetes secret name for imagePullSecrets podspec field. -This secret will be used for pulling private images. -For example: - -```yaml -version: '2' -services: - tm-service: - image: premium/private-image - labels: - kompose.image-pull-secret: "example-kubernetes-secret" -``` - -- `kompose.volume.size` defines the requests storage's size in the PersistentVolumeClaim, or you can use command line parameter `--pvc-request-size`. -The priority follow label (kompose.volume.size) > command parameter(--pvc-request-size) > defaultSize (100Mi) - -For example: - -```yaml -version: '2' -services: - db: - image: postgres:10.1 - labels: - kompose.volume.size: 1Gi - volumes: - - db-data:/var/lib/postgresql/data -``` - -- `kompose.volume.storage-class-name` defines the requests storage's class name in the PersistentVolumeClaim. - -For example: - -```yaml -version: '3' -services: - db: - image: postgres:10.1 - labels: - kompose.volume.storage-class-name: custom-storage-class-name - volumes: - - db-data:/var/lib/postgresql/data -``` - -- `kompose.controller.type` defines which controller type should convert for this service - -For example: - -``` -web: - image: wordpress:4.5 - ports: - - '80' - environment: - WORDPRESS_AUTH_KEY: changeme - WORDPRESS_SECURE_AUTH_KEY: changeme - WORDPRESS_LOGGED_IN_KEY: changeme - WORDPRESS_NONCE_KEY: changeme - WORDPRESS_AUTH_SALT: changeme - WORDPRESS_SECURE_AUTH_SALT: changeme - WORDPRESS_LOGGED_IN_SALT: changeme - WORDPRESS_NONCE_SALT: changeme - WORDPRESS_NONCE_AA: changeme - restart: always - links: - - 'db:mysql' -db: - image: mysql:5.7 - environment: - MYSQL_ROOT_PASSWORD: password - restart: always - labels: - project.logs: /var/log/mysql - kompose.controller.type: daemonset -``` - -Service `web` will be converted to `Deployment` as default, service `db` will be converted to `DaemonSet` because of `kompose.controller.type` label. - -- `kompose.image-pull-policy` defines Kubernetes PodSpec imagePullPolicy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. - -For example: - -```yaml -version: '2' -services: - example-service: - image: example-image - labels: - kompose.image-pull-policy: "Never" -``` - - -For example: - -```yaml -version: '2' -services: - example-service: - image: example-image - labels: - kompose.service.healthcheck.liveness.http_get_path: /health/ping - kompose.service.healthcheck.liveness.http_get_port: 8080 - healthcheck: - interval: 10s - timeout: 10s - retries: 3 - start_period: 30s -``` - -- `kompose.service.healthcheck.liveness` defines Kubernetes [liveness HttpRequest](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-http-request), If you use healthcheck without liveness labels, have to define `test` in healcheck it's work to Kubernetes [liveness command](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes) - -For example: - -```yaml -version: '2' -services: - example-service: - image: example-image - labels: - kompose.service.healthcheck.readiness.test: CMD curl -f "http://localhost:8080/health/ping" - kompose.service.healthcheck.readiness.interval: 10s - kompose.service.healthcheck.readiness.timeout: 10s - kompose.service.healthcheck.readiness.retries: 3 - kompose.service.healthcheck.readiness.start_period: 30s -``` -- `kompose.service.healthcheck.readiness` defines Kubernetes [readiness](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes) - -## Restart - -If you want to create normal pods without controller you can use `restart` construct of docker-compose to define that. Follow table below to see what happens on the `restart` value. - -| `docker-compose` `restart` | object created | Pod `restartPolicy` | -|----------------------------|-------------------|---------------------| -| `""` | controller object | `Always` | -| `always` | controller object | `Always` | -| `unless-stopped` | controller object | `Always` | -| `on-failure` | Pod | `OnFailure` | -| `no` | Pod | `Never` | - -**Note**: controller object could be `deployment` or `replicationcontroller`, etc. - -For e.g. `pival` service will become pod down here. This container calculated value of `pi`. - -```yaml -version: '2' - -services: - pival: - image: perl - command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] - restart: "on-failure" -``` - -#### Warning about Deployment Config's - -If the Docker Compose file has a volume specified for a service, the Deployment (Kubernetes) or DeploymentConfig (OpenShift) strategy is changed to "Recreate" instead of "RollingUpdate" (default). This is done to avoid multiple instances of a service from accessing a volume at the same time. - -If the Docker Compose file has service name with `_` or `.` in it (eg.`web_service` or `web.service`), then it will be replaced by `-` and the service name will be renamed accordingly (eg.`web-service`). Kompose does this because "Kubernetes" doesn't allow `_` in object name. - -Please note that changing service name might break some `docker-compose` files. - -## Build and push image - -If the Docker Compose file has `build` or `build:context, build:dockerfile` keys, build will run when `--build` specified. - -And Image will push to *docker.io* (default) when `--push-image=true` specified. - -It is possible to push to custom registry by specify `--push-image-registry`, which will override the registry from image name. - -### Authentication on registry - -Kompose uses the docker authentication from file `$DOCKER_CONFIG/config.json`, `$HOME/.docker/config.json`, and `$HOME/.dockercfg` after `docker login`. - -**This only works fine on Linux but macOS would fail when using `"credsStore": "osxkeychain"`.** - -However, there is an approach to push successfully on macOS, by not using `osxkeychain` for `credsStore`. To disable `osxkeychain`: -* remove `credsStore` from `config.json` file, and `docker login` again. -* for some docker desktop versions, there is a setting `Securely store Docker logins in macOS keychain`, which should be unchecked. Then restart docker desktop if needed, and `docker login` again. - -Now `config.json` should contain base64 encoded passwords, then push image should succeed. Working, but not safe though! Use it at your risk. - -For Windows, there is also `credsStore` which is `wincred`. Technically it will fail on authentication as macOS does, but you can try the approach above like macOS too. - -## Docker Compose Versions - -Kompose supports Docker Compose versions: 1, 2 and 3. We have limited support on versions 2.1 and 3.2 due to their experimental nature. - -A full list on compatibility between all three versions is listed in our [conversion document](/docs/conversion.md) including a list of all incompatible Docker Compose keys.