Compare commits
5 Commits
f3c1bf39fe
...
releases/3
Author | SHA1 | Date | |
---|---|---|---|
b8333eacf2
|
|||
bd24e833cb
|
|||
a17d35df03
|
|||
8c443ba402
|
|||
a4647aa69a
|
@@ -18,12 +18,21 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
steps:
|
steps:
|
||||||
- name: Extract version
|
- name: Extract version and image name
|
||||||
run: |
|
run: |
|
||||||
|
# remove "releases/"
|
||||||
VERSION="${VERSION#releases/}"
|
VERSION="${VERSION#releases/}"
|
||||||
|
# set image name to lower case
|
||||||
|
IMAGE_NAME="${IMAGE_NAME,,}"
|
||||||
|
|
||||||
echo "Exporting variable VERSION=$VERSION"
|
echo "Exporting variable VERSION=$VERSION"
|
||||||
|
echo "Exporting variable IMAGE_NAME=$IMAGE_NAME"
|
||||||
|
|
||||||
echo "VERSION=$VERSION" >> $GITEA_OUTPUT
|
echo "VERSION=$VERSION" >> $GITEA_OUTPUT
|
||||||
|
echo "IMAGE_NAME=$IMAGE_NAME" >> $GITEA_OUTPUT
|
||||||
|
|
||||||
echo "VERSION=$VERSION" >> $GITEA_ENV
|
echo "VERSION=$VERSION" >> $GITEA_ENV
|
||||||
|
echo "IMAGE_NAME=$IMAGE_NAME" >> $GITEA_ENV
|
||||||
|
|
||||||
- name: Install Buildah
|
- name: Install Buildah
|
||||||
run: |-
|
run: |-
|
||||||
@@ -44,12 +53,12 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and tag
|
- name: Build and tag
|
||||||
run: |-
|
run: |-
|
||||||
echo "Building image $REGISTRY/${IMAGE_NAME,,}:$VERSION / latest"
|
echo "Building image ${REGISTRY}/${IMAGE_NAME}:${VERSION} / latest"
|
||||||
buildah build --isolation=chroot --build-arg VERSION=$VERSION -t katenary -f ./oci/katenary/Containerfile .
|
buildah build --isolation=chroot --build-arg VERSION=${VERSION} -t katenary -f ./oci/katenary/Containerfile .
|
||||||
buildah tag katenary $REGISTRY/${IMAGE_NAME,,}:$VERSION
|
buildah tag katenary ${REGISTRY}/${IMAGE_NAME}:${VERSION}
|
||||||
buildah tag katenary $REGISTRY/${IMAGE_NAME,,}:latest
|
buildah tag katenary ${REGISTRY}/${IMAGE_NAME}:latest
|
||||||
|
|
||||||
- name: Push image
|
- name: Push image
|
||||||
run: |-
|
run: |-
|
||||||
buildah push $REGISTRY/${IMAGE_NAME,,}:$VERSION
|
buildah push ${REGISTRY}/${IMAGE_NAME}:${VERSION}
|
||||||
buildah push $REGISTRY/${IMAGE_NAME,,}:latest
|
buildah push ${REGISTRY}/${IMAGE_NAME}:latest
|
||||||
|
@@ -78,7 +78,7 @@ tested some concepts.
|
|||||||
You can help us in many ways.
|
You can help us in many ways.
|
||||||
|
|
||||||
- The first things we really need, more than money, more than anything else, is to have feedback. If you use Katenary,
|
- The first things we really need, more than money, more than anything else, is to have feedback. If you use Katenary,
|
||||||
if you have some issues, if you have some ideas, please open an issue on the [GitHub repository](https://github.com/Katenary/katenary).
|
if you have some issues, if you have some ideas, please open an issue on [our repository](https://repo.katenary.io/Katenary/katenary).
|
||||||
- The second thing is to help us to fix issues. If you're a Go developer, or if you want to fix the documentation,
|
- The second thing is to help us to fix issues. If you're a Go developer, or if you want to fix the documentation,
|
||||||
your help is greatly appreciated.
|
your help is greatly appreciated.
|
||||||
- And then, of course, we need money, or sponsors.
|
- And then, of course, we need money, or sponsors.
|
||||||
@@ -88,6 +88,8 @@ You can help us in many ways.
|
|||||||
We will be happy to communicate your help by putting your logo on the website and in the documentation. You can sponsor
|
We will be happy to communicate your help by putting your logo on the website and in the documentation. You can sponsor
|
||||||
us by giving us some money, or by giving us some time of your developers, or leaving us some time to work on the project.
|
us by giving us some money, or by giving us some time of your developers, or leaving us some time to work on the project.
|
||||||
|
|
||||||
|
Please, contact us by email at [contact at katenary dot io](mailto:contact@katenary.io).
|
||||||
|
|
||||||
### If you're an individual
|
### If you're an individual
|
||||||
|
|
||||||
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.
|
||||||
|
@@ -17,7 +17,7 @@ const DirectoryPermission = 0o755
|
|||||||
```
|
```
|
||||||
|
|
||||||
<a name="AsResourceName"></a>
|
<a name="AsResourceName"></a>
|
||||||
## func [AsResourceName](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L197>)
|
## func [AsResourceName](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L198>)
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func AsResourceName(name string) string
|
func AsResourceName(name string) string
|
||||||
@@ -26,7 +26,7 @@ func AsResourceName(name string) string
|
|||||||
AsResourceName returns a resource name with underscores to respect the kubernetes naming convention. It's the opposite of FixedResourceName.
|
AsResourceName returns a resource name with underscores to respect the kubernetes naming convention. It's the opposite of FixedResourceName.
|
||||||
|
|
||||||
<a name="Confirm"></a>
|
<a name="Confirm"></a>
|
||||||
## func [Confirm](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L165>)
|
## func [Confirm](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L166>)
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func Confirm(question string, icon ...logger.Icon) bool
|
func Confirm(question string, icon ...logger.Icon) bool
|
||||||
@@ -44,7 +44,7 @@ func CountStartingSpaces(line string) int
|
|||||||
CountStartingSpaces counts the number of spaces at the beginning of a string.
|
CountStartingSpaces counts the number of spaces at the beginning of a string.
|
||||||
|
|
||||||
<a name="EncodeBasicYaml"></a>
|
<a name="EncodeBasicYaml"></a>
|
||||||
## func [EncodeBasicYaml](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L179>)
|
## func [EncodeBasicYaml](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L180>)
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func EncodeBasicYaml(data any) ([]byte, error)
|
func EncodeBasicYaml(data any) ([]byte, error)
|
||||||
@@ -53,7 +53,7 @@ func EncodeBasicYaml(data any) ([]byte, error)
|
|||||||
EncodeBasicYaml encodes a basic yaml from an interface.
|
EncodeBasicYaml encodes a basic yaml from an interface.
|
||||||
|
|
||||||
<a name="FixedResourceName"></a>
|
<a name="FixedResourceName"></a>
|
||||||
## func [FixedResourceName](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L191>)
|
## func [FixedResourceName](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L192>)
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func FixedResourceName(name string) string
|
func FixedResourceName(name string) string
|
||||||
@@ -152,7 +152,7 @@ func TplValue(serviceName, variable string, pipes ...string) string
|
|||||||
TplValue returns a string that can be used in a template to access a value from the values file.
|
TplValue returns a string that can be used in a template to access a value from the values file.
|
||||||
|
|
||||||
<a name="WordWrap"></a>
|
<a name="WordWrap"></a>
|
||||||
## func [WordWrap](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L160>)
|
## func [WordWrap](<https://repo.katenary.io/Katenary/katenary/blob/master/internal/utils/utils.go#L161>)
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func WordWrap(text string, lineWidth int) string
|
func WordWrap(text string, lineWidth int) string
|
||||||
|
@@ -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-29" "mkdocs-manpage v2.0.1" "Katenary helm chart generator"
|
.TH "Katenary" "1" "2025-09-15" "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.
|
||||||
@@ -414,11 +414,11 @@ The file or directory is relative to the service directory.
|
|||||||
.PP
|
.PP
|
||||||
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.
|
||||||
.PP
|
.PP
|
||||||
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.
|
||||||
.PP
|
.PP
|
||||||
Warning
|
Warning
|
||||||
.PP
|
.PP
|
||||||
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 by the application, like nginx configuration files.
|
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 project sources should be stored in an application image or in a storage.
|
Keep in mind that your project sources should be stored in an application image or in a storage.
|
||||||
.PP
|
.PP
|
||||||
@@ -438,8 +438,13 @@ Create a cronjob from the service.
|
|||||||
.PP
|
.PP
|
||||||
This adds a cronjob to the chart.
|
This adds a cronjob to the chart.
|
||||||
.PP
|
.PP
|
||||||
The label value is a YAML object with the following attributes: \- command: the command to be executed \- schedule: the cron schedule (cron format or \[at]every where \[dq]every\[dq] is a duration like 1h30m, daily, hourly...)
|
The label value is a YAML object with the following attributes:
|
||||||
\- rbac: false (optionnal), if true, it will create a role, a rolebinding and a serviceaccount to make your cronjob able to connect the Kubernetes API
|
.IP \[bu] 2
|
||||||
|
command: the command to be executed
|
||||||
|
.IP \[bu] 2
|
||||||
|
schedule: the cron schedule (cron format or \[at]every where \[dq]every\[dq] is a duration like 1h30m, daily, hourly...)
|
||||||
|
.IP \[bu] 2
|
||||||
|
rbac: false (optionnal), if true, it will create a role, a rolebinding and a serviceaccount to make your cronjob able to connect the Kubernetes API
|
||||||
.PP
|
.PP
|
||||||
\f[B]Example:\f[R]
|
\f[B]Example:\f[R]
|
||||||
.IP
|
.IP
|
||||||
@@ -532,7 +537,7 @@ service1:
|
|||||||
service2:
|
service2:
|
||||||
image: php:7.4\-fpm
|
image: php:7.4\-fpm
|
||||||
labels:
|
labels:
|
||||||
# get the congigMap from service1 where FOO is
|
# get the congigMap from service1 where FOO is
|
||||||
# defined inside this service too
|
# defined inside this service too
|
||||||
katenary.v3/env\-from: |\-
|
katenary.v3/env\-from: |\-
|
||||||
\- myservice1
|
\- myservice1
|
||||||
@@ -555,7 +560,13 @@ a \f[CR]voumeMount\f[R] in the pod for \f[B]each container\f[R]
|
|||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
a \f[CR]initContainer\f[R] for each definition
|
a \f[CR]initContainer\f[R] for each definition
|
||||||
.PP
|
.PP
|
||||||
Fields: \- name: the name of the volume (manadatory) \- mountPath: the path where the volume is mounted in the pod (optional, default is \f[CR]/opt\f[R]) \- init: a command to run to initialize the volume with data (optional)
|
Fields:
|
||||||
|
.IP \[bu] 2
|
||||||
|
name: the name of the volume (manadatory)
|
||||||
|
.IP \[bu] 2
|
||||||
|
mountPath: the path where the volume is mounted in the pod (optional, default is \f[CR]/opt\f[R])
|
||||||
|
.IP \[bu] 2
|
||||||
|
init: a command to run to initialize the volume with data (optional)
|
||||||
.PP
|
.PP
|
||||||
Warning
|
Warning
|
||||||
.PP
|
.PP
|
||||||
@@ -645,7 +656,7 @@ ghost:
|
|||||||
image: ghost:1.25.5
|
image: ghost:1.25.5
|
||||||
labels:
|
labels:
|
||||||
# The chart is now named ghost, and the appVersion is 1.25.5.
|
# The chart is now named ghost, and the appVersion is 1.25.5.
|
||||||
# In Deployment, the image attribute is set to ghost:1.25.5 if
|
# In Deployment, the image attribute is set to ghost:1.25.5 if
|
||||||
# you don\[aq]t change the \[dq]tag\[dq] attribute in values.yaml
|
# you don\[aq]t change the \[dq]tag\[dq] attribute in values.yaml
|
||||||
katenary.v3/main\-app: true
|
katenary.v3/main\-app: true
|
||||||
.EE
|
.EE
|
||||||
@@ -734,7 +745,7 @@ Environment variables to be added to the values.yaml
|
|||||||
.PP
|
.PP
|
||||||
\f[B]Type\f[R]: \f[CR][]string or map[string]string\f[R]
|
\f[B]Type\f[R]: \f[CR][]string or map[string]string\f[R]
|
||||||
.PP
|
.PP
|
||||||
By default, all environment variables in the \[dq]env\[dq] and environment files are added to configmaps with the static values set.
|
By default, all environment variables in the \[dq]env\[dq] and environment files are added to ConfigMaps with the static values set.
|
||||||
This label allows adding environment variables to the values.yaml file.
|
This label allows adding environment variables to the values.yaml file.
|
||||||
.PP
|
.PP
|
||||||
Note that the value inside the configmap is \f[CR]{{ tpl vaname . }}\f[R], so you can set the value to a template that will be rendered with the values.yaml file.
|
Note that the value inside the configmap is \f[CR]{{ tpl vaname . }}\f[R], so you can set the value to a template that will be rendered with the values.yaml file.
|
||||||
@@ -756,7 +767,7 @@ labels:
|
|||||||
\- TO_CONFIGURE
|
\- TO_CONFIGURE
|
||||||
# complex values, set as a template in values.yaml with a documentation
|
# complex values, set as a template in values.yaml with a documentation
|
||||||
\- A_COMPLEX_VALUE: |\-
|
\- A_COMPLEX_VALUE: |\-
|
||||||
This is the documentation for the variable to
|
This is the documentation for the variable to
|
||||||
configure in values.yaml.
|
configure in values.yaml.
|
||||||
It can be, of course, a multiline text.
|
It can be, of course, a multiline text.
|
||||||
.EE
|
.EE
|
||||||
|
4
go.mod
4
go.mod
@@ -1,6 +1,8 @@
|
|||||||
module katenary.io
|
module katenary.io
|
||||||
|
|
||||||
go 1.25
|
go 1.24.0
|
||||||
|
|
||||||
|
toolchain go1.24.7
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/compose-spec/compose-go v1.20.2
|
github.com/compose-spec/compose-go v1.20.2
|
||||||
|
@@ -136,16 +136,17 @@ func GetValuesFromLabel(service types.ServiceConfig, LabelValues string) map[str
|
|||||||
log.Printf("Error parsing label %s: %s", v, err)
|
log.Printf("Error parsing label %s: %s", v, err)
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, value := range labelContent {
|
for _, value := range labelContent {
|
||||||
switch val := value.(type) {
|
switch value := value.(type) {
|
||||||
case string:
|
case string:
|
||||||
descriptions[val] = nil
|
descriptions[value] = nil
|
||||||
case map[string]any:
|
case map[string]any:
|
||||||
for k, v := range value.(map[string]any) {
|
for k, v := range value {
|
||||||
descriptions[k] = &EnvConfig{Service: service, Description: v.(string)}
|
descriptions[k] = &EnvConfig{Service: service, Description: v.(string)}
|
||||||
}
|
}
|
||||||
case map[any]any:
|
case map[any]any:
|
||||||
for k, v := range value.(map[any]any) {
|
for k, v := range value {
|
||||||
descriptions[k.(string)] = &EnvConfig{Service: service, Description: v.(string)}
|
descriptions[k.(string)] = &EnvConfig{Service: service, Description: v.(string)}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user