Go to Katenary V3
This is the next-gen of Katenary
This commit is contained in:
8
doc/docs/packages/cmd/katenary.md
Normal file
8
doc/docs/packages/cmd/katenary.md
Normal file
@@ -0,0 +1,8 @@
|
||||
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
|
||||
|
||||
# katenary
|
||||
|
||||
``` go
|
||||
import "katenary/cmd/katenary"
|
||||
```
|
||||
|
893
doc/docs/packages/generator.md
Normal file
893
doc/docs/packages/generator.md
Normal file
@@ -0,0 +1,893 @@
|
||||
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
|
||||
|
||||
# generator
|
||||
|
||||
``` go
|
||||
import "katenary/generator"
|
||||
```
|
||||
|
||||
The generator package generates kubernetes objects from a compose file
|
||||
and transforms them into a helm chart.
|
||||
|
||||
The generator package is the core of katenary. It is responsible for
|
||||
generating kubernetes objects from a compose file and transforming them
|
||||
into a helm chart. Convertion manipulates Yaml representation of
|
||||
kubernetes object to add conditions, labels, annotations, etc. to the
|
||||
objects. It also create the values to be set to the values.yaml file.
|
||||
|
||||
The generate.Convert() create an HelmChart object and call “Generate()”
|
||||
method to convert from a compose file to a helm chart. It saves the helm
|
||||
chart in the given directory.
|
||||
|
||||
If you want to change or override the write behavior, you can use the
|
||||
HelmChart.Generate() function and implement your own write function.
|
||||
This function returns the helm chart object containing all kubernetes
|
||||
objects and helm chart ingormation. It does not write the helm chart to
|
||||
the disk.
|
||||
|
||||
TODO: Manage cronjob + rbac TODO: create note.txt TODO: manage emptyDirs
|
||||
|
||||
## Constants
|
||||
|
||||
``` go
|
||||
const KATENARY_PREFIX = "katenary.v3/"
|
||||
```
|
||||
|
||||
## Variables
|
||||
|
||||
``` go
|
||||
var (
|
||||
|
||||
// Standard annotationss
|
||||
Annotations = map[string]string{
|
||||
KATENARY_PREFIX + "version": Version,
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
Version is the version of katenary. It is set at compile time.
|
||||
|
||||
``` go
|
||||
var Version = "master" // changed at compile time
|
||||
```
|
||||
|
||||
## func Convert
|
||||
|
||||
``` go
|
||||
func Convert(config ConvertOptions, dockerComposeFile ...string)
|
||||
```
|
||||
|
||||
Convert a compose (docker, podman…) project to a helm chart. It calls
|
||||
Generate() to generate the chart and then write it to the disk.
|
||||
|
||||
## func GetLabelHelp
|
||||
|
||||
``` go
|
||||
func GetLabelHelp(asMarkdown bool) string
|
||||
```
|
||||
|
||||
Generate the help for the labels.
|
||||
|
||||
## func GetLabelHelpFor
|
||||
|
||||
``` go
|
||||
func GetLabelHelpFor(labelname string, asMarkdown bool) string
|
||||
```
|
||||
|
||||
GetLabelHelpFor returns the help for a specific label.
|
||||
|
||||
## func GetLabelNames
|
||||
|
||||
``` go
|
||||
func GetLabelNames() []string
|
||||
```
|
||||
|
||||
GetLabelNames returns a sorted list of all katenary label names.
|
||||
|
||||
## func GetLabels
|
||||
|
||||
``` go
|
||||
func GetLabels(serviceName, appName string) map[string]string
|
||||
```
|
||||
|
||||
## func GetMatchLabels
|
||||
|
||||
``` go
|
||||
func GetMatchLabels(serviceName, appName string) map[string]string
|
||||
```
|
||||
|
||||
## func Helper
|
||||
|
||||
``` go
|
||||
func Helper(name string) string
|
||||
```
|
||||
|
||||
Helper returns the \_helpers.tpl file for a chart.
|
||||
|
||||
## func NewCronJob
|
||||
|
||||
``` go
|
||||
func NewCronJob(service types.ServiceConfig, chart *HelmChart, appName string) (*CronJob, *RBAC)
|
||||
```
|
||||
|
||||
NewCronJob creates a new CronJob from a compose service. The appName is
|
||||
the name of the application taken from the project name.
|
||||
|
||||
## 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.
|
||||
|
||||
TODO: maybe we can set it private.
|
||||
|
||||
``` go
|
||||
type ChartTemplate struct {
|
||||
Content []byte
|
||||
Servicename string
|
||||
}
|
||||
```
|
||||
|
||||
## type ConfigMap
|
||||
|
||||
ConfigMap is a kubernetes ConfigMap. Implements the DataMap interface.
|
||||
|
||||
``` go
|
||||
type ConfigMap struct {
|
||||
*corev1.ConfigMap
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func NewConfigMap
|
||||
|
||||
``` go
|
||||
func NewConfigMap(service types.ServiceConfig, appName string) *ConfigMap
|
||||
```
|
||||
|
||||
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”.
|
||||
|
||||
### func NewConfigMapFromFiles
|
||||
|
||||
``` go
|
||||
func NewConfigMapFromFiles(service types.ServiceConfig, appName string, path string) *ConfigMap
|
||||
```
|
||||
|
||||
NewConfigMapFromFiles 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.
|
||||
|
||||
### func (*ConfigMap) AddData
|
||||
|
||||
``` go
|
||||
func (c *ConfigMap) AddData(key string, value string)
|
||||
```
|
||||
|
||||
AddData adds a key value pair to the configmap. Append or overwrite the
|
||||
value if the key already exists.
|
||||
|
||||
### func (*ConfigMap) AppendDir
|
||||
|
||||
``` go
|
||||
func (c *ConfigMap) AppendDir(path string)
|
||||
```
|
||||
|
||||
AddFile 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.
|
||||
|
||||
### func (*ConfigMap) Filename
|
||||
|
||||
``` go
|
||||
func (c *ConfigMap) Filename() string
|
||||
```
|
||||
|
||||
Filename returns the filename of the configmap. If the configmap is used
|
||||
for files, the filename contains the path.
|
||||
|
||||
### func (*ConfigMap) SetData
|
||||
|
||||
``` go
|
||||
func (c *ConfigMap) SetData(data map[string]string)
|
||||
```
|
||||
|
||||
SetData sets the data of the configmap. It replaces the entire data.
|
||||
|
||||
### func (*ConfigMap) Yaml
|
||||
|
||||
``` go
|
||||
func (c *ConfigMap) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
Yaml returns the yaml representation of the configmap
|
||||
|
||||
## type ConvertOptions
|
||||
|
||||
ConvertOptions are the options to convert a compose project to a helm
|
||||
chart.
|
||||
|
||||
``` go
|
||||
type ConvertOptions struct {
|
||||
Force bool // Force the chart directory deletion if it already exists.
|
||||
OutputDir string // The output directory of the chart.
|
||||
Profiles []string // Profile to use for the conversion.
|
||||
HelmUpdate bool // If true, the "helm dep update" command will be run after the chart generation.
|
||||
AppVersion *string // Set the chart "appVersion" field. If nil, the version will be set to 0.1.0.
|
||||
ChartVersion string // Set the chart "version" field.
|
||||
}
|
||||
```
|
||||
|
||||
## type CronJob
|
||||
|
||||
CronJob is a kubernetes CronJob.
|
||||
|
||||
``` go
|
||||
type CronJob struct {
|
||||
*batchv1.CronJob
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func (*CronJob) Filename
|
||||
|
||||
``` go
|
||||
func (c *CronJob) Filename() string
|
||||
```
|
||||
|
||||
Filename returns the filename of the cronjob.
|
||||
|
||||
Implements the Yaml interface.
|
||||
|
||||
### func (*CronJob) Yaml
|
||||
|
||||
``` go
|
||||
func (c *CronJob) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
Yaml returns the yaml representation of the cronjob.
|
||||
|
||||
Implements the Yaml interface.
|
||||
|
||||
## type CronJobValue
|
||||
|
||||
CronJobValue is a cronjob configuration that will be saved in
|
||||
values.yaml.
|
||||
|
||||
``` go
|
||||
type CronJobValue struct {
|
||||
Repository *RepositoryValue `yaml:"repository,omitempty"`
|
||||
Environment map[string]any `yaml:"environment,omitempty"`
|
||||
ImagePullPolicy string `yaml:"imagePullPolicy,omitempty"`
|
||||
Schedule string `yaml:"schedule"`
|
||||
}
|
||||
```
|
||||
|
||||
## type DataMap
|
||||
|
||||
DataMap is a kubernetes ConfigMap or Secret. It can be used to add data
|
||||
to the ConfigMap or Secret.
|
||||
|
||||
``` go
|
||||
type DataMap interface {
|
||||
SetData(map[string]string)
|
||||
AddData(string, string)
|
||||
}
|
||||
```
|
||||
|
||||
### func NewFileMap
|
||||
|
||||
``` go
|
||||
func NewFileMap(service types.ServiceConfig, appName string, kind string) DataMap
|
||||
```
|
||||
|
||||
NewFileMap creates a new DataMap from a compose service. The appName is
|
||||
the name of the application taken from the project name.
|
||||
|
||||
## type Dependency
|
||||
|
||||
Dependency is a dependency of a chart to other charts.
|
||||
|
||||
``` go
|
||||
type Dependency struct {
|
||||
Name string `yaml:"name"`
|
||||
Version string `yaml:"version"`
|
||||
Repository string `yaml:"repository"`
|
||||
Alias string `yaml:"alias,omitempty"`
|
||||
Values map[string]any `yaml:"-"` // do not export to Chart.yaml
|
||||
}
|
||||
```
|
||||
|
||||
## type Deployment
|
||||
|
||||
Deployment is a kubernetes Deployment.
|
||||
|
||||
``` go
|
||||
type Deployment struct {
|
||||
*appsv1.Deployment `yaml:",inline"`
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func NewDeployment
|
||||
|
||||
``` go
|
||||
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.
|
||||
|
||||
### func (*Deployment) AddContainer
|
||||
|
||||
``` go
|
||||
func (d *Deployment) AddContainer(service types.ServiceConfig)
|
||||
```
|
||||
|
||||
AddContainer adds a container to the deployment.
|
||||
|
||||
### func (*Deployment) AddHealthCheck
|
||||
|
||||
``` go
|
||||
func (d *Deployment) AddHealthCheck(service types.ServiceConfig, container *corev1.Container)
|
||||
```
|
||||
|
||||
### func (*Deployment) AddIngress
|
||||
|
||||
``` go
|
||||
func (d *Deployment) AddIngress(service types.ServiceConfig, appName string) *Ingress
|
||||
```
|
||||
|
||||
AddIngress adds an ingress to the deployment. It creates the ingress
|
||||
object.
|
||||
|
||||
### func (*Deployment) AddVolumes
|
||||
|
||||
``` go
|
||||
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.
|
||||
|
||||
### func (*Deployment) BindFrom
|
||||
|
||||
``` go
|
||||
func (d *Deployment) BindFrom(service types.ServiceConfig, binded *Deployment)
|
||||
```
|
||||
|
||||
### func (*Deployment) DependsOn
|
||||
|
||||
``` go
|
||||
func (d *Deployment) DependsOn(to *Deployment) error
|
||||
```
|
||||
|
||||
DependsOn adds a initContainer to the deployment that will wait for the
|
||||
service to be up.
|
||||
|
||||
### func (*Deployment) Filename
|
||||
|
||||
``` go
|
||||
func (d *Deployment) Filename() string
|
||||
```
|
||||
|
||||
### func (*Deployment) SetEnvFrom
|
||||
|
||||
``` go
|
||||
func (d *Deployment) SetEnvFrom(service types.ServiceConfig, appName string)
|
||||
```
|
||||
|
||||
SetEnvFrom sets the environment variables to a configmap. The configmap
|
||||
is created.
|
||||
|
||||
### func (*Deployment) Yaml
|
||||
|
||||
``` go
|
||||
func (d *Deployment) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
Yaml returns the yaml representation of the deployment.
|
||||
|
||||
## type FileMapUsage
|
||||
|
||||
FileMapUsage is the usage of the filemap.
|
||||
|
||||
``` go
|
||||
type FileMapUsage uint8
|
||||
```
|
||||
|
||||
FileMapUsage constants.
|
||||
|
||||
``` go
|
||||
const (
|
||||
FileMapUsageConfigMap FileMapUsage = iota // pure configmap for key:values.
|
||||
FileMapUsageFiles // files in a configmap.
|
||||
)
|
||||
```
|
||||
|
||||
## type HelmChart
|
||||
|
||||
HelmChart is a Helm Chart representation. It contains all the tempaltes,
|
||||
values, versions, helpers…
|
||||
|
||||
``` go
|
||||
type HelmChart struct {
|
||||
Name string `yaml:"name"`
|
||||
ApiVersion string `yaml:"apiVersion"`
|
||||
Version string `yaml:"version"`
|
||||
AppVersion string `yaml:"appVersion"`
|
||||
Description string `yaml:"description"`
|
||||
Dependencies []Dependency `yaml:"dependencies,omitempty"`
|
||||
Templates map[string]*ChartTemplate `yaml:"-"` // do not export to yaml
|
||||
Helper string `yaml:"-"` // do not export to yaml
|
||||
Values map[string]any `yaml:"-"` // do not export to yaml
|
||||
VolumeMounts map[string]any `yaml:"-"` // do not export to yaml
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func Generate
|
||||
|
||||
``` go
|
||||
func Generate(project *types.Project) (*HelmChart, error)
|
||||
```
|
||||
|
||||
Generate a chart from a compose project. This does not write files to
|
||||
disk, it only creates the HelmChart object.
|
||||
|
||||
The Generate function will create the HelmChart object this way:
|
||||
|
||||
1. Detect the service port name or leave the port number if not found.
|
||||
|
||||
2. Create a deployment for each service that are not ingnore.
|
||||
|
||||
3. Create a service and ingresses for each service that has ports
|
||||
and/or declared ingresses.
|
||||
|
||||
4. Create a PVC or Configmap volumes for each volume.
|
||||
|
||||
5. Create init containers for each service which has dependencies to
|
||||
other services.
|
||||
|
||||
6. Create a chart dependencies.
|
||||
|
||||
7. Create a configmap and secrets from the environment variables.
|
||||
|
||||
8. Merge the same-pod services.
|
||||
|
||||
### func NewChart
|
||||
|
||||
``` go
|
||||
func NewChart(name string) *HelmChart
|
||||
```
|
||||
|
||||
NewChart creates a new empty chart with the given name.
|
||||
|
||||
## type Help
|
||||
|
||||
Help is the documentation of a label.
|
||||
|
||||
``` go
|
||||
type Help struct {
|
||||
Short string `yaml:"short"`
|
||||
Long string `yaml:"long"`
|
||||
Example string `yaml:"example"`
|
||||
Type string `yaml:"type"`
|
||||
}
|
||||
```
|
||||
|
||||
## type Ingress
|
||||
|
||||
``` go
|
||||
type Ingress struct {
|
||||
*networkv1.Ingress
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func NewIngress
|
||||
|
||||
``` go
|
||||
func NewIngress(service types.ServiceConfig, Chart *HelmChart) *Ingress
|
||||
```
|
||||
|
||||
NewIngress creates a new Ingress from a compose service.
|
||||
|
||||
### func (*Ingress) Filename
|
||||
|
||||
``` go
|
||||
func (ingress *Ingress) Filename() string
|
||||
```
|
||||
|
||||
### func (*Ingress) Yaml
|
||||
|
||||
``` go
|
||||
func (ingress *Ingress) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
## type IngressValue
|
||||
|
||||
IngressValue is a ingress configuration that will be saved in
|
||||
values.yaml.
|
||||
|
||||
``` go
|
||||
type IngressValue struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
Host string `yaml:"host"`
|
||||
Path string `yaml:"path"`
|
||||
Class string `yaml:"class"`
|
||||
Annotations map[string]string `yaml:"annotations"`
|
||||
}
|
||||
```
|
||||
|
||||
## type Label
|
||||
|
||||
Label is a katenary label to find in compose files.
|
||||
|
||||
``` go
|
||||
type Label = string
|
||||
```
|
||||
|
||||
Known labels.
|
||||
|
||||
``` go
|
||||
const (
|
||||
LABEL_MAIN_APP Label = KATENARY_PREFIX + "main-app"
|
||||
LABEL_VALUES Label = KATENARY_PREFIX + "values"
|
||||
LABEL_SECRETS Label = KATENARY_PREFIX + "secrets"
|
||||
LABEL_PORTS Label = KATENARY_PREFIX + "ports"
|
||||
LABEL_INGRESS Label = KATENARY_PREFIX + "ingress"
|
||||
LABEL_MAP_ENV Label = KATENARY_PREFIX + "map-env"
|
||||
LABEL_HEALTHCHECK Label = KATENARY_PREFIX + "health-check"
|
||||
LABEL_SAME_POD Label = KATENARY_PREFIX + "same-pod"
|
||||
LABEL_DESCRIPTION Label = KATENARY_PREFIX + "description"
|
||||
LABEL_IGNORE Label = KATENARY_PREFIX + "ignore"
|
||||
LABEL_DEPENDENCIES Label = KATENARY_PREFIX + "dependencies"
|
||||
LABEL_CM_FILES Label = KATENARY_PREFIX + "configmap-files"
|
||||
LABEL_CRONJOB Label = KATENARY_PREFIX + "cronjob"
|
||||
LABEL_ENV_FROM Label = KATENARY_PREFIX + "env-from"
|
||||
)
|
||||
```
|
||||
|
||||
## type LabelType
|
||||
|
||||
LabelType identifies the type of label to generate in objects. TODO: is
|
||||
this still needed?
|
||||
|
||||
``` go
|
||||
type LabelType uint8
|
||||
```
|
||||
|
||||
``` go
|
||||
const (
|
||||
DeploymentLabel LabelType = iota
|
||||
ServiceLabel
|
||||
)
|
||||
```
|
||||
|
||||
## type PersistenceValue
|
||||
|
||||
PersistenceValue is a persistence configuration that will be saved in
|
||||
values.yaml.
|
||||
|
||||
``` go
|
||||
type PersistenceValue struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
StorageClass string `yaml:"storageClass"`
|
||||
Size string `yaml:"size"`
|
||||
AccessMode []string `yaml:"accessMode"`
|
||||
}
|
||||
```
|
||||
|
||||
## type RBAC
|
||||
|
||||
RBAC is a kubernetes RBAC containing a role, a rolebinding and an
|
||||
associated serviceaccount.
|
||||
|
||||
``` go
|
||||
type RBAC struct {
|
||||
RoleBinding *RoleBinding
|
||||
Role *Role
|
||||
ServiceAccount *ServiceAccount
|
||||
}
|
||||
```
|
||||
|
||||
### func NewRBAC
|
||||
|
||||
``` go
|
||||
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.
|
||||
|
||||
## type RepositoryValue
|
||||
|
||||
RepositoryValue is a docker repository image and tag that will be saved
|
||||
in values.yaml.
|
||||
|
||||
``` go
|
||||
type RepositoryValue struct {
|
||||
Image string `yaml:"image"`
|
||||
Tag string `yaml:"tag"`
|
||||
}
|
||||
```
|
||||
|
||||
## type Role
|
||||
|
||||
Role is a kubernetes Role.
|
||||
|
||||
``` go
|
||||
type Role struct {
|
||||
*rbacv1.Role
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func (*Role) Filename
|
||||
|
||||
``` go
|
||||
func (r *Role) Filename() string
|
||||
```
|
||||
|
||||
### func (*Role) Yaml
|
||||
|
||||
``` go
|
||||
func (r *Role) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
## type RoleBinding
|
||||
|
||||
RoleBinding is a kubernetes RoleBinding.
|
||||
|
||||
``` go
|
||||
type RoleBinding struct {
|
||||
*rbacv1.RoleBinding
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func (*RoleBinding) Filename
|
||||
|
||||
``` go
|
||||
func (r *RoleBinding) Filename() string
|
||||
```
|
||||
|
||||
### func (*RoleBinding) Yaml
|
||||
|
||||
``` go
|
||||
func (r *RoleBinding) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
## type Secret
|
||||
|
||||
Secret is a kubernetes Secret.
|
||||
|
||||
Implements the DataMap interface.
|
||||
|
||||
``` go
|
||||
type Secret struct {
|
||||
*corev1.Secret
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func NewSecret
|
||||
|
||||
``` go
|
||||
func NewSecret(service types.ServiceConfig, appName string) *Secret
|
||||
```
|
||||
|
||||
NewSecret creates a new Secret from a compose service
|
||||
|
||||
### func (*Secret) AddData
|
||||
|
||||
``` go
|
||||
func (s *Secret) AddData(key string, value string)
|
||||
```
|
||||
|
||||
AddData adds a key value pair to the secret.
|
||||
|
||||
### func (*Secret) Filename
|
||||
|
||||
``` go
|
||||
func (s *Secret) Filename() string
|
||||
```
|
||||
|
||||
Filename returns the filename of the secret.
|
||||
|
||||
### func (*Secret) SetData
|
||||
|
||||
``` go
|
||||
func (s *Secret) SetData(data map[string]string)
|
||||
```
|
||||
|
||||
SetData sets the data of the secret.
|
||||
|
||||
### func (*Secret) Yaml
|
||||
|
||||
``` go
|
||||
func (s *Secret) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
Yaml returns the yaml representation of the secret.
|
||||
|
||||
## type Service
|
||||
|
||||
Service is a kubernetes Service.
|
||||
|
||||
``` go
|
||||
type Service struct {
|
||||
*v1.Service `yaml:",inline"`
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func NewService
|
||||
|
||||
``` go
|
||||
func NewService(service types.ServiceConfig, appName string) *Service
|
||||
```
|
||||
|
||||
NewService creates a new Service from a compose service.
|
||||
|
||||
### func (*Service) AddPort
|
||||
|
||||
``` go
|
||||
func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string)
|
||||
```
|
||||
|
||||
AddPort adds a port to the service.
|
||||
|
||||
### func (*Service) Filename
|
||||
|
||||
``` go
|
||||
func (s *Service) Filename() string
|
||||
```
|
||||
|
||||
Filename returns the filename of the service.
|
||||
|
||||
### func (*Service) Yaml
|
||||
|
||||
``` go
|
||||
func (s *Service) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
Yaml returns the yaml representation of the service.
|
||||
|
||||
## type ServiceAccount
|
||||
|
||||
ServiceAccount is a kubernetes ServiceAccount.
|
||||
|
||||
``` go
|
||||
type ServiceAccount struct {
|
||||
*corev1.ServiceAccount
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func (*ServiceAccount) Filename
|
||||
|
||||
``` go
|
||||
func (r *ServiceAccount) Filename() string
|
||||
```
|
||||
|
||||
### func (*ServiceAccount) Yaml
|
||||
|
||||
``` go
|
||||
func (r *ServiceAccount) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
## type Value
|
||||
|
||||
Value will be saved in values.yaml. It contains configuraiton for all
|
||||
deployment and services. The content will be lile:
|
||||
|
||||
name_of_component:
|
||||
repository:
|
||||
image: image_name
|
||||
tag: image_tag
|
||||
persistence:
|
||||
enabled: true
|
||||
storageClass: storage_class_name
|
||||
ingress:
|
||||
enabled: true
|
||||
host: host_name
|
||||
path: path_name
|
||||
environment:
|
||||
ENV_VAR_1: value_1
|
||||
ENV_VAR_2: value_2
|
||||
|
||||
``` go
|
||||
type Value struct {
|
||||
Repository *RepositoryValue `yaml:"repository,omitempty"`
|
||||
Persistence map[string]*PersistenceValue `yaml:"persistence,omitempty"`
|
||||
Ingress *IngressValue `yaml:"ingress,omitempty"`
|
||||
ImagePullPolicy string `yaml:"imagePullPolicy,omitempty"`
|
||||
Environment map[string]any `yaml:"environment,omitempty"`
|
||||
Replicas *uint32 `yaml:"replicas,omitempty"`
|
||||
CronJob *CronJobValue `yaml:"cronjob,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
### func NewValue
|
||||
|
||||
``` go
|
||||
func NewValue(service types.ServiceConfig, main ...bool) *Value
|
||||
```
|
||||
|
||||
NewValue creates a new Value from a compose service. The value contains
|
||||
the necessary information to deploy the service (image, tag, replicas,
|
||||
etc.).
|
||||
|
||||
If \`main\` is true, the tag will be empty because it will be set in the
|
||||
helm chart appVersion.
|
||||
|
||||
### func (*Value) AddIngress
|
||||
|
||||
``` go
|
||||
func (v *Value) AddIngress(host, path string)
|
||||
```
|
||||
|
||||
### func (*Value) AddPersistence
|
||||
|
||||
``` go
|
||||
func (v *Value) AddPersistence(volumeName string)
|
||||
```
|
||||
|
||||
AddPersistence adds persistence configuration to the Value.
|
||||
|
||||
## type VolumeClaim
|
||||
|
||||
VolumeClaim is a kubernetes VolumeClaim. This is a
|
||||
PersistentVolumeClaim.
|
||||
|
||||
``` go
|
||||
type VolumeClaim struct {
|
||||
*v1.PersistentVolumeClaim
|
||||
// contains filtered or unexported fields
|
||||
}
|
||||
```
|
||||
|
||||
### func NewVolumeClaim
|
||||
|
||||
``` go
|
||||
func NewVolumeClaim(service types.ServiceConfig, volumeName, appName string) *VolumeClaim
|
||||
```
|
||||
|
||||
NewVolumeClaim creates a new VolumeClaim from a compose service.
|
||||
|
||||
### func (*VolumeClaim) Filename
|
||||
|
||||
``` go
|
||||
func (v *VolumeClaim) Filename() string
|
||||
```
|
||||
|
||||
Filename returns the suggested filename for a VolumeClaim.
|
||||
|
||||
### func (*VolumeClaim) Yaml
|
||||
|
||||
``` go
|
||||
func (v *VolumeClaim) Yaml() ([]byte, error)
|
||||
```
|
||||
|
||||
Yaml marshals a VolumeClaim into yaml.
|
||||
|
||||
## type Yaml
|
||||
|
||||
Yaml is a kubernetes object that can be converted to yaml.
|
||||
|
||||
``` go
|
||||
type Yaml interface {
|
||||
Yaml() ([]byte, error)
|
||||
Filename() string
|
||||
}
|
||||
```
|
||||
|
||||
Generated by [gomarkdoc](https://github.com/princjef/gomarkdoc)
|
28
doc/docs/packages/generator/extrafiles.md
Normal file
28
doc/docs/packages/generator/extrafiles.md
Normal file
@@ -0,0 +1,28 @@
|
||||
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
|
||||
|
||||
# extrafiles
|
||||
|
||||
``` go
|
||||
import "katenary/generator/extrafiles"
|
||||
```
|
||||
|
||||
extrafiles package provides function to generate the Chart files that
|
||||
are not objects. Like README.md and notes.txt…
|
||||
|
||||
## func NotesFile
|
||||
|
||||
``` go
|
||||
func NotesFile() string
|
||||
```
|
||||
|
||||
NoteTXTFile returns the content of the note.txt file.
|
||||
|
||||
## func ReadMeFile
|
||||
|
||||
``` go
|
||||
func ReadMeFile(charname, description string, values map[string]any) string
|
||||
```
|
||||
|
||||
ReadMeFile returns the content of the README.md file.
|
||||
|
||||
Generated by [gomarkdoc](https://github.com/princjef/gomarkdoc)
|
20
doc/docs/packages/parser.md
Normal file
20
doc/docs/packages/parser.md
Normal file
@@ -0,0 +1,20 @@
|
||||
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
|
||||
|
||||
# parser
|
||||
|
||||
``` go
|
||||
import "katenary/parser"
|
||||
```
|
||||
|
||||
Parser package is a wrapper around compose-go to parse compose files.
|
||||
|
||||
## func Parse
|
||||
|
||||
``` go
|
||||
func Parse(profiles []string, dockerComposeFile ...string) (*types.Project, error)
|
||||
```
|
||||
|
||||
Parse compose files and return a project. The project is parsed with
|
||||
dotenv, osenv and profiles.
|
||||
|
||||
Generated by [gomarkdoc](https://github.com/princjef/gomarkdoc)
|
55
doc/docs/packages/update.md
Normal file
55
doc/docs/packages/update.md
Normal file
@@ -0,0 +1,55 @@
|
||||
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
|
||||
|
||||
# update
|
||||
|
||||
``` go
|
||||
import "katenary/update"
|
||||
```
|
||||
|
||||
Update package is used to check if a new version of katenary is
|
||||
available.
|
||||
|
||||
## Variables
|
||||
|
||||
``` go
|
||||
var Version = "master" // reset by cmd/main.go
|
||||
```
|
||||
|
||||
## func DownloadFile
|
||||
|
||||
``` go
|
||||
func DownloadFile(url, exe string) error
|
||||
```
|
||||
|
||||
DownloadFile will download a url to a local file. It also ensure that
|
||||
the file is executable.
|
||||
|
||||
## func DownloadLatestVersion
|
||||
|
||||
``` go
|
||||
func DownloadLatestVersion(assets []Asset) error
|
||||
```
|
||||
|
||||
DownloadLatestVersion will download the latest version of katenary.
|
||||
|
||||
## type Asset
|
||||
|
||||
Asset is a github asset from release url.
|
||||
|
||||
``` go
|
||||
type Asset struct {
|
||||
Name string `json:"name"`
|
||||
URL string `json:"browser_download_url"`
|
||||
}
|
||||
```
|
||||
|
||||
### func CheckLatestVersion
|
||||
|
||||
``` go
|
||||
func CheckLatestVersion() (string, []Asset, error)
|
||||
```
|
||||
|
||||
CheckLatestVersion check katenary latest version from release and
|
||||
propose to download it
|
||||
|
||||
Generated by [gomarkdoc](https://github.com/princjef/gomarkdoc)
|
187
doc/docs/packages/utils.md
Normal file
187
doc/docs/packages/utils.md
Normal file
@@ -0,0 +1,187 @@
|
||||
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
|
||||
|
||||
# utils
|
||||
|
||||
``` go
|
||||
import "katenary/utils"
|
||||
```
|
||||
|
||||
Utils package provides some utility functions used in katenary. It
|
||||
defines some constants and functions used in the whole project.
|
||||
|
||||
## Constants
|
||||
|
||||
Icons used in katenary.
|
||||
|
||||
``` go
|
||||
const (
|
||||
IconSuccess Icon = "✅"
|
||||
IconFailure = "❌"
|
||||
IconWarning = "⚠️'"
|
||||
IconNote = "📝"
|
||||
IconWorld = "🌐"
|
||||
IconPlug = "🔌"
|
||||
IconPackage = "📦"
|
||||
IconCabinet = "🗄️"
|
||||
IconInfo = "❕"
|
||||
IconSecret = "🔒"
|
||||
IconConfig = "🔧"
|
||||
IconDependency = "🔗"
|
||||
)
|
||||
```
|
||||
|
||||
## func CountStartingSpaces
|
||||
|
||||
``` go
|
||||
func CountStartingSpaces(line string) int
|
||||
```
|
||||
|
||||
CountStartingSpaces counts the number of spaces at the beginning of a
|
||||
string.
|
||||
|
||||
## func GetContainerByName
|
||||
|
||||
``` go
|
||||
func GetContainerByName(name string, containers []corev1.Container) (*corev1.Container, int)
|
||||
```
|
||||
|
||||
GetContainerByName returns a container by name and its index in the
|
||||
array. It returns nil, -1 if not found.
|
||||
|
||||
## func GetKind
|
||||
|
||||
``` go
|
||||
func GetKind(path string) (kind string)
|
||||
```
|
||||
|
||||
GetKind returns the kind of the resource from the file path.
|
||||
|
||||
## func GetServiceNameByPort
|
||||
|
||||
``` go
|
||||
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.
|
||||
|
||||
## func GetValuesFromLabel
|
||||
|
||||
``` go
|
||||
func GetValuesFromLabel(service types.ServiceConfig, LabelValues string) map[string]*EnvConfig
|
||||
```
|
||||
|
||||
GetValuesFromLabel returns a map of values from a label.
|
||||
|
||||
## func HashComposefiles
|
||||
|
||||
``` go
|
||||
func HashComposefiles(files []string) (string, error)
|
||||
```
|
||||
|
||||
HashComposefiles returns a hash of the compose files.
|
||||
|
||||
## func Int32Ptr
|
||||
|
||||
``` go
|
||||
func Int32Ptr(i int32) *int32
|
||||
```
|
||||
|
||||
Int32Ptr returns a pointer to an int32.
|
||||
|
||||
## func MapKeys
|
||||
|
||||
``` go
|
||||
func MapKeys(m map[string]interface{}) []string
|
||||
```
|
||||
|
||||
## func PathToName
|
||||
|
||||
``` go
|
||||
func PathToName(path string) string
|
||||
```
|
||||
|
||||
PathToName converts a path to a kubernetes complient name.
|
||||
|
||||
## func StrPtr
|
||||
|
||||
``` go
|
||||
func StrPtr(s string) *string
|
||||
```
|
||||
|
||||
StrPtr returns a pointer to a string.
|
||||
|
||||
## func TplName
|
||||
|
||||
``` go
|
||||
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.
|
||||
|
||||
## func TplValue
|
||||
|
||||
``` go
|
||||
func TplValue(serviceName, variable string, pipes ...string) string
|
||||
```
|
||||
|
||||
GetContainerByName returns a container by name and its index in the
|
||||
array.
|
||||
|
||||
## func Warn
|
||||
|
||||
``` go
|
||||
func Warn(msg ...interface{})
|
||||
```
|
||||
|
||||
Warn prints a warning message
|
||||
|
||||
## func WordWrap
|
||||
|
||||
``` go
|
||||
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.
|
||||
|
||||
## func Wrap
|
||||
|
||||
``` go
|
||||
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.
|
||||
|
||||
## func WrapBytes
|
||||
|
||||
``` go
|
||||
func WrapBytes(src, above, below []byte) []byte
|
||||
```
|
||||
|
||||
WrapBytes wraps a byte array with a byte array above and below. It will
|
||||
respect the indentation of the src string.
|
||||
|
||||
## type EnvConfig
|
||||
|
||||
EnvConfig is a struct to hold the description of an environment
|
||||
variable.
|
||||
|
||||
``` go
|
||||
type EnvConfig struct {
|
||||
Description string
|
||||
Service types.ServiceConfig
|
||||
}
|
||||
```
|
||||
|
||||
## type Icon
|
||||
|
||||
Icon is a unicode icon
|
||||
|
||||
``` go
|
||||
type Icon string
|
||||
```
|
||||
|
||||
Generated by [gomarkdoc](https://github.com/princjef/gomarkdoc)
|
Reference in New Issue
Block a user