From b1dc94e0e9f0141716225360c7fbc725bdfead1e Mon Sep 17 00:00:00 2001 From: Patrice Ferlet Date: Mon, 13 Jun 2022 13:18:31 +0200 Subject: [PATCH] Add doc (WIP) --- doc/docs/index.md | 47 ++++++++++++++++++++ doc/docs/statics/Logo_Smile.png | Bin 0 -> 22471 bytes doc/docs/statics/addons.js | 41 ++++++++++++++++++ doc/docs/statics/logo.png | Bin 0 -> 64493 bytes doc/docs/statics/main.css | 19 ++++++++ doc/docs/usage.md | 74 ++++++++++++++++++++++++++++++++ 6 files changed, 181 insertions(+) create mode 100644 doc/docs/index.md create mode 100644 doc/docs/statics/Logo_Smile.png create mode 100644 doc/docs/statics/addons.js create mode 100644 doc/docs/statics/logo.png create mode 100644 doc/docs/statics/main.css create mode 100644 doc/docs/usage.md diff --git a/doc/docs/index.md b/doc/docs/index.md new file mode 100644 index 0000000..cd41d61 --- /dev/null +++ b/doc/docs/index.md @@ -0,0 +1,47 @@ +# Home + +Welcome to the documentation of Katenary. + +## What is Katenary? + +Katenary is a project that aims to help you to transform "compose" files (`docker-compose.yml`, `podman-compose.yml`...) to a complete and production ready [Helm Chart](https://helm.sh). + +It uses your current file and optionnaly labels to configure the result. + +It's an opensource project, under MIT licence, partially developped at [Smile](https://smile.eu). The project source code is hosted on the [Katenary GitHub Repository](https://github.com/metal3d/katenary). + +## Install Katenary + +Katenary is developped in [Go](https://go.dev). The binary is statically linked, so you can only download it from the [release page](https://github.com/metal3d/katenary/releases) of the project in GutHub. + +You need to select the right binary for your operating system and architecture, and copy the binary in a directory that is in your `PATH`. + +If you are a Linux user, you can use the "one line installation command" which will download the binary in you `$HOME/.local/bin` directory if it exists. + +```bash +sh <(curl -sSL https://raw.githubusercontent.com/metal3d/katenary/master/install.sh) +``` + +You can also build and install it yourself, the giver Makefile provides a `build` command that uses `podman` or `docker` to build the binary. You don't need to install Go compiler so. + +```bash +git clone https://github.com/metal3d/katenary.git +cd katenary +make build +``` + +Then, copy `./katenary` binary to you `PATH` (`~/.local/bin` or `/usr/local/bin` with `sudo`) and type `katenary version` and / or `katenary help` + +## Install completion + +Katenary uses the very nice project named `cobra` to manage flags, argument and auto-completion. + +You can activate it with: +```bash +# replace "bash" by "zsh" if needed +source <(katenary completion bash) +``` + +Add this line in you `~/.profile` or `~/.bashrc` file to have completion at startup. + + diff --git a/doc/docs/statics/Logo_Smile.png b/doc/docs/statics/Logo_Smile.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9cfd3b40dd8cdad40f0598e1e1b5aee5ed893f GIT binary patch literal 22471 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 ayLAR>M0j74DVwZ6uZX@bOb4rF7xo|I$r&O5 literal 0 HcmV?d00001 diff --git a/doc/docs/statics/addons.js b/doc/docs/statics/addons.js new file mode 100644 index 0000000..15fc874 --- /dev/null +++ b/doc/docs/statics/addons.js @@ -0,0 +1,41 @@ +function addSmileLogo() { + let logo = document.createElement("img"); + logo.src = "/statics/Logo_Smile.png"; + logo.classList.add("smile-logo"); + logo.alt = "Smile logo"; + + let link = document.createElement("a"); + link.href = "https://www.smile.eu"; + link.target = "_blank"; + link.title = "Smile website"; + + link.appendChild(logo); + + logo.addEventListener("load", () => { + let side = document.querySelector(".wy-menu"); + side.appendChild(link); + }); +} + +function addKatenaryLogo() { + let logo = document.createElement("img"); + logo.src = "/statics/logo.png"; + logo.classList.add("logo"); + logo.alt = "Katenary logo"; + + let link = document.createElement("a"); + link.href = "/"; + link.title = "Index page"; + + link.appendChild(logo); + + logo.addEventListener("load", () => { + let side = document.querySelector(".wy-nav-side"); + side.insertBefore(link, side.firstChild); + }); +} + +document.addEventListener("DOMContentLoaded", () => { + addKatenaryLogo(); + addSmileLogo(); +}); diff --git a/doc/docs/statics/logo.png b/doc/docs/statics/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ac789ce1a9beef5502857b8b7e5614a8d10f3f GIT binary patch literal 64493 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
G@V@bMusG(?d`ZCAAMb4Uc><;H!h(pc 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 literal 0 HcmV?d00001 diff --git a/doc/docs/statics/main.css b/doc/docs/statics/main.css new file mode 100644 index 0000000..2453097 --- /dev/null +++ b/doc/docs/statics/main.css @@ -0,0 +1,19 @@ +.wy-nav-side { + background-color: #333333; +} +.wy-nav-side img.logo { + width: 50%; + margin-left: 25%; + text-align: center; +} + +.wy-side-nav-search { + margin-top: 1em; + background-color: #555555; +} + +.smile-logo { + width: 80%; + margin-top: 2em; + margin-left: 10%; +} diff --git a/doc/docs/usage.md b/doc/docs/usage.md new file mode 100644 index 0000000..c92b94a --- /dev/null +++ b/doc/docs/usage.md @@ -0,0 +1,74 @@ +# Basic Usage + +Basically, you can use `katenary` to transpose a docker-compose file (or any compose file compatible with `podman-compose` and `docker-compose`) to a configurable Helm Chart. This resulting helm chart can be installed with `helm` command to your Kubernetes cluster. + +Katenary transforms compose services this way: + +- Takes the service and create a "Deployment" file +- if a port is declared, katenary creates a service (ClusterIP) +- it a port is exposed, katenary creates a service (NodePort) +- environment variables will be stored in `values.yaml` file +- image, tags, and ingresses configuration are also stored in `values.yaml` file +- if named volumes are declared, katenary create PersistentVolumeClaims - not enabled in values file (a `emptyDir` is used by default) +- any other volume (local mount points) are ignored +- `depends_on` needs that the pointed service declared a port. If not, you can use labels to inform katenary + +Katenary can also configure containers grouping in pods, declare dependencies, ignore some services, force variables as secrets, mount files as `configMap`, and many others things. To adapt the helm chart generation, you will need to use some specific labels. + +## Try to convert + +After having installed `katenary`, the standard usage is to call: + +```bash +katenary convert +``` + +It will search standard compose files in the current directory and try to create a helm chart in "chart" directory. + +Katenary respects the Docker rules for overrides files, and you can of course force others files: +```bash +katenary convert -c file1.yaml -c file2.yaml +``` + + +## Work with Depends On? + +Kubernetes does not propose service or pod starting detection from others pods. But katenary will create init containers to make you able to wait for a service to respond. But you'll probably need to adapt a bit the compose file. + +See this compose file: + +```yaml +version: "3" + +services: + webapp: + image: php:8-apache + depends_on: + - database + + database: + image: mariadb + environment: + MYSQL_ROOT_PASSWORD: foobar +``` + +In this case, `webapp` needs to know the `database` port because the `depends_on` points on it and Kubernetes has not (yet) solution to check the database startup. Katenary wants to create a `initContainer` to hit on the related service. So, instead of exposing the port in the compose definition, let's declare this to katenary with labels: + + +```yaml +version: "3" + +services: + webapp: + image: php:8-apache + depends_on: + - database + + database: + image: mariadb + environment: + MYSQL_ROOT_PASSWORD: foobar + labels: + katenary.io/ports: 3306 +``` +