feat(doc): Enhancement, cleanup, add package instructions
All checks were successful
Go-Tests / tests (pull_request) Successful in 1m48s
Go-Tests / sonar (pull_request) Successful in 52s
Go-Tests / tests (push) Successful in 3m30s
Go-Tests / sonar (push) Successful in 50s

- remove trailing spaces
- add instruction for packages
- reindent YAML examples
- remove section telling that there is no config files, as
`katenary.yaml` file can now be used
This commit is contained in:
2025-08-29 13:24:32 +02:00
parent 6c2e8fa9b2
commit 6cd1c92997
9 changed files with 297 additions and 261 deletions

View File

@@ -37,6 +37,24 @@ The main developer is [Patrice FERLET](https://repo.katenary.io/metal3d).
## Install ## Install
### Package from repository and Windows installer
You can find Linux packages repository and Windows installer in the [packages page](https://repo.katenary.io/Katenary/katenary/packages).
> Note for Fedora >= 42, the repository instructions are not up-to-date. You should use:
>
> ```bash
> dnf config-manager addrepo \
> --from-repofile https://repo.katenary.io/Katenary/katenary/fedora/katenary.repo
> dnf install katenary
> ```
- Windows users, go to the "generic" packages page, and download the `setup.exe` file.
- macOS users, please use the "`darwin`" binary. An experimental package is in preparation.
- FreedBSD users, please use the "`freebsd`" package in "generic" packages page.
### Binary installation
You can download the binaries from the [Release](https://repo.katenary.io/Katenary/katenary/releases) section. Copy the binary You can download the binaries from the [Release](https://repo.katenary.io/Katenary/katenary/releases) section. Copy the binary
and rename it to `katenary`. Place the binary inside your `PATH`. You should now be able to call the `katenary` command. and rename it to `katenary`. Place the binary inside your `PATH`. You should now be able to call the `katenary` command.
@@ -54,7 +72,7 @@ go install -u katenary.io/cmd@latest
go install -u katenary.io/cmd@v3.0.0 go install -u katenary.io/cmd@v3.0.0
``` ```
## Or, build yourself ### Or, build yourself
If you've got `podman` or `docker`, you can build `katenary` by using: If you've got `podman` or `docker`, you can build `katenary` by using:
@@ -69,7 +87,7 @@ make install
``` ```
It will use the default PREFIX (`~/.local/`) to install the binary in the `bin` subdirectory. You can force the PREFIX 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": value at install time, but maybe you need to use "`sudo`":
```bash ```bash
sudo make install PREFIX=/usr/local sudo make install PREFIX=/usr/local

2
doc/.editorconfig Normal file
View File

@@ -0,0 +1,2 @@
[*.md]
indent_size=2

View File

@@ -92,7 +92,7 @@ For each source container linked to the destination:
- we then copy the service port to the destination service - we then copy the service port to the destination service
- we finally remove the source service and deployment - we finally remove the source service and deployment
> The `Configmap`, secrets, variables... are kept. > The `Configmap`, secrets, variables, and so on, are kept.
It finally computes the `helper` file. It finally computes the `helper` file.

View File

@@ -6,9 +6,9 @@ The main author[^1] of Katenary is a big fan of Podman, Docker and makes a huge
daily work. When he started to work with Kubernetes, he wanted to have the same experience as with Docker Compose. daily work. When he started to work with Kubernetes, he wanted to have the same experience as with Docker Compose.
He wanted to have a tool that could convert his `docker-compose` files to Kubernetes manifests, but also to Helm charts. He wanted to have a tool that could convert his `docker-compose` files to Kubernetes manifests, but also to Helm charts.
Kompose was a good option. But the lacks of some options and configuration for the output Helm chart made him think [Kompose](https://kompose.io/) was a good option. But the lacks of some options and configuration for the output Helm
about creating a new tool. He wanted to have a tool that could generate a complete Helm chart, with a lot of options chart made him think about creating a new tool. He wanted to have a tool that could generate a complete Helm chart,
and flexibility. with a lot of options and flexibility.
[^1]: I'm talking about myself :sunglasses: - Patrice FERLET, aka Metal3d, Tech Lead and DevOps Engineer at Klee Group. [^1]: I'm talking about myself :sunglasses: - Patrice FERLET, aka Metal3d, Tech Lead and DevOps Engineer at Klee Group.
@@ -51,15 +51,6 @@ many indentation levels in the YAML file.
It is also more flexible. You can add or remove labels without changing the others. It is also more flexible. You can add or remove labels without changing the others.
## Why not using a configuration file?
The idea was to keep the configuration at a same place, and using the go-compose library to read the labels. It's
easier to have a single file to manage.
By the way, Katenary auto accepts a `compose.katenary.yaml` file in the same directory. It's a way to separate the
configuration from the compose file. It uses
the [overrides' mechanism](https://docs.docker.com/compose/multiple-compose-files/merge/) like "compose" does.
## Why not developing with Rust? ## Why not developing with Rust?
Seriously... Seriously...
@@ -99,9 +90,6 @@ us by giving us some money, or by giving us some time of your developers, or lea
### If you're an individual ### If you're an individual
All donators will be listed on the website and in the documentation. You can give us some money by using
the [GitHub Sponsors]()
All main contributors[^3] will be listed on the website and in the documentation. All main contributors[^3] will be listed on the website and in the documentation.
> If you want to be anonymous, please tell us. > If you want to be anonymous, please tell us.

View File

@@ -44,28 +44,50 @@ The main developer is [Patrice FERLET](https://repo.katenary.io/metal3d).
The project source The project source
code is hosted on the [:fontawesome-brands-git: Katenary Repository](https://repo.katenary.io/Katenary/katenary). code is hosted on the [:fontawesome-brands-git: Katenary Repository](https://repo.katenary.io/Katenary/katenary).
## Install Katenary # Install Katenary
Katenary is developed using the :fontawesome-brands-golang:{ .gopher } [Go](https://go.dev) language. ## Linux / Windows package distribution or setup.exe
The binary is statically linked, so you can simply download it from the [release
page](https://github.com/Katenary/katenary/releases) of the project in GitHub. The simplest way to install Katenary is to install the package or use Windows installer from the page [packages page](https://repo.katenary.io/Katenary/katenary/packages).
You will find packages and instructions to install the repository for your distribution for :
- RPM (Fedora, Rocky, Alma, OpenSUSE...)
- DEB (Debian, Ubuntu, Mint...)
- Arch Linux (AUR)
- Windows (in the "generic" packages page, use the "setup" file)
!!! Note "Fedora >= 42"
The instruction is not updated for newest version of `dnf`. If the command to add the repository doesn't work, you can
try:
```bash
dnf config-manager addrepo \
--from-repofile https://repo.katenary.io/api/packages/Katenary/rpm.repo
```
As Katenary is developed using the :fontawesome-brands-golang:{ .gopher } [Go](https://go.dev) language the binary is statically
linked, so you can simply download it from the [generic package page](https://repo.katenary.io/Katenary/katenary/packages) and get the version
which is compatible with your operating system and architecture.
You need to select the right binary for your operating system and architecture, and copy the binary in a directory 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`. 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 your ## Linux - one line installation command
If you are a Linux user, you can use the "one line installation command" which will download the **binary** in your
`$HOME/.local/bin` directory if it exists. `$HOME/.local/bin` directory if it exists.
```bash ```bash
sh <(curl -sSL https://repo.katenary.io/Katenary/katenary/raw/branch/master/install.sh) sh <(curl -sSL https://repo.katenary.io/Katenary/katenary/raw/branch/master/install.sh)
``` ```
!!! Info "Upgrading is integrated to the `katenary` command" ## Compile from sources
Katenary propose a `upgrade` sub-command to update the current binary to the latest stable release.
Of course, you need to install Katenary once :smile: You can, of course, compile Katenary from sources.
!!! Note "You prefer to compile it, no need to install Go" !!! Note "You prefer to compile it, no need to install Go"
You can also build and install it yourself, the provided Makefile has got a `build` command that uses `podman` or You can also build and install it yourself, the provided Makefile has got a `build` command that uses `podman` or
`docker` to build the binary. `docker` to build the binary.
@@ -107,7 +129,7 @@ source <(katenary completion bash)
Add this line in you `~/.profile`, `~/.bash_aliases` or `~/.bashrc` file to have completion at startup. Add this line in you `~/.profile`, `~/.bash_aliases` or `~/.bashrc` file to have completion at startup.
## What a name # What a name
A catenary is the curve that a hanging chain or cable assumes under its own weight when supported only at its ends. A catenary is the curve that a hanging chain or cable assumes under its own weight when supported only at its ends.
I, the maintainer, decided to name "Katenary" this project because it's like a chain that links a boat to a dock. I, the maintainer, decided to name "Katenary" this project because it's like a chain that links a boat to a dock.
@@ -119,7 +141,7 @@ Anyway, it's too late to change the name now :smile:
I spent time to find it :wink: I spent time to find it :wink:
## Special thanks to # Special thanks to
I really want to thank all the contributors, testers, and of course, the authors of the packages and tools that are used I really want to thank all the contributors, testers, and of course, the authors of the packages and tools that are used
in this project. There is too many to list here. Katenary can work because of all these people. Open source is a great in this project. There is too many to list here. Katenary can work because of all these people. Open source is a great
@@ -157,6 +179,6 @@ thing! :heart:
<a href="https://www.mkdocs.org/" target="_blank">MkDocs</a> using <a <a href="https://www.mkdocs.org/" target="_blank">MkDocs</a> using <a
href="https://squidfunk.github.io/mkdocs-material/" target="_blank">Material for MkDocs</a> theme template. href="https://squidfunk.github.io/mkdocs-material/" target="_blank">Material for MkDocs</a> theme template.
## License # License
Katenary is an open source project under the MIT license. You can use it, modify it, and distribute it as you want. Katenary is an open source project under the MIT license. You can use it, modify it, and distribute it as you want.

View File

@@ -52,10 +52,10 @@ service directory.
If it is a directory, all files inside it are added to the ConfigMap. If it is a directory, all files inside it are added to the ConfigMap.
If the directory as subdirectories, so one configmap per subpath are created. If the directory as subdirectories, so one ConfigMap per sub-path are created.
!!! Warning !!! Warning
It is not intended to be used to store an entire project in configmaps. It is not intended to be used to store an entire project in ConfigMaps.
It is intended to be used to store configuration files that are not managed It is intended to be used to store configuration files that are not managed
by the application, like nginx configuration files. Keep in mind that your by the application, like nginx configuration files. Keep in mind that your
project sources should be stored in an application image or in a storage. project sources should be stored in an application image or in a storage.
@@ -80,6 +80,7 @@ Create a cronjob from the service.
This adds a cronjob to the chart. This adds a cronjob to the chart.
The label value is a YAML object with the following attributes: The label value is a YAML object with the following attributes:
- command: the command to be executed - command: the command to be executed
- schedule: the cron schedule (cron format or @every where "every" is a - schedule: the cron schedule (cron format or @every where "every" is a
duration like 1h30m, daily, hourly...) duration like 1h30m, daily, hourly...)
@@ -207,6 +208,7 @@ This will create:
- a `initContainer` for each definition - a `initContainer` for each definition
Fields: Fields:
- name: the name of the volume (manadatory) - name: the name of the volume (manadatory)
- mountPath: the path where the volume is mounted in the pod (optional, default is `/opt`) - mountPath: the path where the volume is mounted in the pod (optional, default is `/opt`)
- init: a command to run to initialize the volume with data (optional) - init: a command to run to initialize the volume with data (optional)
@@ -418,7 +420,7 @@ Environment variables to be added to the values.yaml
**Type**: `[]string or map[string]string` **Type**: `[]string or map[string]string`
By default, all environment variables in the "env" and environment By default, all environment variables in the "env" and environment
files are added to configmaps with the static values set. This label files are added to ConfigMaps with the static values set. This label
allows adding environment variables to the values.yaml file. allows adding environment variables to the values.yaml file.
Note that the value inside the configmap is `{{ tpl vaname . }}`, so Note that the value inside the configmap is `{{ tpl vaname . }}`, so

View File

@@ -129,6 +129,7 @@ After having installed `katenary`, the standard usage is to call:
It will search standard compose files in the current directory and try to create a helm chart in "chart" directory. It will search standard compose files in the current directory and try to create a helm chart in "chart" directory.
!!! Info !!! Info
Katenary uses the compose-go library which respects the Docker and Docker-Compose specification. Keep in mind that Katenary uses the compose-go library which respects the Docker and Docker-Compose specification. Keep in mind that
it will find files exactly the same way as `docker-compose` and `podman-compose` do it. it will find files exactly the same way as `docker-compose` and `podman-compose` do it.
@@ -141,6 +142,7 @@ Of course, you can provide others files than the default with (cumulative) `-c`
Katenary proposes a lot of labels to configure the helm chart generation, but some are very important. Katenary proposes a lot of labels to configure the helm chart generation, but some are very important.
!!! Info !!! Info
For more complete label usage, see [the labels page](labels.md). For more complete label usage, see [the labels page](labels.md).
### Work with Depends On? ### Work with Depends On?

View File

@@ -1,7 +1,7 @@
'\" t '\" t
.\" Automatically generated by Pandoc 3.1.11.1 .\" Automatically generated by Pandoc 3.1.11.1
.\" .\"
.TH "Katenary" "1" "2025-08-21" "mkdocs-manpage v2.0.1" "Katenary helm chart generator" .TH "Katenary" "1" "2025-08-29" "mkdocs-manpage v2.0.1" "Katenary helm chart generator"
.SH Basic Usage .SH Basic Usage
Basically, you can use \f[CR]katenary\f[R] to transpose a docker\-compose file (or any compose file compatible with \f[CR]podman\-compose\f[R] and \f[CR]docker\-compose\f[R]) to a configurable Helm Chart. Basically, you can use \f[CR]katenary\f[R] to transpose a docker\-compose file (or any compose file compatible with \f[CR]podman\-compose\f[R] and \f[CR]docker\-compose\f[R]) to a configurable Helm Chart.
This resulting helm chart can be installed with \f[CR]helm\f[R] command to your Kubernetes cluster. This resulting helm chart can be installed with \f[CR]helm\f[R] command to your Kubernetes cluster.

View File

@@ -45,7 +45,7 @@
short: "Environment variables to be added to the values.yaml" short: "Environment variables to be added to the values.yaml"
long: |- long: |-
By default, all environment variables in the "env" and environment By default, all environment variables in the "env" and environment
files are added to configmaps with the static values set. This label files are added to ConfigMaps with the static values set. This label
allows adding environment variables to the values.yaml file. allows adding environment variables to the values.yaml file.
Note that the value inside the configmap is {{ "{{ tpl vaname . }}" }}, so Note that the value inside the configmap is {{ "{{ tpl vaname . }}" }}, so
@@ -232,10 +232,10 @@
If it is a directory, all files inside it are added to the ConfigMap. If it is a directory, all files inside it are added to the ConfigMap.
If the directory as subdirectories, so one configmap per subpath are created. If the directory as subdirectories, so one ConfigMap per sub-path are created.
!!! Warning !!! Warning
It is not intended to be used to store an entire project in configmaps. It is not intended to be used to store an entire project in ConfigMaps.
It is intended to be used to store configuration files that are not managed It is intended to be used to store configuration files that are not managed
by the application, like nginx configuration files. Keep in mind that your by the application, like nginx configuration files. Keep in mind that your
project sources should be stored in an application image or in a storage. project sources should be stored in an application image or in a storage.
@@ -253,6 +253,7 @@
This adds a cronjob to the chart. This adds a cronjob to the chart.
The label value is a YAML object with the following attributes: The label value is a YAML object with the following attributes:
- command: the command to be executed - command: the command to be executed
- schedule: the cron schedule (cron format or @every where "every" is a - schedule: the cron schedule (cron format or @every where "every" is a
duration like 1h30m, daily, hourly...) duration like 1h30m, daily, hourly...)
@@ -299,6 +300,7 @@
- a `initContainer` for each definition - a `initContainer` for each definition
Fields: Fields:
- name: the name of the volume (manadatory) - name: the name of the volume (manadatory)
- mountPath: the path where the volume is mounted in the pod (optional, default is `/opt`) - mountPath: the path where the volume is mounted in the pod (optional, default is `/opt`)
- init: a command to run to initialize the volume with data (optional) - init: a command to run to initialize the volume with data (optional)