From e91deaa4ccdd2194e9d3518ecef9a0b1e73bed1f Mon Sep 17 00:00:00 2001 From: chival <47812250+chivalryq@users.noreply.github.com> Date: Wed, 14 Jul 2021 16:48:11 +0800 Subject: [PATCH] Add Prometheus/KEDA as addon (#1915) * add keda addon * add promethus addon * rebase * add generate namespace. add prometheus as addon add keda as addon * rebase --- charts/vela-core/templates/addons/fluxcd.yaml | 1 + charts/vela-core/templates/addons/keda.yaml | 70 +++++++++++++++++++ charts/vela-core/templates/addons/kruise.yaml | 1 + .../templates/addons/ocm-cluster-manager.yaml | 1 + .../templates/addons/prometheus.yaml | 67 ++++++++++++++++++ .../vela-core/templates/addons/terraform.yaml | 1 + vela-templates/addons/auto-gen/fluxcd.yaml | 37 ++++++---- vela-templates/addons/auto-gen/keda.yaml | 66 +++++++++++++++++ vela-templates/addons/auto-gen/kruise.yaml | 7 ++ .../addons/auto-gen/ocm-cluster-manager.yaml | 7 ++ .../addons/auto-gen/prometheus.yaml | 63 +++++++++++++++++ vela-templates/addons/auto-gen/terraform.yaml | 7 ++ .../addons/keda/resource/keda-rel.yaml | 18 +++++ .../addons/keda/resource/keda-repo.yaml | 8 +++ vela-templates/addons/keda/template.yaml | 21 ++++++ .../prometheus/resource/prometheus-rel.yaml | 15 ++++ .../prometheus/resource/prometheus-repo.yaml | 8 +++ .../addons/prometheus/template.yaml | 21 ++++++ vela-templates/gen_addons.go | 44 ++++++++++-- 19 files changed, 442 insertions(+), 21 deletions(-) create mode 100644 charts/vela-core/templates/addons/keda.yaml create mode 100644 charts/vela-core/templates/addons/prometheus.yaml create mode 100644 vela-templates/addons/auto-gen/keda.yaml create mode 100644 vela-templates/addons/auto-gen/prometheus.yaml create mode 100644 vela-templates/addons/keda/resource/keda-rel.yaml create mode 100644 vela-templates/addons/keda/resource/keda-repo.yaml create mode 100644 vela-templates/addons/keda/template.yaml create mode 100644 vela-templates/addons/prometheus/resource/prometheus-rel.yaml create mode 100644 vela-templates/addons/prometheus/resource/prometheus-repo.yaml create mode 100644 vela-templates/addons/prometheus/template.yaml diff --git a/charts/vela-core/templates/addons/fluxcd.yaml b/charts/vela-core/templates/addons/fluxcd.yaml index 46f6ba78d..ff9607b42 100644 --- a/charts/vela-core/templates/addons/fluxcd.yaml +++ b/charts/vela-core/templates/addons/fluxcd.yaml @@ -4486,3 +4486,4 @@ metadata: labels: addons.oam.dev/type: fluxcd name: fluxcd + namespace: {{.Values.systemDefinitionNamespace}} diff --git a/charts/vela-core/templates/addons/keda.yaml b/charts/vela-core/templates/addons/keda.yaml new file mode 100644 index 000000000..19c9004c1 --- /dev/null +++ b/charts/vela-core/templates/addons/keda.yaml @@ -0,0 +1,70 @@ +apiVersion: v1 +data: + initializer: | + apiVersion: core.oam.dev/v1beta1 + kind: Initializer + metadata: + annotations: + addons.oam.dev/description: KEDA is a Kubernetes-based Event Driven Autoscaler. + name: keda + namespace: keda + spec: + appTemplate: + spec: + components: + - name: keda + properties: + apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + metadata: + name: keda + namespace: keda + spec: + chart: + spec: + chart: keda + interval: 1m + sourceRef: + kind: HelmRepository + name: kedacore + namespace: keda + version: 2.3.2 + interval: 5m + values: + replicaCount: 1 + type: raw + - name: kedacore + properties: + apiVersion: source.toolkit.fluxcd.io/v1beta1 + kind: HelmRepository + metadata: + name: kedacore + namespace: keda + spec: + interval: 1m + url: https://kedacore.github.io/charts + type: raw + status: + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 + dependsOn: + - ref: + apiVersion: core.oam.dev/v1beta1 + kind: Initializer + name: fluxcd + namespace: flux-system + status: + observedGeneration: 0 +kind: ConfigMap +metadata: + annotations: + addons.oam.dev/description: KEDA is a Kubernetes-based Event Driven Autoscaler. + labels: + addons.oam.dev/type: keda + name: keda + namespace: {{.Values.systemDefinitionNamespace}} diff --git a/charts/vela-core/templates/addons/kruise.yaml b/charts/vela-core/templates/addons/kruise.yaml index cd5ea1bed..6118fa544 100644 --- a/charts/vela-core/templates/addons/kruise.yaml +++ b/charts/vela-core/templates/addons/kruise.yaml @@ -67,3 +67,4 @@ metadata: labels: addons.oam.dev/type: kruise name: kruise + namespace: {{.Values.systemDefinitionNamespace}} diff --git a/charts/vela-core/templates/addons/ocm-cluster-manager.yaml b/charts/vela-core/templates/addons/ocm-cluster-manager.yaml index 19fff3bff..5f30743db 100644 --- a/charts/vela-core/templates/addons/ocm-cluster-manager.yaml +++ b/charts/vela-core/templates/addons/ocm-cluster-manager.yaml @@ -434,3 +434,4 @@ metadata: labels: addons.oam.dev/type: ocm-cluster-manager name: ocm-cluster-manager + namespace: {{.Values.systemDefinitionNamespace}} diff --git a/charts/vela-core/templates/addons/prometheus.yaml b/charts/vela-core/templates/addons/prometheus.yaml new file mode 100644 index 000000000..07e7367c0 --- /dev/null +++ b/charts/vela-core/templates/addons/prometheus.yaml @@ -0,0 +1,67 @@ +apiVersion: v1 +data: + initializer: | + apiVersion: core.oam.dev/v1beta1 + kind: Initializer + metadata: + annotations: + addons.oam.dev/description: Prometheus is an open-source systems monitoring and alerting toolkit + name: prometheus + namespace: prometheus + spec: + appTemplate: + spec: + components: + - name: prometheus + properties: + apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + metadata: + name: prometheus + namespace: prometheus + spec: + chart: + spec: + chart: premetheus + interval: 1pm + sourceRef: + kind: HelmRepository + name: prometheus-community + namespace: premetheus + interval: 5m + type: raw + - name: prometheus-community + properties: + apiVersion: source.toolkit.fluxcd.io/v1beta1 + kind: HelmRepository + metadata: + name: prometheus-community + namespace: prometheus + spec: + interval: 1m + url: https://prometheus-community.github.io/helm-charts + type: raw + status: + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 + dependsOn: + - ref: + apiVersion: core.oam.dev/v1beta1 + kind: Initializer + name: fluxcd + namespace: flux-system + status: + observedGeneration: 0 +kind: ConfigMap +metadata: + annotations: + addons.oam.dev/description: Prometheus is an open-source systems monitoring and alerting toolkit + labels: + addons.oam.dev/type: prometheus + name: prometheus + namespace: {{.Values.systemDefinitionNamespace}} diff --git a/charts/vela-core/templates/addons/terraform.yaml b/charts/vela-core/templates/addons/terraform.yaml index 4d8b3f03e..89e3b498e 100644 --- a/charts/vela-core/templates/addons/terraform.yaml +++ b/charts/vela-core/templates/addons/terraform.yaml @@ -68,3 +68,4 @@ metadata: labels: addons.oam.dev/type: terraform name: terraform + namespace: {{.Values.systemDefinitionNamespace}} diff --git a/vela-templates/addons/auto-gen/fluxcd.yaml b/vela-templates/addons/auto-gen/fluxcd.yaml index 0b1f830f2..0ec1db119 100644 --- a/vela-templates/addons/auto-gen/fluxcd.yaml +++ b/vela-templates/addons/auto-gen/fluxcd.yaml @@ -1,19 +1,8 @@ -apiVersion: core.oam.dev/v1beta1 -kind: ComponentDefinition +apiVersion: v1 +kind: Namespace metadata: - annotations: - definition.oam.dev/description: kustomize can fetching, building, updating and applying Kustomize manifests from git repo. - name: kustomize - namespace: vela-system -spec: - schematic: - cue: - template: "output: {\n\tapiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\tkind: \"GitRepository\"\n\tmetadata: {\n\t\tname: context.name\n\t}\n\tspec: {\n\t\tinterval: parameter.pull_interval\n\t\turl: parameter.repo_url\n\t\tref: branch: parameter.branch\n\t}\n}\noutputs: kustomize: {\n\tapiVersion: \"kustomize.toolkit.fluxcd.io/v1beta1\"\n\tkind: \"Kustomization\"\n\tmetadata: {\n\t\tname: context.name\n\t}\n\tspec: {\n\t\tinterval: parameter.pull_interval\n\t\tsourceRef: {\n\t\t\tkind: \"GitRepository\"\n\t\t\tname: context.name\n\t\t}\n\t\tpath: parameter.path\n\t\tprune: true\n\t\tvalidation: \"client\"\n\t}\n}\nparameter: {\n\t//+usage=The repository URL, can be a HTTP/S or SSH address.\n\trepo_url: string\n\t//+usage=The interval at which to check for repository updates.\n\tpull_interval: *\"1m\" | string\n\t//+usage=The Git reference to checkout and monitor for changes, defaults to master branch.\n\tbranch: *\"master\" | string\n\t//+usage=Path to the directory containing the kustomization.yaml file, or the set of plain YAMLs a kustomization.yaml should be generated for.\n\tpath: string\n}\n" - workload: - definition: - apiVersion: "" - kind: "" - type: autodetects.core.oam.dev + name: flux-system +spec: {} status: {} --- apiVersion: core.oam.dev/v1beta1 @@ -4494,3 +4483,21 @@ spec: upgradedReplicas: 0 status: observedGeneration: 0 +--- +apiVersion: core.oam.dev/v1beta1 +kind: ComponentDefinition +metadata: + annotations: + definition.oam.dev/description: kustomize can fetching, building, updating and applying Kustomize manifests from git repo. + name: kustomize + namespace: vela-system +spec: + schematic: + cue: + template: "output: {\n\tapiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\tkind: \"GitRepository\"\n\tmetadata: {\n\t\tname: context.name\n\t}\n\tspec: {\n\t\tinterval: parameter.pull_interval\n\t\turl: parameter.repo_url\n\t\tref: branch: parameter.branch\n\t}\n}\noutputs: kustomize: {\n\tapiVersion: \"kustomize.toolkit.fluxcd.io/v1beta1\"\n\tkind: \"Kustomization\"\n\tmetadata: {\n\t\tname: context.name\n\t}\n\tspec: {\n\t\tinterval: parameter.pull_interval\n\t\tsourceRef: {\n\t\t\tkind: \"GitRepository\"\n\t\t\tname: context.name\n\t\t}\n\t\tpath: parameter.path\n\t\tprune: true\n\t\tvalidation: \"client\"\n\t}\n}\nparameter: {\n\t//+usage=The repository URL, can be a HTTP/S or SSH address.\n\trepo_url: string\n\t//+usage=The interval at which to check for repository updates.\n\tpull_interval: *\"1m\" | string\n\t//+usage=The Git reference to checkout and monitor for changes, defaults to master branch.\n\tbranch: *\"master\" | string\n\t//+usage=Path to the directory containing the kustomization.yaml file, or the set of plain YAMLs a kustomization.yaml should be generated for.\n\tpath: string\n}\n" + workload: + definition: + apiVersion: "" + kind: "" + type: autodetects.core.oam.dev +status: {} diff --git a/vela-templates/addons/auto-gen/keda.yaml b/vela-templates/addons/auto-gen/keda.yaml new file mode 100644 index 000000000..9ee653960 --- /dev/null +++ b/vela-templates/addons/auto-gen/keda.yaml @@ -0,0 +1,66 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: keda +spec: {} +status: {} +--- +apiVersion: core.oam.dev/v1beta1 +kind: Initializer +metadata: + annotations: + addons.oam.dev/description: KEDA is a Kubernetes-based Event Driven Autoscaler. + name: keda + namespace: keda +spec: + appTemplate: + spec: + components: + - name: keda + properties: + apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + metadata: + name: keda + namespace: keda + spec: + chart: + spec: + chart: keda + interval: 1m + sourceRef: + kind: HelmRepository + name: kedacore + namespace: keda + version: 2.3.2 + interval: 5m + values: + replicaCount: 1 + type: raw + - name: kedacore + properties: + apiVersion: source.toolkit.fluxcd.io/v1beta1 + kind: HelmRepository + metadata: + name: kedacore + namespace: keda + spec: + interval: 1m + url: https://kedacore.github.io/charts + type: raw + status: + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 + dependsOn: + - ref: + apiVersion: core.oam.dev/v1beta1 + kind: Initializer + name: fluxcd + namespace: flux-system +status: + observedGeneration: 0 diff --git a/vela-templates/addons/auto-gen/kruise.yaml b/vela-templates/addons/auto-gen/kruise.yaml index 6795ec1ad..55eee76ed 100644 --- a/vela-templates/addons/auto-gen/kruise.yaml +++ b/vela-templates/addons/auto-gen/kruise.yaml @@ -1,3 +1,10 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: kruise-system +spec: {} +status: {} +--- apiVersion: core.oam.dev/v1beta1 kind: Initializer metadata: diff --git a/vela-templates/addons/auto-gen/ocm-cluster-manager.yaml b/vela-templates/addons/auto-gen/ocm-cluster-manager.yaml index 98662aac9..95aac2574 100644 --- a/vela-templates/addons/auto-gen/ocm-cluster-manager.yaml +++ b/vela-templates/addons/auto-gen/ocm-cluster-manager.yaml @@ -1,3 +1,10 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: open-cluster-management +spec: {} +status: {} +--- apiVersion: core.oam.dev/v1beta1 kind: Initializer metadata: diff --git a/vela-templates/addons/auto-gen/prometheus.yaml b/vela-templates/addons/auto-gen/prometheus.yaml new file mode 100644 index 000000000..ee1f74b81 --- /dev/null +++ b/vela-templates/addons/auto-gen/prometheus.yaml @@ -0,0 +1,63 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: prometheus +spec: {} +status: {} +--- +apiVersion: core.oam.dev/v1beta1 +kind: Initializer +metadata: + annotations: + addons.oam.dev/description: Prometheus is an open-source systems monitoring and alerting toolkit + name: prometheus + namespace: prometheus +spec: + appTemplate: + spec: + components: + - name: prometheus + properties: + apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + metadata: + name: prometheus + namespace: prometheus + spec: + chart: + spec: + chart: premetheus + interval: 1pm + sourceRef: + kind: HelmRepository + name: prometheus-community + namespace: premetheus + interval: 5m + type: raw + - name: prometheus-community + properties: + apiVersion: source.toolkit.fluxcd.io/v1beta1 + kind: HelmRepository + metadata: + name: prometheus-community + namespace: prometheus + spec: + interval: 1m + url: https://prometheus-community.github.io/helm-charts + type: raw + status: + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 + dependsOn: + - ref: + apiVersion: core.oam.dev/v1beta1 + kind: Initializer + name: fluxcd + namespace: flux-system +status: + observedGeneration: 0 diff --git a/vela-templates/addons/auto-gen/terraform.yaml b/vela-templates/addons/auto-gen/terraform.yaml index 7a3cbc8d5..a1c0cfd62 100644 --- a/vela-templates/addons/auto-gen/terraform.yaml +++ b/vela-templates/addons/auto-gen/terraform.yaml @@ -1,3 +1,10 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: tc-system +spec: {} +status: {} +--- apiVersion: core.oam.dev/v1beta1 kind: Initializer metadata: diff --git a/vela-templates/addons/keda/resource/keda-rel.yaml b/vela-templates/addons/keda/resource/keda-rel.yaml new file mode 100644 index 000000000..353d92281 --- /dev/null +++ b/vela-templates/addons/keda/resource/keda-rel.yaml @@ -0,0 +1,18 @@ +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: keda + namespace: keda +spec: + interval: 5m + chart: + spec: + chart: keda + sourceRef: + kind: HelmRepository + name: kedacore + namespace: keda + version: 2.3.2 + interval: 1m + values: + replicaCount: 1 diff --git a/vela-templates/addons/keda/resource/keda-repo.yaml b/vela-templates/addons/keda/resource/keda-repo.yaml new file mode 100644 index 000000000..35d08381d --- /dev/null +++ b/vela-templates/addons/keda/resource/keda-repo.yaml @@ -0,0 +1,8 @@ +kind: HelmRepository +apiVersion: source.toolkit.fluxcd.io/v1beta1 +metadata: + name: kedacore + namespace: keda +spec: + interval: 1m + url: https://kedacore.github.io/charts \ No newline at end of file diff --git a/vela-templates/addons/keda/template.yaml b/vela-templates/addons/keda/template.yaml new file mode 100644 index 000000000..2bd9883ba --- /dev/null +++ b/vela-templates/addons/keda/template.yaml @@ -0,0 +1,21 @@ +apiVersion: core.oam.dev/v1beta1 +kind: Initializer +metadata: + annotations: + addons.oam.dev/description: "KEDA is a Kubernetes-based Event Driven Autoscaler." + name: keda + namespace: keda +spec: + dependsOn: + - ref: + apiVersion: core.oam.dev/v1beta1 + kind: Initializer + name: fluxcd + namespace: flux-system + appTemplate: + spec: + components: {{ range .ResourceFiles }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 12 }} {{ end }} \ No newline at end of file diff --git a/vela-templates/addons/prometheus/resource/prometheus-rel.yaml b/vela-templates/addons/prometheus/resource/prometheus-rel.yaml new file mode 100644 index 000000000..c8489c61f --- /dev/null +++ b/vela-templates/addons/prometheus/resource/prometheus-rel.yaml @@ -0,0 +1,15 @@ +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: prometheus + namespace: prometheus +spec: + interval: 5m + chart: + spec: + chart: premetheus + sourceRef: + kind: HelmRepository + name: prometheus-community + namespace: premetheus + interval: 1pm diff --git a/vela-templates/addons/prometheus/resource/prometheus-repo.yaml b/vela-templates/addons/prometheus/resource/prometheus-repo.yaml new file mode 100644 index 000000000..36f89db11 --- /dev/null +++ b/vela-templates/addons/prometheus/resource/prometheus-repo.yaml @@ -0,0 +1,8 @@ +kind: HelmRepository +apiVersion: source.toolkit.fluxcd.io/v1beta1 +metadata: + name: prometheus-community + namespace: prometheus +spec: + interval: 1m + url: https://prometheus-community.github.io/helm-charts \ No newline at end of file diff --git a/vela-templates/addons/prometheus/template.yaml b/vela-templates/addons/prometheus/template.yaml new file mode 100644 index 000000000..60a49f034 --- /dev/null +++ b/vela-templates/addons/prometheus/template.yaml @@ -0,0 +1,21 @@ +apiVersion: core.oam.dev/v1beta1 +kind: Initializer +metadata: + annotations: + addons.oam.dev/description: "Prometheus is an open-source systems monitoring and alerting toolkit" + name: prometheus + namespace: prometheus +spec: + dependsOn: + - ref: + apiVersion: core.oam.dev/v1beta1 + kind: Initializer + name: fluxcd + namespace: flux-system + appTemplate: + spec: + components: {{ range .ResourceFiles }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 12 }} {{ end }} \ No newline at end of file diff --git a/vela-templates/gen_addons.go b/vela-templates/gen_addons.go index 4402a61e1..85cee3927 100644 --- a/vela-templates/gen_addons.go +++ b/vela-templates/gen_addons.go @@ -57,6 +57,9 @@ const ( // MarkLabel is annotation key marks configMap as an addon MarkLabel = "addons.oam.dev/type" + + // ChartTemplateNamespace is placeholder for helm chart + ChartTemplateNamespace = "{{.Values.systemDefinitionNamespace}}" ) type velaFile struct { @@ -199,11 +202,16 @@ func setConfigMapAnnotations(addonInfo *AddonInfo) map[string]string { } } func removeTimestampInplace(s *string) { - clearStr := "(\n.*?metadata:.*?)?\n.*?creationTimestamp:.*?null" - var re = regexp.MustCompile(clearStr) + timeStampwithApptemplate := "appTemplate:\n(.*metadata:)?\n[ ]*creationTimestamp: null" + re := regexp.MustCompile(timeStampwithApptemplate) + *s = re.ReplaceAllString(*s, "appTemplate:") + + pureTimeStamp := "\n[ ]*creationTimestamp: null" + re = regexp.MustCompile(pureTimeStamp) *s = re.ReplaceAllString(*s, "") } +// storeConfigMap store configMap in helm chart func storeConfigMap(addonInfo *AddonInfo, initializer *v1beta1.Initializer, storePath string) error { configMap := &corev1.ConfigMap{ TypeMeta: v1.TypeMeta{ @@ -213,7 +221,7 @@ func storeConfigMap(addonInfo *AddonInfo, initializer *v1beta1.Initializer, stor } addonInfo.Description = initializer.GetAnnotations()[DescAnnotation] configMap.SetName(addonInfo.Name) - configMap.SetNamespace(addonInfo.Namespace) + configMap.SetNamespace(ChartTemplateNamespace) configMap.SetAnnotations(setConfigMapAnnotations(addonInfo)) configMap.SetLabels(setConfigMapLabels(addonInfo)) @@ -230,15 +238,22 @@ func storeConfigMap(addonInfo *AddonInfo, initializer *v1beta1.Initializer, stor } raw := string(content) removeTimestampInplace(&raw) + raw = strings.ReplaceAll(raw, fmt.Sprintf("'%s'", ChartTemplateNamespace), ChartTemplateNamespace) filename := storePath + "/" + addonInfo.Name + ".yaml" return WriteToFile(filename, raw) } -func storeInitAndDef(init *v1beta1.Initializer, cds []*v1beta1.ComponentDefinition, addonPath string, addonName string) error { +// storeAutoGenResources store init/componentdefs/namespace in one file +func storeAutoGenResources(init *v1beta1.Initializer, cds []*v1beta1.ComponentDefinition, ns *corev1.Namespace, addonPath string, addonName string) error { initContent, err := yaml.Marshal(init) if err != nil { return err } + nsContent, err := yaml.Marshal(ns) + if err != nil { + return err + } + filename := path.Join(addonPath, InitializerFileDir, addonName+".yaml") splitter := "---\n" cdContents := make([]string, 0, len(cds)) @@ -249,7 +264,10 @@ func storeInitAndDef(init *v1beta1.Initializer, cds []*v1beta1.ComponentDefiniti } cdContents = append(cdContents, string(cdContent)) } - fileContent := strings.Join(append(cdContents, string(initContent)), splitter) + contents := []string{string(nsContent)} + contents = append(contents, string(initContent)) + contents = append(contents, cdContents...) + fileContent := strings.Join(contents, splitter) removeTimestampInplace(&fileContent) return WriteToFile(filename, fileContent) } @@ -270,6 +288,18 @@ func getComponentDefs(info *AddonInfo) ([]*v1beta1.ComponentDefinition, error) { return cds, nil } +func getNamespace(info *AddonInfo) *corev1.Namespace { + ns := corev1.Namespace{ + TypeMeta: v1.TypeMeta{APIVersion: "v1", Kind: "Namespace"}, + ObjectMeta: v1.ObjectMeta{Name: info.Namespace}, + } + return &ns +} + +func setAddonNamespace(info *AddonInfo, init *v1beta1.Initializer) { + info.Namespace = init.Namespace +} + func main() { var addonsPath string var storePath string @@ -296,7 +326,9 @@ func main() { dealErr(err) cds, err := getComponentDefs(addInfo) dealErr(err) - err = storeInitAndDef(init, cds, addonsPath, addInfo.Name) + setAddonNamespace(addInfo, init) + ns := getNamespace(addInfo) + err = storeAutoGenResources(init, cds, ns, addonsPath, addInfo.Name) dealErr(err) err = storeConfigMap(addInfo, init, storePath) dealErr(err)