From 1085be2b5393ab899e35b46603c28bc70e06cdf7 Mon Sep 17 00:00:00 2001 From: Patrice Ferlet Date: Wed, 1 Dec 2021 15:17:34 +0100 Subject: [PATCH] Fixup some annotations --- generator/main.go | 6 ++---- helm/configMap.go | 2 ++ helm/deployment.go | 4 +++- helm/ingress.go | 1 + helm/service.go | 4 +++- helm/storage.go | 1 + helm/types.go | 18 ++++++++++++++++++ main.go | 3 +++ 8 files changed, 33 insertions(+), 6 deletions(-) diff --git a/generator/main.go b/generator/main.go index c6c4cb2..71cdb16 100644 --- a/generator/main.go +++ b/generator/main.go @@ -36,9 +36,8 @@ echo "Done" func CreateReplicaObject(name string, s compose.Service) (ret []interface{}) { Magenta("Generating deployment for ", name) - o := helm.NewDeployment() + o := helm.NewDeployment(name) ret = append(ret, o) - o.Metadata.Name = "{{ .Release.Name }}-" + name container := helm.NewContainer(name, s.Image, s.Environment, s.Labels) @@ -211,8 +210,7 @@ func CreateReplicaObject(name string, s compose.Service) (ret []interface{}) { func createService(name string, s compose.Service) []interface{} { Magenta("Generating service for ", name) - ks := helm.NewService() - ks.Metadata.Name = "{{ .Release.Name }}-" + name + ks := helm.NewService(name) defaultPort := 0 names := make(map[int]int) diff --git a/helm/configMap.go b/helm/configMap.go index 4ae14fd..c718173 100644 --- a/helm/configMap.go +++ b/helm/configMap.go @@ -23,6 +23,7 @@ func NewConfigMap(name string) *ConfigMap { base.ApiVersion = "v1" base.Kind = "ConfigMap" base.Metadata.Name = "{{ .Release.Name }}-" + name + base.Metadata.Labels[K+"/component"] = name return &ConfigMap{ K8sBase: base, Data: make(map[string]string), @@ -66,6 +67,7 @@ func NewSecret(name string) *Secret { base.ApiVersion = "v1" base.Kind = "Secret" base.Metadata.Name = "{{ .Release.Name }}-" + name + base.Metadata.Labels[K+"/component"] = name return &Secret{ K8sBase: base, Data: make(map[string]string), diff --git a/helm/deployment.go b/helm/deployment.go index 655e3b6..b9ba057 100644 --- a/helm/deployment.go +++ b/helm/deployment.go @@ -8,10 +8,12 @@ type Deployment struct { Spec *DepSpec `yaml:"spec"` } -func NewDeployment() *Deployment { +func NewDeployment(name string) *Deployment { d := &Deployment{K8sBase: NewBase(), Spec: NewDepSpec()} + d.K8sBase.Metadata.Name = "{{ .Release.Name }}-" + name d.K8sBase.ApiVersion = "apps/v1" d.K8sBase.Kind = "Deployment" + d.K8sBase.Metadata.Labels[K+"/component"] = name return d } diff --git a/helm/ingress.go b/helm/ingress.go index 0c87be1..f1cb514 100644 --- a/helm/ingress.go +++ b/helm/ingress.go @@ -11,6 +11,7 @@ func NewIngress(name string) *Ingress { i.K8sBase.Metadata.Name = "{{ .Release.Name }}-" + name i.K8sBase.Kind = "Ingress" i.ApiVersion = "networking.k8s.io/v1" + i.K8sBase.Metadata.Labels[K+"/component"] = name return i } diff --git a/helm/service.go b/helm/service.go index 46032c9..3ab8322 100644 --- a/helm/service.go +++ b/helm/service.go @@ -5,13 +5,15 @@ type Service struct { Spec *ServiceSpec `yaml:"spec"` } -func NewService() *Service { +func NewService(name string) *Service { s := &Service{ K8sBase: NewBase(), Spec: NewServiceSpec(), } + s.K8sBase.Metadata.Name = "{{ .Release.Name }}-" + name s.K8sBase.Kind = "Service" s.K8sBase.ApiVersion = "v1" + s.K8sBase.Metadata.Labels[K+"/component"] = name return s } diff --git a/helm/storage.go b/helm/storage.go index 8f2b976..cca23d6 100644 --- a/helm/storage.go +++ b/helm/storage.go @@ -12,6 +12,7 @@ func NewPVC(name, storageName string) *Storage { pvc.K8sBase.Metadata.Labels[K+"/pvc-name"] = storageName pvc.K8sBase.ApiVersion = "v1" pvc.K8sBase.Metadata.Name = "{{ .Release.Name }}-" + storageName + pvc.K8sBase.Metadata.Labels[K+"/component"] = name pvc.Spec = &PVCSpec{ Resouces: map[string]interface{}{ "requests": map[string]string{ diff --git a/helm/types.go b/helm/types.go index 6cca7d8..95d3233 100644 --- a/helm/types.go +++ b/helm/types.go @@ -1,18 +1,27 @@ package helm import ( + "crypto/sha256" + "fmt" + "io/ioutil" "os" "strings" ) const K = "katenary.io" +var Appname = "" + var Version = "1.0" // should be set from main.Version type Kinded interface { Get() string } +type Signable interface { + BuildSHA(filename string) +} + type Metadata struct { Name string `yaml:"name,omitempty"` Labels map[string]string `yaml:"labels"` @@ -44,11 +53,20 @@ func NewBase() *K8sBase { return b } +func (k *K8sBase) BuildSHA(filename string) { + c, _ := ioutil.ReadFile(filename) + sum := sha256.Sum256(c) + k.Metadata.Annotations[K+"/docker-compose-sha256"] = fmt.Sprintf("%x", string(sum[:])) +} + func (k K8sBase) Get() string { return k.Kind } func getProjectName() string { + if len(Appname) > 0 { + return Appname + } p, _ := os.Getwd() path := strings.Split(p, string(os.PathSeparator)) return path[len(path)-1] diff --git a/main.go b/main.go index 02b9723..9cf97d1 100644 --- a/main.go +++ b/main.go @@ -36,6 +36,8 @@ func main() { os.Exit(0) } + // make the appname global (yes...) + helm.Appname = AppName dirname := filepath.Join(ChartsDir, AppName) if _, err := os.Stat(dirname); err == nil && !*force { @@ -85,6 +87,7 @@ func main() { kind = strings.ToLower(kind) fname := filepath.Join(templatesDir, n+"."+kind+".yaml") fp, _ := os.Create(fname) + c.(helm.Signable).BuildSHA(ComposeFile) switch c := c.(type) { case *helm.Storage: volname := c.K8sBase.Metadata.Labels[helm.K+"/pvc-name"]