From 634d3ff182f98deb91112467ffe5eb50399597ac Mon Sep 17 00:00:00 2001 From: Patrice Ferlet Date: Wed, 1 Dec 2021 09:09:50 +0100 Subject: [PATCH] Add some doc (WIP) --- README.md | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ac3448 --- /dev/null +++ b/README.md @@ -0,0 +1,81 @@ +Katenary is a tool to help transforming `docker-compose` files to a working Helm Chart for Kubernetes. + + +# Install + +If you've got `podman` or `docker`, you can build `katenary` by using: + +```bash +make build +``` + +You can then install it with: +```bash +make install +``` + +It will use the default PREFIX (`~/.local/`) to install the binary in the `bin` subdirectory. You can force the PREFIX value at install time, but maybe you need to use "sudo": + +```bash +sudo make install PREFIX=/usr/local +``` + + +# Usage + +```bash +Usage of katenary: + -appname string + Give the helm chart app name (default "MyApp") + -appversion string + Set the chart appVersion (default "0.1.1") + -compose string + set the compose file to parse (default "docker-compose.yaml") + -version + Show version and exist +``` + +Katenary will try to find a `docker-compose.yaml` file inside the current directory. It will then **delete** the `chart` directory to create a new Helm Chart. + +> It's important that you keep in mind that katenary will not alert you (for now) that it will remove the `chart` directory ! + +It creates a subdirectory inside `chart` that is named with the `appname` option (default is `MyApp`) + +What can be interpreted by Katenary: + +- Services with "image" section (cannot work with "build" section) +- **Named Volumes** are transformed to persistent volume claims - note that local volume will break the transformation to Helm Chart because there is (for now) no way to make it working (see below for resolution) +- if `ports` and/or `expose` section, katenary will create Services and bind the port to the corresponding container port +- `depends_on` will add init containers to wait for the depending service (using the first port) +- some labels can help to bind values: + - `katernay.io/expose-ingress: true` will expose the first port or expose to an ingress + - `katernay.io/to-service: VARNAME` will convert the value to a variable `{{ .Release.Name }}-VARNAME` - it's usefull when you want to pass the name of a service as a variable (think about the service name for mysql to pass to a container that wants to connect to this) + +Exemple of a possible `docker-compose.yaml` file: + +```yaml +version: "3" +services: + webapp: + image: php:7-apache + environment: + # note that "database" is a service name + DB_HOST: database + expose: + - 80 + depends_on: + # this will create a init container waiting for 3306 port + # because it's the "exposed" port + - database + labels: + # explain to katenary that "DB_HOST" value is variable (using release name) + katernay.io/to-servie: DB_HOST + database: + image: mariabd:10 + environment: + MARIADB_ROOT_PASSWORD: foobar + expose: + # required to make katenary able to create the init container + - 3306 +``` +