Compare commits
8 Commits
feature/be
...
feature/mo
| Author | SHA1 | Date | |
|---|---|---|---|
| 75dd6701a9 | |||
| dc7a8bc422 | |||
| b9e81c7e49 | |||
| 99c8e12f40 | |||
| ca9e3da208 | |||
| 99d8173c15 | |||
| a1e6726763 | |||
| 9924ede999 |
@@ -154,9 +154,9 @@ Method to check if a service is ready (for depends_on).
|
||||
When a service uses `depends_on`, Katenary creates an initContainer to wait
|
||||
for the dependent service to be ready.
|
||||
|
||||
By default, Katenary uses the Kubernetes API to check if the service endpoint
|
||||
has ready addresses. This method does not require the service to expose a port
|
||||
and does not create a Kubernetes Service automatically.
|
||||
By default, Katenary uses the Kubernetes API to check if the deployment's
|
||||
`readyReplicas` status is greater than 0. This method does not require the
|
||||
service to expose a port and does not create a Kubernetes Service automatically.
|
||||
|
||||
If you need to create a Kubernetes Service for external access, use the
|
||||
`katenary.v3/ports` label instead.
|
||||
@@ -320,6 +320,17 @@ Ingress rules to be added to the service.
|
||||
Declare an ingress rule for the service. The port should be exposed or
|
||||
declared with `katenary.v3/ports`.
|
||||
|
||||
The default ingress class is "traefik".
|
||||
|
||||
**Files generated:** Both `ingress.yaml` (standard Kubernetes Ingress) and
|
||||
`ingressroute.yaml` (Traefik IngressRoute CRD) are generated. You can
|
||||
control which one is installed via values.yaml:
|
||||
|
||||
- `ingress.enabled` - controls standard Ingress installation
|
||||
- `ingress.ingressRouteEnabled` - controls IngressRoute installation
|
||||
|
||||
Setting `type: ingressroute` automatically sets `ingressRouteEnabled: true`.
|
||||
|
||||
**Example:**
|
||||
|
||||
```yaml
|
||||
@@ -327,6 +338,9 @@ labels:
|
||||
katenary.v3/ingress: |-
|
||||
port: 80
|
||||
hostname: mywebsite.com (optional)
|
||||
# Use Traefik IngressRoute instead of standard Ingress
|
||||
type: ingressroute
|
||||
enabled: true
|
||||
```
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ var Version = "master" // changed at compile time
|
||||
```
|
||||
|
||||
<a name="Convert"></a>
|
||||
## func [Convert](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/converter.go#L100>)
|
||||
## func Convert
|
||||
|
||||
```go
|
||||
func Convert(config ConvertOptions, dockerComposeFile ...string) error
|
||||
@@ -44,7 +44,7 @@ func Convert(config ConvertOptions, dockerComposeFile ...string) error
|
||||
Convert a compose \(docker, podman...\) project to a helm chart. It calls Generate\(\) to generate the chart and then write it to the disk.
|
||||
|
||||
<a name="GetLabels"></a>
|
||||
## func [GetLabels](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels.go#L13>)
|
||||
## func GetLabels
|
||||
|
||||
```go
|
||||
func GetLabels(serviceName, appName string) map[string]string
|
||||
@@ -53,7 +53,7 @@ func GetLabels(serviceName, appName string) map[string]string
|
||||
GetLabels returns the labels for a service. It uses the appName to replace the \_\_replace\_\_ in the labels. This is used to generate the labels in the templates.
|
||||
|
||||
<a name="GetMatchLabels"></a>
|
||||
## func [GetMatchLabels](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels.go#L26>)
|
||||
## func GetMatchLabels
|
||||
|
||||
```go
|
||||
func GetMatchLabels(serviceName, appName string) map[string]string
|
||||
@@ -62,7 +62,7 @@ func GetMatchLabels(serviceName, appName string) map[string]string
|
||||
GetMatchLabels returns the matchLabels for a service. It uses the appName to replace the \_\_replace\_\_ in the labels. This is used to generate the matchLabels in the templates.
|
||||
|
||||
<a name="GetVersion"></a>
|
||||
## func [GetVersion](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/version.go#L15>)
|
||||
## func GetVersion
|
||||
|
||||
```go
|
||||
func GetVersion() string
|
||||
@@ -71,7 +71,7 @@ func GetVersion() string
|
||||
GetVersion return the version of katneary. It's important to understand that the version is set at compile time for the github release. But, it the user get katneary using \`go install\`, the version should be different.
|
||||
|
||||
<a name="Helper"></a>
|
||||
## func [Helper](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/helper.go#L16>)
|
||||
## func Helper
|
||||
|
||||
```go
|
||||
func Helper(name string) string
|
||||
@@ -80,7 +80,7 @@ func Helper(name string) string
|
||||
Helper returns the \_helpers.tpl file for a chart.
|
||||
|
||||
<a name="NewCronJob"></a>
|
||||
## func [NewCronJob](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/cronJob.go#L29>)
|
||||
## func NewCronJob
|
||||
|
||||
```go
|
||||
func NewCronJob(service types.ServiceConfig, chart *HelmChart, appName string) (*CronJob, *RBAC)
|
||||
@@ -89,7 +89,7 @@ func NewCronJob(service types.ServiceConfig, chart *HelmChart, appName string) (
|
||||
NewCronJob creates a new CronJob from a compose service. The appName is the name of the application taken from the project name.
|
||||
|
||||
<a name="ToK8SYaml"></a>
|
||||
## func [ToK8SYaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/utils.go#L91>)
|
||||
## func ToK8SYaml
|
||||
|
||||
```go
|
||||
func ToK8SYaml(obj any) ([]byte, error)
|
||||
@@ -98,7 +98,7 @@ func ToK8SYaml(obj any) ([]byte, error)
|
||||
|
||||
|
||||
<a name="UnWrapTPL"></a>
|
||||
## func [UnWrapTPL](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/utils.go#L87>)
|
||||
## func UnWrapTPL
|
||||
|
||||
```go
|
||||
func UnWrapTPL(in []byte) []byte
|
||||
@@ -107,7 +107,7 @@ func UnWrapTPL(in []byte) []byte
|
||||
UnWrapTPL removes the line wrapping from a template.
|
||||
|
||||
<a name="ChartTemplate"></a>
|
||||
## type [ChartTemplate](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/chart.go#L22-L25>)
|
||||
## type ChartTemplate
|
||||
|
||||
ChartTemplate is a template of a chart. It contains the content of the template and the name of the service. This is used internally to generate the templates.
|
||||
|
||||
@@ -119,7 +119,7 @@ type ChartTemplate struct {
|
||||
```
|
||||
|
||||
<a name="ConfigMap"></a>
|
||||
## type [ConfigMap](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L38-L43>)
|
||||
## type ConfigMap
|
||||
|
||||
ConfigMap is a kubernetes ConfigMap. Implements the DataMap interface.
|
||||
|
||||
@@ -131,7 +131,7 @@ type ConfigMap struct {
|
||||
```
|
||||
|
||||
<a name="NewConfigMap"></a>
|
||||
### func [NewConfigMap](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L47>)
|
||||
### func NewConfigMap
|
||||
|
||||
```go
|
||||
func NewConfigMap(service types.ServiceConfig, appName string, forFile bool) *ConfigMap
|
||||
@@ -140,7 +140,7 @@ func NewConfigMap(service types.ServiceConfig, appName string, forFile bool) *Co
|
||||
NewConfigMap creates a new ConfigMap from a compose service. The appName is the name of the application taken from the project name. The ConfigMap is filled by environment variables and labels "map\-env".
|
||||
|
||||
<a name="NewConfigMapFromDirectory"></a>
|
||||
### func [NewConfigMapFromDirectory](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L120>)
|
||||
### func NewConfigMapFromDirectory
|
||||
|
||||
```go
|
||||
func NewConfigMapFromDirectory(service types.ServiceConfig, appName, path string) *ConfigMap
|
||||
@@ -149,7 +149,7 @@ func NewConfigMapFromDirectory(service types.ServiceConfig, appName, path string
|
||||
NewConfigMapFromDirectory creates a new ConfigMap from a compose service. This path is the path to the file or directory. If the path is a directory, all files in the directory are added to the ConfigMap. Each subdirectory are ignored. Note that the Generate\(\) function will create the subdirectories ConfigMaps.
|
||||
|
||||
<a name="ConfigMap.AddBinaryData"></a>
|
||||
### func \(\*ConfigMap\) [AddBinaryData](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L158>)
|
||||
### func \(\*ConfigMap\) AddBinaryData
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) AddBinaryData(key string, value []byte)
|
||||
@@ -158,7 +158,7 @@ func (c *ConfigMap) AddBinaryData(key string, value []byte)
|
||||
AddBinaryData adds binary data to the configmap. Append or overwrite the value if the key already exists.
|
||||
|
||||
<a name="ConfigMap.AddData"></a>
|
||||
### func \(\*ConfigMap\) [AddData](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L153>)
|
||||
### func \(\*ConfigMap\) AddData
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) AddData(key, value string)
|
||||
@@ -167,7 +167,7 @@ func (c *ConfigMap) AddData(key, value string)
|
||||
AddData adds a key value pair to the configmap. Append or overwrite the value if the key already exists.
|
||||
|
||||
<a name="ConfigMap.AppendDir"></a>
|
||||
### func \(\*ConfigMap\) [AppendDir](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L167>)
|
||||
### func \(\*ConfigMap\) AppendDir
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) AppendDir(path string) error
|
||||
@@ -176,7 +176,7 @@ func (c *ConfigMap) AppendDir(path string) error
|
||||
AppendDir adds files from given path to the configmap. It is not recursive, to add all files in a directory, you need to call this function for each subdirectory.
|
||||
|
||||
<a name="ConfigMap.AppendFile"></a>
|
||||
### func \(\*ConfigMap\) [AppendFile](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L214>)
|
||||
### func \(\*ConfigMap\) AppendFile
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) AppendFile(path string) error
|
||||
@@ -185,7 +185,7 @@ func (c *ConfigMap) AppendFile(path string) error
|
||||
|
||||
|
||||
<a name="ConfigMap.Filename"></a>
|
||||
### func \(\*ConfigMap\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L238>)
|
||||
### func \(\*ConfigMap\) Filename
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) Filename() string
|
||||
@@ -194,7 +194,7 @@ func (c *ConfigMap) Filename() string
|
||||
Filename returns the filename of the configmap. If the configmap is used for files, the filename contains the path.
|
||||
|
||||
<a name="ConfigMap.SetData"></a>
|
||||
### func \(\*ConfigMap\) [SetData](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L248>)
|
||||
### func \(\*ConfigMap\) SetData
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) SetData(data map[string]string)
|
||||
@@ -203,7 +203,7 @@ func (c *ConfigMap) SetData(data map[string]string)
|
||||
SetData sets the data of the configmap. It replaces the entire data.
|
||||
|
||||
<a name="ConfigMap.Yaml"></a>
|
||||
### func \(\*ConfigMap\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L253>)
|
||||
### func \(\*ConfigMap\) Yaml
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) Yaml() ([]byte, error)
|
||||
@@ -212,7 +212,7 @@ func (c *ConfigMap) Yaml() ([]byte, error)
|
||||
Yaml returns the yaml representation of the configmap
|
||||
|
||||
<a name="ConfigMapMount"></a>
|
||||
## type [ConfigMapMount](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L31-L34>)
|
||||
## type ConfigMapMount
|
||||
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ type ConfigMapMount struct {
|
||||
```
|
||||
|
||||
<a name="ConvertOptions"></a>
|
||||
## type [ConvertOptions](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/chart.go#L28-L37>)
|
||||
## type ConvertOptions
|
||||
|
||||
ConvertOptions are the options to convert a compose project to a helm chart.
|
||||
|
||||
@@ -241,7 +241,7 @@ type ConvertOptions struct {
|
||||
```
|
||||
|
||||
<a name="CronJob"></a>
|
||||
## type [CronJob](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/cronJob.go#L23-L26>)
|
||||
## type CronJob
|
||||
|
||||
CronJob is a kubernetes CronJob.
|
||||
|
||||
@@ -253,7 +253,7 @@ type CronJob struct {
|
||||
```
|
||||
|
||||
<a name="CronJob.Filename"></a>
|
||||
### func \(\*CronJob\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/cronJob.go#L113>)
|
||||
### func \(\*CronJob\) Filename
|
||||
|
||||
```go
|
||||
func (c *CronJob) Filename() string
|
||||
@@ -264,7 +264,7 @@ Filename returns the filename of the cronjob.
|
||||
Implements the Yaml interface.
|
||||
|
||||
<a name="CronJob.Yaml"></a>
|
||||
### func \(\*CronJob\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/cronJob.go#L120>)
|
||||
### func \(\*CronJob\) Yaml
|
||||
|
||||
```go
|
||||
func (c *CronJob) Yaml() ([]byte, error)
|
||||
@@ -275,7 +275,7 @@ Yaml returns the yaml representation of the cronjob.
|
||||
Implements the Yaml interface.
|
||||
|
||||
<a name="CronJobValue"></a>
|
||||
## type [CronJobValue](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L118-L123>)
|
||||
## type CronJobValue
|
||||
|
||||
CronJobValue is a cronjob configuration that will be saved in values.yaml.
|
||||
|
||||
@@ -289,7 +289,7 @@ type CronJobValue struct {
|
||||
```
|
||||
|
||||
<a name="DataMap"></a>
|
||||
## type [DataMap](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/types.go#L4-L7>)
|
||||
## type DataMap
|
||||
|
||||
DataMap is a kubernetes ConfigMap or Secret. It can be used to add data to the ConfigMap or Secret.
|
||||
|
||||
@@ -301,7 +301,7 @@ type DataMap interface {
|
||||
```
|
||||
|
||||
<a name="Deployment"></a>
|
||||
## type [Deployment](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L37-L48>)
|
||||
## type Deployment
|
||||
|
||||
Deployment is a kubernetes Deployment.
|
||||
|
||||
@@ -313,7 +313,7 @@ type Deployment struct {
|
||||
```
|
||||
|
||||
<a name="NewDeployment"></a>
|
||||
### func [NewDeployment](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L52>)
|
||||
### func NewDeployment
|
||||
|
||||
```go
|
||||
func NewDeployment(service types.ServiceConfig, chart *HelmChart) *Deployment
|
||||
@@ -322,7 +322,7 @@ func NewDeployment(service types.ServiceConfig, chart *HelmChart) *Deployment
|
||||
NewDeployment creates a new Deployment from a compose service. The appName is the name of the application taken from the project name. It also creates the Values map that will be used to create the values.yaml file.
|
||||
|
||||
<a name="Deployment.AddContainer"></a>
|
||||
### func \(\*Deployment\) [AddContainer](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L119>)
|
||||
### func \(\*Deployment\) AddContainer
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddContainer(service types.ServiceConfig)
|
||||
@@ -331,7 +331,7 @@ func (d *Deployment) AddContainer(service types.ServiceConfig)
|
||||
AddContainer adds a container to the deployment.
|
||||
|
||||
<a name="Deployment.AddHealthCheck"></a>
|
||||
### func \(\*Deployment\) [AddHealthCheck](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L166>)
|
||||
### func \(\*Deployment\) AddHealthCheck
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddHealthCheck(service types.ServiceConfig, container *corev1.Container)
|
||||
@@ -340,7 +340,7 @@ func (d *Deployment) AddHealthCheck(service types.ServiceConfig, container *core
|
||||
|
||||
|
||||
<a name="Deployment.AddIngress"></a>
|
||||
### func \(\*Deployment\) [AddIngress](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L195>)
|
||||
### func \(\*Deployment\) AddIngress
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddIngress(service types.ServiceConfig, appName string) *Ingress
|
||||
@@ -348,8 +348,17 @@ func (d *Deployment) AddIngress(service types.ServiceConfig, appName string) *In
|
||||
|
||||
AddIngress adds an ingress to the deployment. It creates the ingress object.
|
||||
|
||||
<a name="Deployment.AddIngressRoute"></a>
|
||||
### func \(\*Deployment\) AddIngressRoute
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddIngressRoute(service types.ServiceConfig, appName string) Yaml
|
||||
```
|
||||
|
||||
AddIngressRoute adds an IngressRoute to the deployment if type is "ingressroute".
|
||||
|
||||
<a name="Deployment.AddLegacyVolume"></a>
|
||||
### func \(\*Deployment\) [AddLegacyVolume](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L218>)
|
||||
### func \(\*Deployment\) AddLegacyVolume
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddLegacyVolume(name, kind string)
|
||||
@@ -358,7 +367,7 @@ func (d *Deployment) AddLegacyVolume(name, kind string)
|
||||
|
||||
|
||||
<a name="Deployment.AddVolumes"></a>
|
||||
### func \(\*Deployment\) [AddVolumes](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L201>)
|
||||
### func \(\*Deployment\) AddVolumes
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddVolumes(service types.ServiceConfig, appName string)
|
||||
@@ -367,7 +376,7 @@ func (d *Deployment) AddVolumes(service types.ServiceConfig, appName string)
|
||||
AddVolumes adds a volume to the deployment. It does not create the PVC, it only adds the volumes to the deployment. If the volume is a bind volume it will warn the user that it is not supported yet.
|
||||
|
||||
<a name="Deployment.BindFrom"></a>
|
||||
### func \(\*Deployment\) [BindFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L239>)
|
||||
### func \(\*Deployment\) BindFrom
|
||||
|
||||
```go
|
||||
func (d *Deployment) BindFrom(service types.ServiceConfig, binded *Deployment)
|
||||
@@ -376,7 +385,7 @@ func (d *Deployment) BindFrom(service types.ServiceConfig, binded *Deployment)
|
||||
|
||||
|
||||
<a name="Deployment.BindMapFilesToContainer"></a>
|
||||
### func \(\*Deployment\) [BindMapFilesToContainer](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L419>)
|
||||
### func \(\*Deployment\) BindMapFilesToContainer
|
||||
|
||||
```go
|
||||
func (d *Deployment) BindMapFilesToContainer(service types.ServiceConfig, secrets []string, appName string) (*corev1.Container, int)
|
||||
@@ -385,7 +394,7 @@ func (d *Deployment) BindMapFilesToContainer(service types.ServiceConfig, secret
|
||||
|
||||
|
||||
<a name="Deployment.DependsOn"></a>
|
||||
### func \(\*Deployment\) [DependsOn](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L267>)
|
||||
### func \(\*Deployment\) DependsOn
|
||||
|
||||
```go
|
||||
func (d *Deployment) DependsOn(to *Deployment, servicename string) error
|
||||
@@ -394,7 +403,7 @@ func (d *Deployment) DependsOn(to *Deployment, servicename string) error
|
||||
DependsOn adds a initContainer to the deployment that will wait for the service to be up.
|
||||
|
||||
<a name="Deployment.Filename"></a>
|
||||
### func \(\*Deployment\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L344>)
|
||||
### func \(\*Deployment\) Filename
|
||||
|
||||
```go
|
||||
func (d *Deployment) Filename() string
|
||||
@@ -403,7 +412,7 @@ func (d *Deployment) Filename() string
|
||||
Filename returns the filename of the deployment.
|
||||
|
||||
<a name="Deployment.MountExchangeVolumes"></a>
|
||||
### func \(\*Deployment\) [MountExchangeVolumes](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L470>)
|
||||
### func \(\*Deployment\) MountExchangeVolumes
|
||||
|
||||
```go
|
||||
func (d *Deployment) MountExchangeVolumes()
|
||||
@@ -412,7 +421,7 @@ func (d *Deployment) MountExchangeVolumes()
|
||||
|
||||
|
||||
<a name="Deployment.SetEnvFrom"></a>
|
||||
### func \(\*Deployment\) [SetEnvFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L349>)
|
||||
### func \(\*Deployment\) SetEnvFrom
|
||||
|
||||
```go
|
||||
func (d *Deployment) SetEnvFrom(service types.ServiceConfig, appName string, samePod ...bool)
|
||||
@@ -421,7 +430,7 @@ func (d *Deployment) SetEnvFrom(service types.ServiceConfig, appName string, sam
|
||||
SetEnvFrom sets the environment variables to a configmap. The configmap is created.
|
||||
|
||||
<a name="Deployment.SetServiceAccountName"></a>
|
||||
### func \(\*Deployment\) [SetServiceAccountName](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L654>)
|
||||
### func \(\*Deployment\) SetServiceAccountName
|
||||
|
||||
```go
|
||||
func (d *Deployment) SetServiceAccountName()
|
||||
@@ -430,7 +439,7 @@ func (d *Deployment) SetServiceAccountName()
|
||||
|
||||
|
||||
<a name="Deployment.Yaml"></a>
|
||||
### func \(\*Deployment\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/deployment.go#L494>)
|
||||
### func \(\*Deployment\) Yaml
|
||||
|
||||
```go
|
||||
func (d *Deployment) Yaml() ([]byte, error)
|
||||
@@ -439,7 +448,7 @@ func (d *Deployment) Yaml() ([]byte, error)
|
||||
Yaml returns the yaml representation of the deployment.
|
||||
|
||||
<a name="FileMapUsage"></a>
|
||||
## type [FileMapUsage](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/configMap.go#L22>)
|
||||
## type FileMapUsage
|
||||
|
||||
FileMapUsage is the usage of the filemap.
|
||||
|
||||
@@ -457,7 +466,7 @@ const (
|
||||
```
|
||||
|
||||
<a name="HelmChart"></a>
|
||||
## type [HelmChart](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/chart.go#L41-L54>)
|
||||
## type HelmChart
|
||||
|
||||
HelmChart is a Helm Chart representation. It contains all the templates, values, versions, helpers...
|
||||
|
||||
@@ -480,7 +489,7 @@ type HelmChart struct {
|
||||
```
|
||||
|
||||
<a name="Generate"></a>
|
||||
### func [Generate](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/generator.go#L32>)
|
||||
### func Generate
|
||||
|
||||
```go
|
||||
func Generate(project *types.Project) (*HelmChart, error)
|
||||
@@ -500,7 +509,7 @@ The Generate function will create the HelmChart object this way:
|
||||
- Merge the same\-pod services.
|
||||
|
||||
<a name="NewChart"></a>
|
||||
### func [NewChart](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/chart.go#L57>)
|
||||
### func NewChart
|
||||
|
||||
```go
|
||||
func NewChart(name string) *HelmChart
|
||||
@@ -509,7 +518,7 @@ func NewChart(name string) *HelmChart
|
||||
NewChart creates a new empty chart with the given name.
|
||||
|
||||
<a name="HelmChart.SaveTemplates"></a>
|
||||
### func \(\*HelmChart\) [SaveTemplates](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/chart.go#L72>)
|
||||
### func \(\*HelmChart\) SaveTemplates
|
||||
|
||||
```go
|
||||
func (chart *HelmChart) SaveTemplates(templateDir string)
|
||||
@@ -518,7 +527,7 @@ func (chart *HelmChart) SaveTemplates(templateDir string)
|
||||
SaveTemplates the templates of the chart to the given directory.
|
||||
|
||||
<a name="Ingress"></a>
|
||||
## type [Ingress](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/ingress.go#L18-L22>)
|
||||
## type Ingress
|
||||
|
||||
|
||||
|
||||
@@ -530,16 +539,16 @@ type Ingress struct {
|
||||
```
|
||||
|
||||
<a name="NewIngress"></a>
|
||||
### func [NewIngress](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/ingress.go#L25>)
|
||||
### func NewIngress
|
||||
|
||||
```go
|
||||
func NewIngress(service types.ServiceConfig, Chart *HelmChart) *Ingress
|
||||
```
|
||||
|
||||
NewIngress creates a new Ingress from a compose service.
|
||||
NewIngress creates a new standard Kubernetes Ingress from a compose service.
|
||||
|
||||
<a name="Ingress.Filename"></a>
|
||||
### func \(\*Ingress\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/ingress.go#L129>)
|
||||
### func \(\*Ingress\) Filename
|
||||
|
||||
```go
|
||||
func (ingress *Ingress) Filename() string
|
||||
@@ -548,7 +557,7 @@ func (ingress *Ingress) Filename() string
|
||||
|
||||
|
||||
<a name="Ingress.Yaml"></a>
|
||||
### func \(\*Ingress\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/ingress.go#L133>)
|
||||
### func \(\*Ingress\) Yaml
|
||||
|
||||
```go
|
||||
func (ingress *Ingress) Yaml() ([]byte, error)
|
||||
@@ -556,8 +565,110 @@ func (ingress *Ingress) Yaml() ([]byte, error)
|
||||
|
||||
|
||||
|
||||
<a name="IngressRoute"></a>
|
||||
## type IngressRoute
|
||||
|
||||
IngressRoute represents a Traefik IngressRoute CRD
|
||||
|
||||
```go
|
||||
type IngressRoute struct {
|
||||
metav1.TypeMeta `yaml:",inline"`
|
||||
metav1.ObjectMeta `yaml:"metadata"`
|
||||
Spec IngressRouteSpec `yaml:"spec"`
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
<a name="NewIngressRoute"></a>
|
||||
### func NewIngressRoute
|
||||
|
||||
```go
|
||||
func NewIngressRoute(service types.ServiceConfig, Chart *HelmChart, mapping *labelstructs.Ingress, serviceName, appName string) *IngressRoute
|
||||
```
|
||||
|
||||
NewIngressRoute creates a new Traefik IngressRoute from a compose service.
|
||||
|
||||
<a name="IngressRoute.Filename"></a>
|
||||
### func \(\*IngressRoute\) Filename
|
||||
|
||||
```go
|
||||
func (ir *IngressRoute) Filename() string
|
||||
```
|
||||
|
||||
|
||||
|
||||
<a name="IngressRoute.Yaml"></a>
|
||||
### func \(\*IngressRoute\) Yaml
|
||||
|
||||
```go
|
||||
func (ir *IngressRoute) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
|
||||
|
||||
<a name="IngressRouteRoute"></a>
|
||||
## type IngressRouteRoute
|
||||
|
||||
IngressRouteRoute defines a route in the IngressRoute
|
||||
|
||||
```go
|
||||
type IngressRouteRoute struct {
|
||||
Match string `json:"match" yaml:"match"`
|
||||
Kind string `json:"kind" yaml:"kind"`
|
||||
Services []IngressRouteService `json:"services" yaml:"services"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="IngressRouteService"></a>
|
||||
## type IngressRouteService
|
||||
|
||||
IngressRouteService defines a service backend in IngressRoute
|
||||
|
||||
```go
|
||||
type IngressRouteService struct {
|
||||
Name string `json:"name" yaml:"name"`
|
||||
Port int `json:"port" yaml:"port"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="IngressRouteSpec"></a>
|
||||
## type IngressRouteSpec
|
||||
|
||||
IngressRouteSpec defines the spec for Traefik IngressRoute
|
||||
|
||||
```go
|
||||
type IngressRouteSpec struct {
|
||||
EntryPoints []string `json:"entryPoints,omitempty" yaml:"entryPoints,omitempty"`
|
||||
Routes []IngressRouteRoute `json:"routes" yaml:"routes"`
|
||||
TLS *IngressRouteTLS `json:"tls,omitempty" yaml:"tls,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="IngressRouteTLS"></a>
|
||||
## type IngressRouteTLS
|
||||
|
||||
IngressRouteTLS defines TLS configuration for IngressRoute
|
||||
|
||||
```go
|
||||
type IngressRouteTLS struct {
|
||||
SecretName string `json:"secretName,omitempty" yaml:"secretName,omitempty"`
|
||||
Domains []IngressRouteTLSDomain `json:"domains,omitempty" yaml:"domains,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="IngressRouteTLSDomain"></a>
|
||||
## type IngressRouteTLSDomain
|
||||
|
||||
IngressRouteTLSDomain defines a domain for TLS
|
||||
|
||||
```go
|
||||
type IngressRouteTLSDomain struct {
|
||||
Main string `json:"main" yaml:"main"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="IngressValue"></a>
|
||||
## type [IngressValue](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L29-L36>)
|
||||
## type IngressValue
|
||||
|
||||
IngressValue is a ingress configuration that will be saved in values.yaml.
|
||||
|
||||
@@ -567,13 +678,15 @@ type IngressValue struct {
|
||||
Host string `yaml:"host"`
|
||||
Path string `yaml:"path"`
|
||||
Class string `yaml:"class"`
|
||||
Type string `yaml:"type"`
|
||||
Enabled bool `yaml:"enabled"`
|
||||
IngressRouteEnabled bool `yaml:"ingressRouteEnabled"`
|
||||
TLS TLS `yaml:"tls"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="PersistenceValue"></a>
|
||||
## type [PersistenceValue](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L16-L21>)
|
||||
## type PersistenceValue
|
||||
|
||||
PersistenceValue is a persistence configuration that will be saved in values.yaml.
|
||||
|
||||
@@ -587,7 +700,7 @@ type PersistenceValue struct {
|
||||
```
|
||||
|
||||
<a name="RBAC"></a>
|
||||
## type [RBAC](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L20-L24>)
|
||||
## type RBAC
|
||||
|
||||
RBAC is a kubernetes RBAC containing a role, a rolebinding and an associated serviceaccount.
|
||||
|
||||
@@ -600,7 +713,7 @@ type RBAC struct {
|
||||
```
|
||||
|
||||
<a name="NewRBAC"></a>
|
||||
### func [NewRBAC](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L27>)
|
||||
### func NewRBAC
|
||||
|
||||
```go
|
||||
func NewRBAC(service types.ServiceConfig, appName string) *RBAC
|
||||
@@ -609,7 +722,7 @@ func NewRBAC(service types.ServiceConfig, appName string) *RBAC
|
||||
NewRBAC creates a new RBAC from a compose service. The appName is the name of the application taken from the project name.
|
||||
|
||||
<a name="RepositoryValue"></a>
|
||||
## type [RepositoryValue](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L10-L13>)
|
||||
## type RepositoryValue
|
||||
|
||||
RepositoryValue is a docker repository image and tag that will be saved in values.yaml.
|
||||
|
||||
@@ -621,7 +734,7 @@ type RepositoryValue struct {
|
||||
```
|
||||
|
||||
<a name="Role"></a>
|
||||
## type [Role](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L114-L117>)
|
||||
## type Role
|
||||
|
||||
Role is a kubernetes Role.
|
||||
|
||||
@@ -633,7 +746,7 @@ type Role struct {
|
||||
```
|
||||
|
||||
<a name="NewRestrictedRole"></a>
|
||||
### func [NewRestrictedRole](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L150>)
|
||||
### func NewRestrictedRole
|
||||
|
||||
```go
|
||||
func NewRestrictedRole(service types.ServiceConfig, appName string) *Role
|
||||
@@ -642,7 +755,7 @@ func NewRestrictedRole(service types.ServiceConfig, appName string) *Role
|
||||
NewRestrictedRole creates a Role with minimal permissions for init containers.
|
||||
|
||||
<a name="Role.Filename"></a>
|
||||
### func \(\*Role\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L119>)
|
||||
### func \(\*Role\) Filename
|
||||
|
||||
```go
|
||||
func (r *Role) Filename() string
|
||||
@@ -651,7 +764,7 @@ func (r *Role) Filename() string
|
||||
|
||||
|
||||
<a name="Role.Yaml"></a>
|
||||
### func \(\*Role\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L123>)
|
||||
### func \(\*Role\) Yaml
|
||||
|
||||
```go
|
||||
func (r *Role) Yaml() ([]byte, error)
|
||||
@@ -660,7 +773,7 @@ func (r *Role) Yaml() ([]byte, error)
|
||||
|
||||
|
||||
<a name="RoleBinding"></a>
|
||||
## type [RoleBinding](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L100-L103>)
|
||||
## type RoleBinding
|
||||
|
||||
RoleBinding is a kubernetes RoleBinding.
|
||||
|
||||
@@ -672,7 +785,7 @@ type RoleBinding struct {
|
||||
```
|
||||
|
||||
<a name="NewRestrictedRoleBinding"></a>
|
||||
### func [NewRestrictedRoleBinding](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L175>)
|
||||
### func NewRestrictedRoleBinding
|
||||
|
||||
```go
|
||||
func NewRestrictedRoleBinding(service types.ServiceConfig, appName string) *RoleBinding
|
||||
@@ -681,7 +794,7 @@ func NewRestrictedRoleBinding(service types.ServiceConfig, appName string) *Role
|
||||
NewRestrictedRoleBinding creates a RoleBinding that binds the restricted role to the ServiceAccount.
|
||||
|
||||
<a name="RoleBinding.Filename"></a>
|
||||
### func \(\*RoleBinding\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L105>)
|
||||
### func \(\*RoleBinding\) Filename
|
||||
|
||||
```go
|
||||
func (r *RoleBinding) Filename() string
|
||||
@@ -690,7 +803,7 @@ func (r *RoleBinding) Filename() string
|
||||
|
||||
|
||||
<a name="RoleBinding.Yaml"></a>
|
||||
### func \(\*RoleBinding\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L109>)
|
||||
### func \(\*RoleBinding\) Yaml
|
||||
|
||||
```go
|
||||
func (r *RoleBinding) Yaml() ([]byte, error)
|
||||
@@ -699,7 +812,7 @@ func (r *RoleBinding) Yaml() ([]byte, error)
|
||||
|
||||
|
||||
<a name="Secret"></a>
|
||||
## type [Secret](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/secret.go#L23-L26>)
|
||||
## type Secret
|
||||
|
||||
Secret is a kubernetes Secret.
|
||||
|
||||
@@ -713,7 +826,7 @@ type Secret struct {
|
||||
```
|
||||
|
||||
<a name="NewSecret"></a>
|
||||
### func [NewSecret](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/secret.go#L29>)
|
||||
### func NewSecret
|
||||
|
||||
```go
|
||||
func NewSecret(service types.ServiceConfig, appName string) *Secret
|
||||
@@ -722,7 +835,7 @@ func NewSecret(service types.ServiceConfig, appName string) *Secret
|
||||
NewSecret creates a new Secret from a compose service
|
||||
|
||||
<a name="Secret.AddData"></a>
|
||||
### func \(\*Secret\) [AddData](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/secret.go#L71>)
|
||||
### func \(\*Secret\) AddData
|
||||
|
||||
```go
|
||||
func (s *Secret) AddData(key, value string)
|
||||
@@ -731,7 +844,7 @@ func (s *Secret) AddData(key, value string)
|
||||
AddData adds a key value pair to the secret.
|
||||
|
||||
<a name="Secret.Filename"></a>
|
||||
### func \(\*Secret\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/secret.go#L87>)
|
||||
### func \(\*Secret\) Filename
|
||||
|
||||
```go
|
||||
func (s *Secret) Filename() string
|
||||
@@ -740,7 +853,7 @@ func (s *Secret) Filename() string
|
||||
Filename returns the filename of the secret.
|
||||
|
||||
<a name="Secret.SetData"></a>
|
||||
### func \(\*Secret\) [SetData](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/secret.go#L92>)
|
||||
### func \(\*Secret\) SetData
|
||||
|
||||
```go
|
||||
func (s *Secret) SetData(data map[string]string)
|
||||
@@ -749,7 +862,7 @@ func (s *Secret) SetData(data map[string]string)
|
||||
SetData sets the data of the secret.
|
||||
|
||||
<a name="Secret.Yaml"></a>
|
||||
### func \(\*Secret\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/secret.go#L99>)
|
||||
### func \(\*Secret\) Yaml
|
||||
|
||||
```go
|
||||
func (s *Secret) Yaml() ([]byte, error)
|
||||
@@ -758,7 +871,7 @@ func (s *Secret) Yaml() ([]byte, error)
|
||||
Yaml returns the yaml representation of the secret.
|
||||
|
||||
<a name="Service"></a>
|
||||
## type [Service](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/service.go#L19-L22>)
|
||||
## type Service
|
||||
|
||||
Service is a kubernetes Service.
|
||||
|
||||
@@ -770,7 +883,7 @@ type Service struct {
|
||||
```
|
||||
|
||||
<a name="NewService"></a>
|
||||
### func [NewService](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/service.go#L25>)
|
||||
### func NewService
|
||||
|
||||
```go
|
||||
func NewService(service types.ServiceConfig, appName string) *Service
|
||||
@@ -779,7 +892,7 @@ func NewService(service types.ServiceConfig, appName string) *Service
|
||||
NewService creates a new Service from a compose service.
|
||||
|
||||
<a name="Service.AddPort"></a>
|
||||
### func \(\*Service\) [AddPort](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/service.go#L54>)
|
||||
### func \(\*Service\) AddPort
|
||||
|
||||
```go
|
||||
func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string)
|
||||
@@ -788,7 +901,7 @@ func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string)
|
||||
AddPort adds a port to the service.
|
||||
|
||||
<a name="Service.Filename"></a>
|
||||
### func \(\*Service\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/service.go#L75>)
|
||||
### func \(\*Service\) Filename
|
||||
|
||||
```go
|
||||
func (s *Service) Filename() string
|
||||
@@ -797,7 +910,7 @@ func (s *Service) Filename() string
|
||||
Filename returns the filename of the service.
|
||||
|
||||
<a name="Service.Yaml"></a>
|
||||
### func \(\*Service\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/service.go#L80>)
|
||||
### func \(\*Service\) Yaml
|
||||
|
||||
```go
|
||||
func (s *Service) Yaml() ([]byte, error)
|
||||
@@ -806,7 +919,7 @@ func (s *Service) Yaml() ([]byte, error)
|
||||
Yaml returns the yaml representation of the service.
|
||||
|
||||
<a name="ServiceAccount"></a>
|
||||
## type [ServiceAccount](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L205-L208>)
|
||||
## type ServiceAccount
|
||||
|
||||
ServiceAccount is a kubernetes ServiceAccount.
|
||||
|
||||
@@ -818,7 +931,7 @@ type ServiceAccount struct {
|
||||
```
|
||||
|
||||
<a name="NewServiceAccount"></a>
|
||||
### func [NewServiceAccount](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L132>)
|
||||
### func NewServiceAccount
|
||||
|
||||
```go
|
||||
func NewServiceAccount(service types.ServiceConfig, appName string) *ServiceAccount
|
||||
@@ -827,7 +940,7 @@ func NewServiceAccount(service types.ServiceConfig, appName string) *ServiceAcco
|
||||
NewServiceAccount creates a new ServiceAccount from a compose service.
|
||||
|
||||
<a name="ServiceAccount.Filename"></a>
|
||||
### func \(\*ServiceAccount\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L210>)
|
||||
### func \(\*ServiceAccount\) Filename
|
||||
|
||||
```go
|
||||
func (r *ServiceAccount) Filename() string
|
||||
@@ -836,7 +949,7 @@ func (r *ServiceAccount) Filename() string
|
||||
|
||||
|
||||
<a name="ServiceAccount.Yaml"></a>
|
||||
### func \(\*ServiceAccount\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/rbac.go#L214>)
|
||||
### func \(\*ServiceAccount\) Yaml
|
||||
|
||||
```go
|
||||
func (r *ServiceAccount) Yaml() ([]byte, error)
|
||||
@@ -845,7 +958,7 @@ func (r *ServiceAccount) Yaml() ([]byte, error)
|
||||
|
||||
|
||||
<a name="TLS"></a>
|
||||
## type [TLS](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L23-L26>)
|
||||
## type TLS
|
||||
|
||||
|
||||
|
||||
@@ -857,7 +970,7 @@ type TLS struct {
|
||||
```
|
||||
|
||||
<a name="Value"></a>
|
||||
## type [Value](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L39-L50>)
|
||||
## type Value
|
||||
|
||||
Value will be saved in values.yaml. It contains configuration for all deployment and services.
|
||||
|
||||
@@ -877,7 +990,7 @@ type Value struct {
|
||||
```
|
||||
|
||||
<a name="NewValue"></a>
|
||||
### func [NewValue](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L57>)
|
||||
### func NewValue
|
||||
|
||||
```go
|
||||
func NewValue(service types.ServiceConfig, main ...bool) *Value
|
||||
@@ -888,7 +1001,7 @@ NewValue creates a new Value from a compose service. The value contains the nece
|
||||
If \`main\` is true, the tag will be empty because it will be set in the helm chart appVersion.
|
||||
|
||||
<a name="Value.AddIngress"></a>
|
||||
### func \(\*Value\) [AddIngress](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L90>)
|
||||
### func \(\*Value\) AddIngress
|
||||
|
||||
```go
|
||||
func (v *Value) AddIngress(host, path string)
|
||||
@@ -897,7 +1010,7 @@ func (v *Value) AddIngress(host, path string)
|
||||
|
||||
|
||||
<a name="Value.AddPersistence"></a>
|
||||
### func \(\*Value\) [AddPersistence](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/values.go#L104>)
|
||||
### func \(\*Value\) AddPersistence
|
||||
|
||||
```go
|
||||
func (v *Value) AddPersistence(volumeName string)
|
||||
@@ -906,7 +1019,7 @@ func (v *Value) AddPersistence(volumeName string)
|
||||
AddPersistence adds persistence configuration to the Value.
|
||||
|
||||
<a name="VolumeClaim"></a>
|
||||
## type [VolumeClaim](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/volume.go#L19-L24>)
|
||||
## type VolumeClaim
|
||||
|
||||
VolumeClaim is a kubernetes VolumeClaim. This is a PersistentVolumeClaim.
|
||||
|
||||
@@ -918,7 +1031,7 @@ type VolumeClaim struct {
|
||||
```
|
||||
|
||||
<a name="NewVolumeClaim"></a>
|
||||
### func [NewVolumeClaim](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/volume.go#L27>)
|
||||
### func NewVolumeClaim
|
||||
|
||||
```go
|
||||
func NewVolumeClaim(service types.ServiceConfig, volumeName, appName string) *VolumeClaim
|
||||
@@ -927,7 +1040,7 @@ func NewVolumeClaim(service types.ServiceConfig, volumeName, appName string) *Vo
|
||||
NewVolumeClaim creates a new VolumeClaim from a compose service.
|
||||
|
||||
<a name="VolumeClaim.Filename"></a>
|
||||
### func \(\*VolumeClaim\) [Filename](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/volume.go#L63>)
|
||||
### func \(\*VolumeClaim\) Filename
|
||||
|
||||
```go
|
||||
func (v *VolumeClaim) Filename() string
|
||||
@@ -936,7 +1049,7 @@ func (v *VolumeClaim) Filename() string
|
||||
Filename returns the suggested filename for a VolumeClaim.
|
||||
|
||||
<a name="VolumeClaim.Yaml"></a>
|
||||
### func \(\*VolumeClaim\) [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/volume.go#L68>)
|
||||
### func \(\*VolumeClaim\) Yaml
|
||||
|
||||
```go
|
||||
func (v *VolumeClaim) Yaml() ([]byte, error)
|
||||
@@ -945,7 +1058,7 @@ func (v *VolumeClaim) Yaml() ([]byte, error)
|
||||
Yaml marshals a VolumeClaim into yaml.
|
||||
|
||||
<a name="Yaml"></a>
|
||||
## type [Yaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/types.go#L10-L13>)
|
||||
## type Yaml
|
||||
|
||||
Yaml is a kubernetes object that can be converted to yaml.
|
||||
|
||||
@@ -956,4 +1069,13 @@ type Yaml interface {
|
||||
}
|
||||
```
|
||||
|
||||
<a name="NewIngressRouteFromService"></a>
|
||||
### func NewIngressRouteFromService
|
||||
|
||||
```go
|
||||
func NewIngressRouteFromService(service types.ServiceConfig, Chart *HelmChart) Yaml
|
||||
```
|
||||
|
||||
NewIngressRouteFromService creates a Traefik IngressRoute from the same service config. This is called separately to generate the IngressRoute file in addition to Ingress.
|
||||
|
||||
Generated by [gomarkdoc](<https://github.com/princjef/gomarkdoc>)
|
||||
|
||||
@@ -8,7 +8,7 @@ import "katenary.io/internal/generator/extrafiles"
|
||||
|
||||
Package extrafiles provides function to generate the Chart files that are not objects. Like README.md and notes.txt...
|
||||
|
||||
## func [NotesFile](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/extrafiles/notes.go#L13>)
|
||||
## func NotesFile
|
||||
|
||||
```go
|
||||
func NotesFile(services []string) string
|
||||
@@ -17,7 +17,7 @@ func NotesFile(services []string) string
|
||||
NotesFile returns the content of the note.txt file.
|
||||
|
||||
<a name="ReadMeFile"></a>
|
||||
## func [ReadMeFile](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/extrafiles/readme.go#L46>)
|
||||
## func ReadMeFile
|
||||
|
||||
```go
|
||||
func ReadMeFile(charname, description string, values map[string]any) string
|
||||
|
||||
@@ -12,7 +12,7 @@ A katenary file, named "katenary.yml" or "katenary.yaml", is a file where you ca
|
||||
|
||||
Formely, the file describe the same structure as in labels, and so that can be validated and completed by LSP. It also ease the use of katenary.
|
||||
|
||||
## func [GenerateSchema](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/katenaryfile/main.go#L141>)
|
||||
## func GenerateSchema
|
||||
|
||||
```go
|
||||
func GenerateSchema() string
|
||||
@@ -21,7 +21,7 @@ func GenerateSchema() string
|
||||
GenerateSchema generates the schema for the katenary.yaml file.
|
||||
|
||||
<a name="OverrideWithConfig"></a>
|
||||
## func [OverrideWithConfig](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/katenaryfile/main.go#L48>)
|
||||
## func OverrideWithConfig
|
||||
|
||||
```go
|
||||
func OverrideWithConfig(project *types.Project)
|
||||
@@ -30,7 +30,7 @@ func OverrideWithConfig(project *types.Project)
|
||||
OverrideWithConfig overrides the project with the katenary.yaml file. It will set the labels of the services with the values from the katenary.yaml file. It work in memory, so it will not modify the original project.
|
||||
|
||||
<a name="Service"></a>
|
||||
## type [Service](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/katenaryfile/main.go#L26-L43>)
|
||||
## type Service
|
||||
|
||||
Service is a struct that contains the service configuration for katenary
|
||||
|
||||
@@ -56,7 +56,7 @@ type Service struct {
|
||||
```
|
||||
|
||||
<a name="StringOrMap"></a>
|
||||
## type [StringOrMap](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/katenaryfile/main.go#L23>)
|
||||
## type StringOrMap
|
||||
|
||||
StringOrMap is a struct that can be either a string or a map of strings. It's a helper struct to unmarshal the katenary.yaml file and produce the schema
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ const KatenaryLabelPrefix = "katenary.v3"
|
||||
```
|
||||
|
||||
<a name="GetLabelHelp"></a>
|
||||
## func [GetLabelHelp](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/katenaryLabels.go#L90>)
|
||||
## func GetLabelHelp
|
||||
|
||||
```go
|
||||
func GetLabelHelp(asMarkdown bool) string
|
||||
@@ -26,7 +26,7 @@ func GetLabelHelp(asMarkdown bool) string
|
||||
GetLabelHelp return the help for the labels.
|
||||
|
||||
<a name="GetLabelHelpFor"></a>
|
||||
## func [GetLabelHelpFor](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/katenaryLabels.go#L99>)
|
||||
## func GetLabelHelpFor
|
||||
|
||||
```go
|
||||
func GetLabelHelpFor(labelname string, asMarkdown bool) string
|
||||
@@ -35,7 +35,7 @@ func GetLabelHelpFor(labelname string, asMarkdown bool) string
|
||||
GetLabelHelpFor returns the help for a specific label.
|
||||
|
||||
<a name="GetLabelNames"></a>
|
||||
## func [GetLabelNames](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/katenaryLabels.go#L74>)
|
||||
## func GetLabelNames
|
||||
|
||||
```go
|
||||
func GetLabelNames() []string
|
||||
@@ -44,7 +44,7 @@ func GetLabelNames() []string
|
||||
GetLabelNames returns a sorted list of all katenary label names.
|
||||
|
||||
<a name="Prefix"></a>
|
||||
## func [Prefix](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/katenaryLabels.go#L237>)
|
||||
## func Prefix
|
||||
|
||||
```go
|
||||
func Prefix() string
|
||||
@@ -53,7 +53,7 @@ func Prefix() string
|
||||
|
||||
|
||||
<a name="Help"></a>
|
||||
## type [Help](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/katenaryLabels.go#L66-L71>)
|
||||
## type Help
|
||||
|
||||
Help is the documentation of a label.
|
||||
|
||||
@@ -67,7 +67,7 @@ type Help struct {
|
||||
```
|
||||
|
||||
<a name="Label"></a>
|
||||
## type [Label](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/katenaryLabels.go#L59>)
|
||||
## type Label
|
||||
|
||||
Label is a katenary label to find in compose files.
|
||||
|
||||
@@ -100,7 +100,7 @@ const (
|
||||
```
|
||||
|
||||
<a name="LabelName"></a>
|
||||
### func [LabelName](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/katenaryLabels.go#L61>)
|
||||
### func LabelName
|
||||
|
||||
```go
|
||||
func LabelName(name string) Label
|
||||
|
||||
@@ -8,7 +8,7 @@ import "katenary.io/internal/generator/labels/labelstructs"
|
||||
|
||||
Package labelstructs is a package that contains the structs used to represent the labels in the yaml files.
|
||||
|
||||
## type [ConfigMapFiles](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/configMap.go#L5>)
|
||||
## type ConfigMapFiles
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ type ConfigMapFiles []string
|
||||
```
|
||||
|
||||
<a name="ConfigMapFileFrom"></a>
|
||||
### func [ConfigMapFileFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/configMap.go#L7>)
|
||||
### func ConfigMapFileFrom
|
||||
|
||||
```go
|
||||
func ConfigMapFileFrom(data string) (ConfigMapFiles, error)
|
||||
@@ -26,7 +26,7 @@ func ConfigMapFileFrom(data string) (ConfigMapFiles, error)
|
||||
|
||||
|
||||
<a name="CronJob"></a>
|
||||
## type [CronJob](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/cronJob.go#L5-L10>)
|
||||
## type CronJob
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ type CronJob struct {
|
||||
```
|
||||
|
||||
<a name="CronJobFrom"></a>
|
||||
### func [CronJobFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/cronJob.go#L12>)
|
||||
### func CronJobFrom
|
||||
|
||||
```go
|
||||
func CronJobFrom(data string) (*CronJob, error)
|
||||
@@ -49,7 +49,7 @@ func CronJobFrom(data string) (*CronJob, error)
|
||||
|
||||
|
||||
<a name="Dependency"></a>
|
||||
## type [Dependency](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/dependencies.go#L6-L12>)
|
||||
## type Dependency
|
||||
|
||||
Dependency is a dependency of a chart to other charts.
|
||||
|
||||
@@ -64,7 +64,7 @@ type Dependency struct {
|
||||
```
|
||||
|
||||
<a name="DependenciesFrom"></a>
|
||||
### func [DependenciesFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/dependencies.go#L15>)
|
||||
### func DependenciesFrom
|
||||
|
||||
```go
|
||||
func DependenciesFrom(data string) ([]Dependency, error)
|
||||
@@ -73,7 +73,7 @@ func DependenciesFrom(data string) ([]Dependency, error)
|
||||
DependenciesFrom returns a slice of dependencies from the given string.
|
||||
|
||||
<a name="EnvFrom"></a>
|
||||
## type [EnvFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/envFrom.go#L5>)
|
||||
## type EnvFrom
|
||||
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ type EnvFrom []string
|
||||
```
|
||||
|
||||
<a name="EnvFromFrom"></a>
|
||||
### func [EnvFromFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/envFrom.go#L8>)
|
||||
### func EnvFromFrom
|
||||
|
||||
```go
|
||||
func EnvFromFrom(data string) (EnvFrom, error)
|
||||
@@ -91,7 +91,7 @@ func EnvFromFrom(data string) (EnvFrom, error)
|
||||
EnvFromFrom returns a EnvFrom from the given string.
|
||||
|
||||
<a name="ExchangeVolume"></a>
|
||||
## type [ExchangeVolume](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/exchangeVolume.go#L5-L10>)
|
||||
## type ExchangeVolume
|
||||
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ type ExchangeVolume struct {
|
||||
```
|
||||
|
||||
<a name="NewExchangeVolumes"></a>
|
||||
### func [NewExchangeVolumes](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/exchangeVolume.go#L12>)
|
||||
### func NewExchangeVolumes
|
||||
|
||||
```go
|
||||
func NewExchangeVolumes(data string) ([]*ExchangeVolume, error)
|
||||
@@ -114,7 +114,7 @@ func NewExchangeVolumes(data string) ([]*ExchangeVolume, error)
|
||||
|
||||
|
||||
<a name="HealthCheck"></a>
|
||||
## type [HealthCheck](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/probes.go#L11-L14>)
|
||||
## type HealthCheck
|
||||
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@ type HealthCheck struct {
|
||||
```
|
||||
|
||||
<a name="ProbeFrom"></a>
|
||||
### func [ProbeFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/probes.go#L16>)
|
||||
### func ProbeFrom
|
||||
|
||||
```go
|
||||
func ProbeFrom(data string) (*HealthCheck, error)
|
||||
@@ -135,7 +135,7 @@ func ProbeFrom(data string) (*HealthCheck, error)
|
||||
|
||||
|
||||
<a name="Ingress"></a>
|
||||
## type [Ingress](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/ingress.go#L15-L23>)
|
||||
## type Ingress
|
||||
|
||||
|
||||
|
||||
@@ -145,14 +145,15 @@ type Ingress struct {
|
||||
Annotations map[string]string `yaml:"annotations,omitempty" jsonschema:"nullable" json:"annotations,omitempty"`
|
||||
Hostname string `yaml:"hostname,omitempty" json:"hostname,omitempty"`
|
||||
Path *string `yaml:"path,omitempty" json:"path,omitempty"`
|
||||
Class *string `yaml:"class,omitempty" json:"class,omitempty" jsonschema:"default:-"`
|
||||
Class *string `yaml:"class,omitempty" json:"class,omitempty" jsonschema:"default:traefik"`
|
||||
Type string `yaml:"type,omitempty" json:"type,omitempty"`
|
||||
Enabled bool `yaml:"enabled,omitempty" json:"enabled,omitempty"`
|
||||
TLS *TLS `yaml:"tls,omitempty" json:"tls,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="IngressFrom"></a>
|
||||
### func [IngressFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/ingress.go#L26>)
|
||||
### func IngressFrom
|
||||
|
||||
```go
|
||||
func IngressFrom(data string) (*Ingress, error)
|
||||
@@ -161,7 +162,7 @@ func IngressFrom(data string) (*Ingress, error)
|
||||
IngressFrom creates a new Ingress from a compose service.
|
||||
|
||||
<a name="MapEnv"></a>
|
||||
## type [MapEnv](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/mapenv.go#L5>)
|
||||
## type MapEnv
|
||||
|
||||
|
||||
|
||||
@@ -170,7 +171,7 @@ type MapEnv map[string]string
|
||||
```
|
||||
|
||||
<a name="MapEnvFrom"></a>
|
||||
### func [MapEnvFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/mapenv.go#L8>)
|
||||
### func MapEnvFrom
|
||||
|
||||
```go
|
||||
func MapEnvFrom(data string) (MapEnv, error)
|
||||
@@ -179,7 +180,7 @@ func MapEnvFrom(data string) (MapEnv, error)
|
||||
MapEnvFrom returns a MapEnv from the given string.
|
||||
|
||||
<a name="Ports"></a>
|
||||
## type [Ports](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/ports.go#L5>)
|
||||
## type Ports
|
||||
|
||||
|
||||
|
||||
@@ -188,7 +189,7 @@ type Ports []uint32
|
||||
```
|
||||
|
||||
<a name="PortsFrom"></a>
|
||||
### func [PortsFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/ports.go#L8>)
|
||||
### func PortsFrom
|
||||
|
||||
```go
|
||||
func PortsFrom(data string) (Ports, error)
|
||||
@@ -197,7 +198,7 @@ func PortsFrom(data string) (Ports, error)
|
||||
PortsFrom returns a Ports from the given string.
|
||||
|
||||
<a name="Secrets"></a>
|
||||
## type [Secrets](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/secrets.go#L5>)
|
||||
## type Secrets
|
||||
|
||||
|
||||
|
||||
@@ -206,7 +207,7 @@ type Secrets []string
|
||||
```
|
||||
|
||||
<a name="SecretsFrom"></a>
|
||||
### func [SecretsFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/secrets.go#L7>)
|
||||
### func SecretsFrom
|
||||
|
||||
```go
|
||||
func SecretsFrom(data string) (Secrets, error)
|
||||
@@ -215,7 +216,7 @@ func SecretsFrom(data string) (Secrets, error)
|
||||
|
||||
|
||||
<a name="TLS"></a>
|
||||
## type [TLS](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/ingress.go#L11-L13>)
|
||||
## type TLS
|
||||
|
||||
|
||||
|
||||
@@ -226,7 +227,7 @@ type TLS struct {
|
||||
```
|
||||
|
||||
<a name="ValueFrom"></a>
|
||||
## type [ValueFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/valueFrom.go#L5>)
|
||||
## type ValueFrom
|
||||
|
||||
|
||||
|
||||
@@ -235,7 +236,7 @@ type ValueFrom map[string]string
|
||||
```
|
||||
|
||||
<a name="GetValueFrom"></a>
|
||||
### func [GetValueFrom](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/generator/labels/labelstructs/valueFrom.go#L7>)
|
||||
### func GetValueFrom
|
||||
|
||||
```go
|
||||
func GetValueFrom(data string) (*ValueFrom, error)
|
||||
|
||||
@@ -8,7 +8,21 @@ import "katenary.io/internal/logger"
|
||||
|
||||
Package logger provides simple logging functions with icons and colors.
|
||||
|
||||
## func [Failure](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L75>)
|
||||
## Constants
|
||||
|
||||
<a name="ColorGreen"></a>
|
||||
|
||||
```go
|
||||
const (
|
||||
ColorGreen = "\033[38;5;34m"
|
||||
ColorRed = "\033[38;5;196m"
|
||||
ColorOrange = "\033[38;5;214m"
|
||||
ColorWarning = "\033[38;5;214m"
|
||||
)
|
||||
```
|
||||
|
||||
<a name="Failure"></a>
|
||||
## func Failure
|
||||
|
||||
```go
|
||||
func Failure(msg ...any)
|
||||
@@ -17,7 +31,7 @@ func Failure(msg ...any)
|
||||
Failure prints a failure message.
|
||||
|
||||
<a name="Failuref"></a>
|
||||
## func [Failuref](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L81>)
|
||||
## func Failuref
|
||||
|
||||
```go
|
||||
func Failuref(format string, msg ...any)
|
||||
@@ -26,7 +40,7 @@ func Failuref(format string, msg ...any)
|
||||
Failuref prints a formatted failure message.
|
||||
|
||||
<a name="Fatal"></a>
|
||||
## func [Fatal](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L108>)
|
||||
## func Fatal
|
||||
|
||||
```go
|
||||
func Fatal(msg ...any)
|
||||
@@ -35,7 +49,7 @@ func Fatal(msg ...any)
|
||||
Fatal prints a fatal error message and exits with code 1.
|
||||
|
||||
<a name="Fatalf"></a>
|
||||
## func [Fatalf](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L114>)
|
||||
## func Fatalf
|
||||
|
||||
```go
|
||||
func Fatalf(format string, msg ...any)
|
||||
@@ -43,8 +57,17 @@ func Fatalf(format string, msg ...any)
|
||||
|
||||
Fatalf prints a fatal error message with formatting and exits with code 1.
|
||||
|
||||
<a name="FlushWarnings"></a>
|
||||
## func FlushWarnings
|
||||
|
||||
```go
|
||||
func FlushWarnings()
|
||||
```
|
||||
|
||||
FlushWarnings prints all collected warnings at the end of the conversion.
|
||||
|
||||
<a name="Info"></a>
|
||||
## func [Info](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L41>)
|
||||
## func Info
|
||||
|
||||
```go
|
||||
func Info(msg ...any)
|
||||
@@ -53,7 +76,7 @@ func Info(msg ...any)
|
||||
Info prints an informational message.
|
||||
|
||||
<a name="Infof"></a>
|
||||
## func [Infof](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L46>)
|
||||
## func Infof
|
||||
|
||||
```go
|
||||
func Infof(format string, msg ...any)
|
||||
@@ -62,7 +85,7 @@ func Infof(format string, msg ...any)
|
||||
Infof prints a formatted informational message.
|
||||
|
||||
<a name="Log"></a>
|
||||
## func [Log](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L87>)
|
||||
## func Log
|
||||
|
||||
```go
|
||||
func Log(icon Icon, msg ...any)
|
||||
@@ -71,7 +94,7 @@ func Log(icon Icon, msg ...any)
|
||||
Log prints a message with a custom icon.
|
||||
|
||||
<a name="Logf"></a>
|
||||
## func [Logf](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L92>)
|
||||
## func Logf
|
||||
|
||||
```go
|
||||
func Logf(icon Icon, format string, msg ...any)
|
||||
@@ -80,7 +103,7 @@ func Logf(icon Icon, format string, msg ...any)
|
||||
Logf prints a formatted message with a custom icon.
|
||||
|
||||
<a name="Print"></a>
|
||||
## func [Print](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L31>)
|
||||
## func Print
|
||||
|
||||
```go
|
||||
func Print(msg ...any)
|
||||
@@ -89,7 +112,7 @@ func Print(msg ...any)
|
||||
Print prints a message without icon.
|
||||
|
||||
<a name="Printf"></a>
|
||||
## func [Printf](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L36>)
|
||||
## func Printf
|
||||
|
||||
```go
|
||||
func Printf(format string, msg ...any)
|
||||
@@ -98,7 +121,7 @@ func Printf(format string, msg ...any)
|
||||
Printf prints a formatted message without icon.
|
||||
|
||||
<a name="Success"></a>
|
||||
## func [Success](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L63>)
|
||||
## func Success
|
||||
|
||||
```go
|
||||
func Success(msg ...any)
|
||||
@@ -107,7 +130,7 @@ func Success(msg ...any)
|
||||
Success prints a success message.
|
||||
|
||||
<a name="Successf"></a>
|
||||
## func [Successf](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L69>)
|
||||
## func Successf
|
||||
|
||||
```go
|
||||
func Successf(format string, msg ...any)
|
||||
@@ -116,7 +139,7 @@ func Successf(format string, msg ...any)
|
||||
Successf prints a formatted success message.
|
||||
|
||||
<a name="Warn"></a>
|
||||
## func [Warn](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L51>)
|
||||
## func Warn
|
||||
|
||||
```go
|
||||
func Warn(msg ...any)
|
||||
@@ -125,7 +148,7 @@ func Warn(msg ...any)
|
||||
Warn prints a warning message.
|
||||
|
||||
<a name="Warnf"></a>
|
||||
## func [Warnf](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L57>)
|
||||
## func Warnf
|
||||
|
||||
```go
|
||||
func Warnf(format string, msg ...any)
|
||||
@@ -134,7 +157,7 @@ func Warnf(format string, msg ...any)
|
||||
Warnf prints a formatted warning message.
|
||||
|
||||
<a name="Icon"></a>
|
||||
## type [Icon](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/logger/logger.go#L10>)
|
||||
## type Icon
|
||||
|
||||
Icon is a unicode icon
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import "katenary.io/internal/parser"
|
||||
|
||||
Package parser is a wrapper around compose\-go to parse compose files.
|
||||
|
||||
## func [Parse](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/parser/main.go#L30>)
|
||||
## func Parse
|
||||
|
||||
```go
|
||||
func Parse(profiles []string, envFiles []string, dockerComposeFile ...string) (*types.Project, error)
|
||||
|
||||
@@ -17,7 +17,7 @@ const DirectoryPermission = 0o755
|
||||
```
|
||||
|
||||
<a name="AsResourceName"></a>
|
||||
## func [AsResourceName](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L197>)
|
||||
## func AsResourceName
|
||||
|
||||
```go
|
||||
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.
|
||||
|
||||
<a name="Confirm"></a>
|
||||
## func [Confirm](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L165>)
|
||||
## func Confirm
|
||||
|
||||
```go
|
||||
func Confirm(question string, icon ...logger.Icon) bool
|
||||
@@ -35,7 +35,7 @@ func Confirm(question string, icon ...logger.Icon) bool
|
||||
Confirm asks a question and returns true if the answer is y.
|
||||
|
||||
<a name="CountStartingSpaces"></a>
|
||||
## func [CountStartingSpaces](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L41>)
|
||||
## func CountStartingSpaces
|
||||
|
||||
```go
|
||||
func CountStartingSpaces(line string) int
|
||||
@@ -44,7 +44,7 @@ func CountStartingSpaces(line string) int
|
||||
CountStartingSpaces counts the number of spaces at the beginning of a string.
|
||||
|
||||
<a name="EncodeBasicYaml"></a>
|
||||
## func [EncodeBasicYaml](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L179>)
|
||||
## func EncodeBasicYaml
|
||||
|
||||
```go
|
||||
func EncodeBasicYaml(data any) ([]byte, error)
|
||||
@@ -53,7 +53,7 @@ func EncodeBasicYaml(data any) ([]byte, error)
|
||||
EncodeBasicYaml encodes a basic yaml from an interface.
|
||||
|
||||
<a name="FixedResourceName"></a>
|
||||
## func [FixedResourceName](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L191>)
|
||||
## func FixedResourceName
|
||||
|
||||
```go
|
||||
func FixedResourceName(name string) string
|
||||
@@ -62,7 +62,7 @@ func FixedResourceName(name string) string
|
||||
FixedResourceName returns a resource name without underscores to respect the kubernetes naming convention.
|
||||
|
||||
<a name="GetContainerByName"></a>
|
||||
## func [GetContainerByName](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L87>)
|
||||
## func GetContainerByName
|
||||
|
||||
```go
|
||||
func GetContainerByName(name string, containers []corev1.Container) (*corev1.Container, int)
|
||||
@@ -71,7 +71,7 @@ func GetContainerByName(name string, containers []corev1.Container) (*corev1.Con
|
||||
GetContainerByName returns a container by name and its index in the array. It returns nil, \-1 if not found.
|
||||
|
||||
<a name="GetKind"></a>
|
||||
## func [GetKind](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L54>)
|
||||
## func GetKind
|
||||
|
||||
```go
|
||||
func GetKind(path string) (kind string)
|
||||
@@ -80,7 +80,7 @@ func GetKind(path string) (kind string)
|
||||
GetKind returns the kind of the resource from the file path.
|
||||
|
||||
<a name="GetServiceNameByPort"></a>
|
||||
## func [GetServiceNameByPort](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L77>)
|
||||
## func GetServiceNameByPort
|
||||
|
||||
```go
|
||||
func GetServiceNameByPort(port int) string
|
||||
@@ -89,7 +89,7 @@ func GetServiceNameByPort(port int) string
|
||||
GetServiceNameByPort returns the service name for a port. It the service name is not found, it returns an empty string.
|
||||
|
||||
<a name="GetValuesFromLabel"></a>
|
||||
## func [GetValuesFromLabel](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L129>)
|
||||
## func GetValuesFromLabel
|
||||
|
||||
```go
|
||||
func GetValuesFromLabel(service types.ServiceConfig, LabelValues string) map[string]*EnvConfig
|
||||
@@ -98,7 +98,7 @@ func GetValuesFromLabel(service types.ServiceConfig, LabelValues string) map[str
|
||||
GetValuesFromLabel returns a map of values from a label.
|
||||
|
||||
<a name="HashComposefiles"></a>
|
||||
## func [HashComposefiles](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/hash.go#L12>)
|
||||
## func HashComposefiles
|
||||
|
||||
```go
|
||||
func HashComposefiles(files []string) (string, error)
|
||||
@@ -107,7 +107,7 @@ func HashComposefiles(files []string) (string, error)
|
||||
HashComposefiles returns a hash of the compose files.
|
||||
|
||||
<a name="Int32Ptr"></a>
|
||||
## func [Int32Ptr](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L35>)
|
||||
## func Int32Ptr
|
||||
|
||||
```go
|
||||
func Int32Ptr(i int32) *int32
|
||||
@@ -116,7 +116,7 @@ func Int32Ptr(i int32) *int32
|
||||
Int32Ptr returns a pointer to an int32.
|
||||
|
||||
<a name="PathToName"></a>
|
||||
## func [PathToName](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L106>)
|
||||
## func PathToName
|
||||
|
||||
```go
|
||||
func PathToName(path string) string
|
||||
@@ -125,7 +125,7 @@ func PathToName(path string) string
|
||||
PathToName converts a path to a kubernetes complient name.
|
||||
|
||||
<a name="StrPtr"></a>
|
||||
## func [StrPtr](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L38>)
|
||||
## func StrPtr
|
||||
|
||||
```go
|
||||
func StrPtr(s string) *string
|
||||
@@ -134,7 +134,7 @@ func StrPtr(s string) *string
|
||||
StrPtr returns a pointer to a string.
|
||||
|
||||
<a name="TplName"></a>
|
||||
## func [TplName](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L22>)
|
||||
## func TplName
|
||||
|
||||
```go
|
||||
func TplName(serviceName, appname string, suffix ...string) string
|
||||
@@ -143,7 +143,7 @@ func TplName(serviceName, appname string, suffix ...string) string
|
||||
TplName returns the name of the kubernetes resource as a template string. It is used in the templates and defined in \_helper.tpl file.
|
||||
|
||||
<a name="TplValue"></a>
|
||||
## func [TplValue](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L97>)
|
||||
## func TplValue
|
||||
|
||||
```go
|
||||
func TplValue(serviceName, variable string, pipes ...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.
|
||||
|
||||
<a name="WordWrap"></a>
|
||||
## func [WordWrap](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L160>)
|
||||
## func WordWrap
|
||||
|
||||
```go
|
||||
func WordWrap(text string, lineWidth int) string
|
||||
@@ -161,7 +161,7 @@ func WordWrap(text string, lineWidth int) string
|
||||
WordWrap wraps a string to a given line width. Warning: it may break the string. You need to check the result.
|
||||
|
||||
<a name="Wrap"></a>
|
||||
## func [Wrap](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L71>)
|
||||
## func Wrap
|
||||
|
||||
```go
|
||||
func Wrap(src, above, below string) string
|
||||
@@ -170,7 +170,7 @@ func Wrap(src, above, below string) string
|
||||
Wrap wraps a string with a string above and below. It will respect the indentation of the src string.
|
||||
|
||||
<a name="EnvConfig"></a>
|
||||
## type [EnvConfig](<https://repo.katenary.io/Katenary/katenary/blob/feature/better-depends-on/internal/utils/utils.go#L123-L126>)
|
||||
## type EnvConfig
|
||||
|
||||
EnvConfig is a struct to hold the description of an environment variable.
|
||||
|
||||
|
||||
@@ -229,10 +229,11 @@ func (chart *HelmChart) generateDeployment(service types.ServiceConfig, deployme
|
||||
// get the same-pod label if exists, add it to the list.
|
||||
// We later will copy some parts to the target deployment and remove this one.
|
||||
if samePod, ok := service.Labels[labels.LabelSamePod]; ok && samePod != "" {
|
||||
podToMerge[samePod] = &service
|
||||
podToMerge[service.Name] = &service
|
||||
}
|
||||
|
||||
// create the needed service for the container port
|
||||
// NOTE: ports from same-pod services are now added in generator.go after all services are processed
|
||||
if len(service.Ports) > 0 {
|
||||
s := NewService(service, appName)
|
||||
services[service.Name] = s
|
||||
@@ -247,6 +248,15 @@ func (chart *HelmChart) generateDeployment(service types.ServiceConfig, deployme
|
||||
}
|
||||
}
|
||||
|
||||
// create IngressRoute (Traefik CRD) if specified
|
||||
if ingressRoute := d.AddIngressRoute(service, appName); ingressRoute != nil {
|
||||
y, _ := ingressRoute.Yaml()
|
||||
chart.Templates[ingressRoute.Filename()] = &ChartTemplate{
|
||||
Content: y,
|
||||
Servicename: service.Name,
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -22,12 +22,15 @@ import (
|
||||
"github.com/compose-spec/compose-go/v2/types"
|
||||
)
|
||||
|
||||
const ingressClassHelp = `# Default value for ingress.class annotation
|
||||
# class: "-"
|
||||
const ingressClassHelp = `# Default value for ingress.class
|
||||
# class: "traefik"
|
||||
# If the value is "-", controller will not set ingressClassName
|
||||
# If the value is "", Ingress will be set to an empty string, so
|
||||
# controller will use the default value for ingressClass
|
||||
# If the value is specified, controller will set the named class e.g. "nginx"
|
||||
# If the value is specified, controller will set the named class e.g. "traefik"
|
||||
#
|
||||
# Ingress type: "ingress" (default) or "ingressroute" (Traefik CRD)
|
||||
# type: "ingress"
|
||||
`
|
||||
|
||||
const storageClassHelp = `# Storage class to use for PVCs
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"katenary.io/internal/logger"
|
||||
"katenary.io/internal/utils"
|
||||
|
||||
"github.com/mattn/go-shellwords"
|
||||
"github.com/compose-spec/compose-go/v2/types"
|
||||
batchv1 "k8s.io/api/batch/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
@@ -53,8 +54,9 @@ func NewCronJob(service types.ServiceConfig, chart *HelmChart, appName string) (
|
||||
}
|
||||
|
||||
if strings.Contains(image, ":") {
|
||||
image = strings.Split(service.Image, ":")[0]
|
||||
tag = strings.Split(service.Image, ":")[1]
|
||||
parts := strings.Split(image, ":")
|
||||
image = parts[0]
|
||||
tag = parts[1]
|
||||
}
|
||||
|
||||
chart.Values[service.Name].(*Value).CronJob.Repository = &RepositoryValue{
|
||||
@@ -62,6 +64,19 @@ func NewCronJob(service types.ServiceConfig, chart *HelmChart, appName string) (
|
||||
Tag: tag,
|
||||
}
|
||||
|
||||
command := mapping.Command
|
||||
var commandParts []string
|
||||
if !strings.HasPrefix(command, "sh -c") && !strings.HasPrefix(command, "/bin/sh") {
|
||||
commandParts = []string{"sh", "-c", command}
|
||||
} else {
|
||||
parts, err := shellwords.Parse(command)
|
||||
if err != nil {
|
||||
commandParts = []string{"sh", "-c", command}
|
||||
} else {
|
||||
commandParts = parts
|
||||
}
|
||||
}
|
||||
|
||||
cronjob := &CronJob{
|
||||
CronJob: &batchv1.CronJob{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
@@ -79,13 +94,12 @@ func NewCronJob(service types.ServiceConfig, chart *HelmChart, appName string) (
|
||||
Spec: batchv1.JobSpec{
|
||||
Template: corev1.PodTemplateSpec{
|
||||
Spec: corev1.PodSpec{
|
||||
RestartPolicy: corev1.RestartPolicyOnFailure,
|
||||
Containers: []corev1.Container{
|
||||
{
|
||||
Name: "cronjob",
|
||||
Image: "{{ .Values." + service.Name + ".cronjob.repository.image }}:{{ default .Values." + service.Name + ".cronjob.repository.tag \"latest\" }}",
|
||||
Args: []string{
|
||||
mapping.Command,
|
||||
},
|
||||
Args: commandParts,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -2,7 +2,6 @@ package generator
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
v1 "k8s.io/api/apps/v1"
|
||||
@@ -38,9 +37,13 @@ services:
|
||||
if cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Image != "alpine:latest" {
|
||||
t.Errorf("Expected image to be alpine, got %s", cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Image)
|
||||
}
|
||||
combinedCommand := strings.Join(cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Args, " ")
|
||||
if combinedCommand != "echo hello" {
|
||||
t.Errorf("Expected command to be sh -c echo hello, got %s", combinedCommand)
|
||||
if len(cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Args) != 3 {
|
||||
t.Errorf("Expected 3 args, got %d", len(cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Args))
|
||||
}
|
||||
if cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Args[0] != "sh" ||
|
||||
cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Args[1] != "-c" ||
|
||||
cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Args[2] != "echo hello" {
|
||||
t.Errorf("Expected args [sh -c echo hello], got %v", cronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Args)
|
||||
}
|
||||
if cronJob.Spec.Schedule != "*/1 * * * *" {
|
||||
t.Errorf("Expected schedule to be */1 * * * *, got %s", cronJob.Spec.Schedule)
|
||||
|
||||
@@ -196,6 +196,11 @@ func (d *Deployment) AddIngress(service types.ServiceConfig, appName string) *In
|
||||
return NewIngress(service, d.chart)
|
||||
}
|
||||
|
||||
// AddIngressRoute adds an IngressRoute to the deployment if type is "ingressroute".
|
||||
func (d *Deployment) AddIngressRoute(service types.ServiceConfig, appName string) Yaml {
|
||||
return NewIngressRouteFromService(service, d.chart)
|
||||
}
|
||||
|
||||
// AddVolumes adds a volume to the deployment. It does not create the PVC, it only adds the volumes to the deployment.
|
||||
// If the volume is a bind volume it will warn the user that it is not supported yet.
|
||||
func (d *Deployment) AddVolumes(service types.ServiceConfig, appName string) {
|
||||
|
||||
@@ -79,6 +79,22 @@ func Generate(project *types.Project) (*HelmChart, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// second pass, create services for services with ports (now podToMerge is fully populated)
|
||||
for _, service := range project.Services {
|
||||
if len(service.Ports) > 0 {
|
||||
s := NewService(service, appName)
|
||||
// add ports from same-pod services that target this service
|
||||
for _, mergedSvc := range podToMerge {
|
||||
if mergedSvc.Labels[labels.LabelSamePod] == service.Name {
|
||||
for _, p := range mergedSvc.Ports {
|
||||
s.AddPort(p)
|
||||
}
|
||||
}
|
||||
}
|
||||
services[service.Name] = s
|
||||
}
|
||||
}
|
||||
|
||||
// now we have all deployments, we can create PVC if needed (it's separated from
|
||||
// the above loop because we need all deployments to not duplicate PVC for "same-pod" services)
|
||||
// bind static volumes
|
||||
@@ -199,12 +215,9 @@ func Generate(project *types.Project) (*HelmChart, error) {
|
||||
|
||||
// generate all services
|
||||
for _, s := range services {
|
||||
// add the service ports to the target service if it's a "same-pod" service
|
||||
if samePod, ok := podToMerge[s.service.Name]; ok {
|
||||
// get the target service
|
||||
target := services[samePod.Name]
|
||||
// merge the services
|
||||
s.Spec.Ports = append(s.Spec.Ports, target.Spec.Ports...)
|
||||
// skip same-pod services - they are merged into target deployments
|
||||
if _, isSamePod := podToMerge[s.service.Name]; isSamePod {
|
||||
continue
|
||||
}
|
||||
y, _ := s.Yaml()
|
||||
chart.Templates[s.Filename()] = &ChartTemplate{
|
||||
@@ -213,12 +226,11 @@ func Generate(project *types.Project) (*HelmChart, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// drop all "same-pod" services
|
||||
for _, s := range podToMerge {
|
||||
// get the target service
|
||||
target := services[s.Name]
|
||||
if target != nil {
|
||||
delete(chart.Templates, target.Filename())
|
||||
// drop all "same-pod" service templates (they are merged into target deployments)
|
||||
for name := range podToMerge {
|
||||
// find the service for this same-pod service
|
||||
if svc, ok := services[name]; ok {
|
||||
delete(chart.Templates, svc.Filename())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,6 @@
|
||||
|
||||
{{- define "__APP__.selectorLabels" -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{ printf "__PREFIX__/name: %s" $name }}
|
||||
{{ printf "__PREFIX__/instance: %s" .Release.Name }}
|
||||
{{ printf "app.kubernetes.io/name: %s" $name }}
|
||||
{{ printf "app.kubernetes.io/instance: %s" .Release.Name }}
|
||||
{{- end -}}
|
||||
|
||||
@@ -21,7 +21,7 @@ type Ingress struct {
|
||||
appName string `yaml:"-"`
|
||||
}
|
||||
|
||||
// NewIngress creates a new Ingress from a compose service.
|
||||
// NewIngress creates a new standard Kubernetes Ingress from a compose service.
|
||||
func NewIngress(service types.ServiceConfig, Chart *HelmChart) *Ingress {
|
||||
appName := Chart.Name
|
||||
|
||||
@@ -42,13 +42,7 @@ func NewIngress(service types.ServiceConfig, Chart *HelmChart) *Ingress {
|
||||
mapping.Hostname = service.Name + ".tld"
|
||||
}
|
||||
|
||||
// create the ingress
|
||||
pathType := networkv1.PathTypeImplementationSpecific
|
||||
|
||||
// fix the service name, and create the full name from variable name
|
||||
// which is injected in the YAML() method
|
||||
serviceName := strings.ReplaceAll(service.Name, "_", "-")
|
||||
fullName := `{{ $fullname }}-` + serviceName
|
||||
|
||||
// Add the ingress host to the values.yaml
|
||||
if Chart.Values[service.Name] == nil {
|
||||
@@ -60,11 +54,44 @@ func NewIngress(service types.ServiceConfig, Chart *HelmChart) *Ingress {
|
||||
Path: *mapping.Path,
|
||||
Host: mapping.Hostname,
|
||||
Class: *mapping.Class,
|
||||
Type: mapping.Type,
|
||||
IngressRouteEnabled: mapping.Type == "ingressroute" && mapping.Enabled,
|
||||
Annotations: mapping.Annotations,
|
||||
TLS: TLS{Enabled: mapping.TLS.Enabled},
|
||||
}
|
||||
|
||||
// ingressClassName := `{{ .Values.` + service.Name + `.ingress.class }}`
|
||||
return newStandardIngress(service, mapping, serviceName, appName)
|
||||
}
|
||||
|
||||
// NewIngressRouteFromService creates a Traefik IngressRoute from the same service config.
|
||||
// This is called separately to generate the IngressRoute file in addition to Ingress.
|
||||
func NewIngressRouteFromService(service types.ServiceConfig, Chart *HelmChart) Yaml {
|
||||
appName := Chart.Name
|
||||
|
||||
if service.Labels == nil {
|
||||
return nil
|
||||
}
|
||||
var label string
|
||||
var ok bool
|
||||
if label, ok = service.Labels[labels.LabelIngress]; !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
mapping, err := labelstructs.IngressFrom(label)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
serviceName := strings.ReplaceAll(service.Name, "_", "-")
|
||||
return NewIngressRoute(service, Chart, mapping, serviceName, appName)
|
||||
}
|
||||
|
||||
// newStandardIngress creates a standard Kubernetes Ingress
|
||||
func newStandardIngress(service types.ServiceConfig, mapping *labelstructs.Ingress, serviceName, appName string) *Ingress {
|
||||
pathType := networkv1.PathTypeImplementationSpecific
|
||||
|
||||
fullName := `{{ $fullname }}-` + serviceName
|
||||
|
||||
ingressClassName := utils.TplValue(service.Name, "ingress.class")
|
||||
|
||||
servicePortName := utils.GetServiceNameByPort(int(*mapping.Port))
|
||||
@@ -174,16 +201,13 @@ func (ingress *Ingress) Yaml() ([]byte, error) {
|
||||
`{{- $tlsname := printf "%s-%s-tls" $fullname "` + ingress.service.Name + `" -}}`,
|
||||
}
|
||||
for _, line := range lines {
|
||||
if strings.Contains(line, "loadBalancer: ") {
|
||||
continue
|
||||
}
|
||||
|
||||
if strings.Contains(line, "labels:") {
|
||||
// add annotations above labels from values.yaml
|
||||
indent := strings.Repeat(" ", utils.CountStartingSpaces(line))
|
||||
content := `` +
|
||||
` {{- if .Values.` + serviceName + `.ingress.annotations -}}` + "\n" +
|
||||
` {{- toYaml .Values.` + serviceName + `.ingress.annotations | nindent 4 }}` + "\n" +
|
||||
` {{- end }}` + "\n" +
|
||||
indent + `{{- if .Values.` + serviceName + `.ingress.annotations -}}` + "\n" +
|
||||
indent + ` {{- toYaml .Values.` + serviceName + `.ingress.annotations | nindent __indent__ }}` + "\n" +
|
||||
indent + ` {{- end }}` + "\n" +
|
||||
line
|
||||
|
||||
out = append(out, content)
|
||||
|
||||
@@ -98,7 +98,7 @@ services:
|
||||
%s/ingress: |-
|
||||
hostname: my.test.tld
|
||||
port: 80
|
||||
`
|
||||
`
|
||||
composeFile = fmt.Sprintf(composeFile, labels.KatenaryLabelPrefix)
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
186
internal/generator/ingressroute.go
Normal file
186
internal/generator/ingressroute.go
Normal file
@@ -0,0 +1,186 @@
|
||||
package generator
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"sigs.k8s.io/yaml"
|
||||
|
||||
"katenary.io/internal/generator/labels/labelstructs"
|
||||
"katenary.io/internal/utils"
|
||||
|
||||
"github.com/compose-spec/compose-go/v2/types"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
var _ Yaml = (*IngressRoute)(nil)
|
||||
|
||||
// IngressRoute represents a Traefik IngressRoute CRD
|
||||
type IngressRoute struct {
|
||||
metav1.TypeMeta `yaml:",inline"`
|
||||
metav1.ObjectMeta `yaml:"metadata"`
|
||||
Spec IngressRouteSpec `yaml:"spec"`
|
||||
service *types.ServiceConfig `yaml:"-"`
|
||||
appName string `yaml:"-"`
|
||||
serviceName string `yaml:"-"`
|
||||
}
|
||||
|
||||
// IngressRouteSpec defines the spec for Traefik IngressRoute
|
||||
type IngressRouteSpec struct {
|
||||
EntryPoints []string `json:"entryPoints,omitempty" yaml:"entryPoints,omitempty"`
|
||||
Routes []IngressRouteRoute `json:"routes" yaml:"routes"`
|
||||
TLS *IngressRouteTLS `json:"tls,omitempty" yaml:"tls,omitempty"`
|
||||
}
|
||||
|
||||
// IngressRouteRoute defines a route in the IngressRoute
|
||||
type IngressRouteRoute struct {
|
||||
Match string `json:"match" yaml:"match"`
|
||||
Kind string `json:"kind" yaml:"kind"`
|
||||
Services []IngressRouteService `json:"services" yaml:"services"`
|
||||
}
|
||||
|
||||
// IngressRouteService defines a service backend in IngressRoute
|
||||
type IngressRouteService struct {
|
||||
Name string `json:"name" yaml:"name"`
|
||||
Port int `json:"port" yaml:"port"`
|
||||
}
|
||||
|
||||
// IngressRouteTLS defines TLS configuration for IngressRoute
|
||||
type IngressRouteTLS struct {
|
||||
SecretName string `json:"secretName,omitempty" yaml:"secretName,omitempty"`
|
||||
Domains []IngressRouteTLSDomain `json:"domains,omitempty" yaml:"domains,omitempty"`
|
||||
}
|
||||
|
||||
// IngressRouteTLSDomain defines a domain for TLS
|
||||
type IngressRouteTLSDomain struct {
|
||||
Main string `json:"main" yaml:"main"`
|
||||
}
|
||||
|
||||
// NewIngressRoute creates a new Traefik IngressRoute from a compose service.
|
||||
func NewIngressRoute(service types.ServiceConfig, Chart *HelmChart, mapping *labelstructs.Ingress, serviceName, appName string) *IngressRoute {
|
||||
fullName := `{{ $fullname }}-` + serviceName
|
||||
|
||||
// Build the route match rule
|
||||
match := `Host("{{ tpl .Values.` + serviceName + `.ingress.host . }}")`
|
||||
path := utils.TplValue(serviceName, "ingress.path")
|
||||
if path != "/" && path != "" {
|
||||
match += ` && PathPrefix("` + path + `")`
|
||||
}
|
||||
|
||||
ir := &IngressRoute{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
Kind: "IngressRoute",
|
||||
APIVersion: "traefik.io/v1alpha1",
|
||||
},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: fullName,
|
||||
Labels: GetLabels(serviceName, appName),
|
||||
Annotations: Annotations,
|
||||
},
|
||||
Spec: IngressRouteSpec{
|
||||
EntryPoints: []string{"web", "websecure"},
|
||||
Routes: []IngressRouteRoute{
|
||||
{
|
||||
Match: match,
|
||||
Kind: "Rule",
|
||||
Services: []IngressRouteService{
|
||||
{
|
||||
Name: fullName,
|
||||
Port: int(*mapping.Port),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
service: &service,
|
||||
appName: appName,
|
||||
serviceName: serviceName,
|
||||
}
|
||||
|
||||
// Add TLS configuration if enabled
|
||||
if mapping.TLS != nil && mapping.TLS.Enabled {
|
||||
tlsSecretName := `{{ .Values.` + serviceName + `.ingress.tls.secretName | default $tlsname }}`
|
||||
ir.Spec.TLS = &IngressRouteTLS{
|
||||
SecretName: tlsSecretName,
|
||||
Domains: []IngressRouteTLSDomain{
|
||||
{
|
||||
Main: `{{ tpl .Values.` + serviceName + `.ingress.host . }}`,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return ir
|
||||
}
|
||||
|
||||
func (ir *IngressRoute) Filename() string {
|
||||
return ir.serviceName + ".ingressroute.yaml"
|
||||
}
|
||||
|
||||
func (ir *IngressRoute) Yaml() ([]byte, error) {
|
||||
var ret []byte
|
||||
var err error
|
||||
|
||||
// Manually construct YAML - sigs.k8s.io/yaml doesn't handle metav1.ObjectMeta
|
||||
// with yaml:"metadata" correctly unless embedded in a standard K8s type with JSON tags.
|
||||
// We build the YAML as a string to ensure proper nesting.
|
||||
|
||||
// Build metadata block
|
||||
metadata, err := yaml.Marshal(map[string]interface{}{
|
||||
"name": ir.Name,
|
||||
"labels": ir.Labels,
|
||||
"annotations": ir.Annotations,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Build spec block
|
||||
spec, err := yaml.Marshal(ir.Spec)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Build final YAML with proper structure
|
||||
ret = []byte("apiVersion: " + ir.APIVersion + "\n")
|
||||
ret = append(ret, "kind: "+ir.Kind+"\n"...)
|
||||
ret = append(ret, "metadata:\n"...)
|
||||
// Indent metadata content by 2 spaces
|
||||
for _, line := range strings.Split(strings.TrimRight(string(metadata), "\n"), "\n") {
|
||||
ret = append(ret, " "+line+"\n"...)
|
||||
}
|
||||
ret = append(ret, "spec:\n"...)
|
||||
// Indent spec content by 2 spaces
|
||||
for _, line := range strings.Split(strings.TrimRight(string(spec), "\n"), "\n") {
|
||||
ret = append(ret, " "+line+"\n"...)
|
||||
}
|
||||
|
||||
ret = UnWrapTPL(ret)
|
||||
|
||||
lines := strings.Split(string(ret), "\n")
|
||||
|
||||
out := []string{
|
||||
`{{- if .Values.` + ir.serviceName + `.ingress.ingressRouteEnabled -}}`,
|
||||
`{{- $fullname := include "` + ir.appName + `.fullname" . -}}`,
|
||||
`{{- $tlsname := printf "%s-%s-tls" $fullname "` + ir.serviceName + `" -}}`,
|
||||
}
|
||||
|
||||
for _, line := range lines {
|
||||
if strings.Contains(line, "labels:") {
|
||||
// add annotations above labels from values.yaml (inside metadata block)
|
||||
indent := strings.Repeat(" ", utils.CountStartingSpaces(line))
|
||||
content := `` +
|
||||
indent + `{{- if .Values.` + ir.serviceName + `.ingress.annotations -}}` + "\n" +
|
||||
indent + ` {{- toYaml .Values.` + ir.serviceName + `.ingress.annotations | nindent __indent__ }}` + "\n" +
|
||||
indent + ` {{- end }}` + "\n" +
|
||||
line
|
||||
|
||||
out = append(out, content)
|
||||
} else {
|
||||
out = append(out, line)
|
||||
}
|
||||
}
|
||||
out = append(out, `{{- end -}}`)
|
||||
ret = []byte(strings.Join(out, "\n"))
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
240
internal/generator/ingressroute_test.go
Normal file
240
internal/generator/ingressroute_test.go
Normal file
@@ -0,0 +1,240 @@
|
||||
package generator
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"katenary.io/internal/generator/labels"
|
||||
)
|
||||
|
||||
func TestIngressRoute(t *testing.T) {
|
||||
composeFile := `
|
||||
services:
|
||||
web:
|
||||
image: nginx:1.29
|
||||
ports:
|
||||
- 80:80
|
||||
labels:
|
||||
%s/ingress: |-
|
||||
hostname: my.test.tld
|
||||
port: 80
|
||||
type: ingressroute
|
||||
enabled: true
|
||||
`
|
||||
composeFile = fmt.Sprintf(composeFile, labels.KatenaryLabelPrefix)
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
currentDir, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(currentDir)
|
||||
|
||||
// Test that the ingressroute file is generated
|
||||
output := internalCompileTest(
|
||||
t,
|
||||
"-s", "templates/web/ingressroute.yaml",
|
||||
)
|
||||
|
||||
// Check that it's a Traefik IngressRoute
|
||||
if !strings.Contains(output, "kind: IngressRoute") {
|
||||
t.Errorf("Expected IngressRoute kind in output")
|
||||
}
|
||||
if !strings.Contains(output, "apiVersion: traefik.io/v1alpha1") {
|
||||
t.Errorf("Expected traefik.io/v1alpha1 apiVersion in output")
|
||||
}
|
||||
if !strings.Contains(output, "my.test.tld") {
|
||||
t.Errorf("Expected host my.test.tld in output")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIngressRouteWithTLS(t *testing.T) {
|
||||
composeFile := `
|
||||
services:
|
||||
web:
|
||||
image: nginx:1.29
|
||||
ports:
|
||||
- 443:443
|
||||
labels:
|
||||
%s/ingress: |-
|
||||
hostname: secure.example.com
|
||||
port: 443
|
||||
type: ingressroute
|
||||
enabled: true
|
||||
tls:
|
||||
enabled: true
|
||||
`
|
||||
composeFile = fmt.Sprintf(composeFile, labels.KatenaryLabelPrefix)
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
currentDir, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(currentDir)
|
||||
|
||||
output := internalCompileTest(
|
||||
t,
|
||||
"-s", "templates/web/ingressroute.yaml",
|
||||
)
|
||||
|
||||
// Check TLS configuration
|
||||
if !strings.Contains(output, "tls:") {
|
||||
t.Errorf("Expected TLS configuration in IngressRoute, got: %s", output)
|
||||
}
|
||||
if !strings.Contains(output, "secretName:") {
|
||||
t.Errorf("Expected SecretName in TLS configuration, got: %s", output)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIngressRouteWithPath(t *testing.T) {
|
||||
composeFile := `
|
||||
services:
|
||||
web:
|
||||
image: nginx:1.29
|
||||
ports:
|
||||
- 80:80
|
||||
labels:
|
||||
%s/ingress: |-
|
||||
hostname: app.example.com
|
||||
port: 80
|
||||
path: /api
|
||||
type: ingressroute
|
||||
enabled: true
|
||||
`
|
||||
composeFile = fmt.Sprintf(composeFile, labels.KatenaryLabelPrefix)
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
currentDir, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(currentDir)
|
||||
|
||||
output := internalCompileTest(
|
||||
t,
|
||||
"-s", "templates/web/ingressroute.yaml",
|
||||
)
|
||||
|
||||
// Check path prefix in match rule
|
||||
if !strings.Contains(output, "PathPrefix") {
|
||||
t.Errorf("Expected PathPrefix in match rule")
|
||||
}
|
||||
if !strings.Contains(output, "/api") {
|
||||
t.Errorf("Expected path /api in match rule")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIngressRouteEntryPoints(t *testing.T) {
|
||||
composeFile := `
|
||||
services:
|
||||
web:
|
||||
image: nginx:1.29
|
||||
ports:
|
||||
- 80:80
|
||||
labels:
|
||||
%s/ingress: |-
|
||||
hostname: app.example.com
|
||||
port: 80
|
||||
type: ingressroute
|
||||
enabled: true
|
||||
`
|
||||
composeFile = fmt.Sprintf(composeFile, labels.KatenaryLabelPrefix)
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
currentDir, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(currentDir)
|
||||
|
||||
output := internalCompileTest(
|
||||
t,
|
||||
"-s", "templates/web/ingressroute.yaml",
|
||||
)
|
||||
|
||||
// Check default entryPoints
|
||||
if !strings.Contains(output, "web") {
|
||||
t.Errorf("Expected 'web' entryPoint in IngressRoute")
|
||||
}
|
||||
if !strings.Contains(output, "websecure") {
|
||||
t.Errorf("Expected 'websecure' entryPoint in IngressRoute")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIngressRouteDisabled(t *testing.T) {
|
||||
composeFile := `
|
||||
services:
|
||||
web:
|
||||
image: nginx:1.29
|
||||
ports:
|
||||
- 80:80
|
||||
labels:
|
||||
%s/ingress: |-
|
||||
hostname: app.example.com
|
||||
port: 80
|
||||
type: ingressroute
|
||||
enabled: false
|
||||
`
|
||||
composeFile = fmt.Sprintf(composeFile, labels.KatenaryLabelPrefix)
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
currentDir, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(currentDir)
|
||||
|
||||
// When ingress is disabled, the file is generated but the helm template
|
||||
// with -s flag will fail because output is empty due to conditional
|
||||
// Instead, just verify the chart is valid by running helm template without -s
|
||||
// The chart should lint successfully
|
||||
output := internalCompileTest(
|
||||
t,
|
||||
)
|
||||
|
||||
// The output should not contain IngressRoute kind since it's disabled
|
||||
if strings.Contains(output, "kind: IngressRoute") {
|
||||
t.Errorf("IngressRoute should not be in output when disabled")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIngressRouteMetadata(t *testing.T) {
|
||||
composeFile := `
|
||||
services:
|
||||
web:
|
||||
image: nginx:1.29
|
||||
ports:
|
||||
- 80:80
|
||||
labels:
|
||||
%s/ingress: |-
|
||||
hostname: meta.example.com
|
||||
port: 80
|
||||
type: ingressroute
|
||||
enabled: true
|
||||
`
|
||||
composeFile = fmt.Sprintf(composeFile, labels.KatenaryLabelPrefix)
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
currentDir, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(currentDir)
|
||||
|
||||
output := internalCompileTest(
|
||||
t,
|
||||
"-s", "templates/web/ingressroute.yaml",
|
||||
)
|
||||
|
||||
// Check that labels are present (like other objects - no metadata: block)
|
||||
if !strings.Contains(output, "labels:") {
|
||||
t.Errorf("Expected labels: in IngressRoute output")
|
||||
}
|
||||
|
||||
// Check that katenary labels are present (set by GetLabels)
|
||||
if !strings.Contains(output, "katenary.v3/component") {
|
||||
t.Errorf("Expected katenary.v3/component label in IngressRoute")
|
||||
}
|
||||
|
||||
// Check that the standard labels are present
|
||||
if !strings.Contains(output, "app.kubernetes.io/name") {
|
||||
t.Errorf("Expected app.kubernetes.io/name label in IngressRoute")
|
||||
}
|
||||
}
|
||||
@@ -110,11 +110,25 @@
|
||||
long: |-
|
||||
Declare an ingress rule for the service. The port should be exposed or
|
||||
declared with {{ printf "%s/%s" .KatenaryPrefix "ports" }}.
|
||||
|
||||
The default ingress class is "traefik".
|
||||
|
||||
**Files generated:** Both `ingress.yaml` (standard Kubernetes Ingress) and
|
||||
`ingressroute.yaml` (Traefik IngressRoute CRD) are generated. You can
|
||||
control which one is installed via values.yaml:
|
||||
|
||||
- `ingress.enabled` - controls standard Ingress installation
|
||||
- `ingress.ingressRouteEnabled` - controls IngressRoute installation
|
||||
|
||||
Setting `type: ingressroute` automatically sets `ingressRouteEnabled: true`.
|
||||
example: |-
|
||||
labels:
|
||||
{{ .KatenaryPrefix }}/ingress: |-
|
||||
port: 80
|
||||
hostname: mywebsite.com (optional)
|
||||
# Use Traefik IngressRoute instead of standard Ingress
|
||||
type: ingressroute
|
||||
enabled: true
|
||||
type: "object"
|
||||
|
||||
"map-env":
|
||||
|
||||
@@ -17,7 +17,8 @@ type Ingress struct {
|
||||
Annotations map[string]string `yaml:"annotations,omitempty" jsonschema:"nullable" json:"annotations,omitempty"`
|
||||
Hostname string `yaml:"hostname,omitempty" json:"hostname,omitempty"`
|
||||
Path *string `yaml:"path,omitempty" json:"path,omitempty"`
|
||||
Class *string `yaml:"class,omitempty" json:"class,omitempty" jsonschema:"default:-"`
|
||||
Class *string `yaml:"class,omitempty" json:"class,omitempty" jsonschema:"default:traefik"`
|
||||
Type string `yaml:"type,omitempty" json:"type,omitempty"`
|
||||
Enabled bool `yaml:"enabled,omitempty" json:"enabled,omitempty"`
|
||||
TLS *TLS `yaml:"tls,omitempty" json:"tls,omitempty"`
|
||||
}
|
||||
@@ -28,7 +29,8 @@ func IngressFrom(data string) (*Ingress, error) {
|
||||
Hostname: "",
|
||||
Path: utils.StrPtr("/"),
|
||||
Enabled: false,
|
||||
Class: utils.StrPtr("-"),
|
||||
Class: utils.StrPtr("traefik"),
|
||||
Type: "ingress",
|
||||
Port: nil,
|
||||
TLS: &TLS{Enabled: true},
|
||||
}
|
||||
|
||||
@@ -31,7 +31,9 @@ type IngressValue struct {
|
||||
Host string `yaml:"host"`
|
||||
Path string `yaml:"path"`
|
||||
Class string `yaml:"class"`
|
||||
Type string `yaml:"type"`
|
||||
Enabled bool `yaml:"enabled"`
|
||||
IngressRouteEnabled bool `yaml:"ingressRouteEnabled"`
|
||||
TLS TLS `yaml:"tls"`
|
||||
}
|
||||
|
||||
@@ -92,7 +94,8 @@ func (v *Value) AddIngress(host, path string) {
|
||||
Enabled: true,
|
||||
Host: host,
|
||||
Path: path,
|
||||
Class: "-",
|
||||
Class: "traefik",
|
||||
Type: "ingress",
|
||||
TLS: TLS{
|
||||
Enabled: true,
|
||||
SecretName: "",
|
||||
|
||||
Reference in New Issue
Block a user