diff --git a/go.mod b/go.mod index 99b6a7100a..f03d72aeb0 100644 --- a/go.mod +++ b/go.mod @@ -98,7 +98,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/rakelkar/gonetsh v0.0.0-20190719023240-501daadcadf8 // indirect github.com/rancher/dynamiclistener v0.2.0 - github.com/rancher/helm-controller v0.6.2 + github.com/rancher/helm-controller v0.6.3 github.com/rancher/kine v0.4.0 github.com/rancher/remotedialer v0.2.0 github.com/rancher/wrangler v0.6.1 diff --git a/go.sum b/go.sum index 97bef911f3..3945bcd18c 100644 --- a/go.sum +++ b/go.sum @@ -626,8 +626,8 @@ github.com/rancher/dynamiclistener v0.2.0 h1:KucYwJXVVGhZ/NndfMCeQoCafT/VN7kvqSG github.com/rancher/dynamiclistener v0.2.0/go.mod h1:fs/dxyNcB3YT6W9fVz4bDGfhmSQS17QQup6BIcGF++s= github.com/rancher/flannel v0.11.0-k3s.2 h1:0GVr5ORAIvcri1LYTE8eMQ+NrRbuPeIniPaW51IzLco= github.com/rancher/flannel v0.11.0-k3s.2/go.mod h1:Hn4ZV+eq0LhLZP63xZnxdGwXEoRSxs5sxELxu27M3UA= -github.com/rancher/helm-controller v0.6.2 h1:YUj8YHFyaMInu52GfA7KeXQQg8uOvwHpBqDUwFzLsIk= -github.com/rancher/helm-controller v0.6.2/go.mod h1:ZylsxIMGNADRPRNW+NiBWhrwwks9vnKLQiCHYWb6Bi0= +github.com/rancher/helm-controller v0.6.3 h1:tsqSXndQ7Ms8S0mBd2zWOcTV1tiZ4BUYkemYnijNXio= +github.com/rancher/helm-controller v0.6.3/go.mod h1:ZylsxIMGNADRPRNW+NiBWhrwwks9vnKLQiCHYWb6Bi0= github.com/rancher/kine v0.4.0 h1:1IhWy3TzjExG8xnj46eyUEWdzqNAD1WrgL4eEBKm6Uc= github.com/rancher/kine v0.4.0/go.mod h1:IImtCJ68AIkE+VY/kUI0NkyJL5q5WzO8QvMsSXqbrpA= github.com/rancher/kubernetes v1.18.3-k3s1 h1:QYh2MY+odOzBQedwClFdX1tRtYQADaFRWi+etbBJvuU= diff --git a/scripts/airgap/image-list.txt b/scripts/airgap/image-list.txt index c1c28eaefd..06f9812b36 100644 --- a/scripts/airgap/image-list.txt +++ b/scripts/airgap/image-list.txt @@ -1,5 +1,5 @@ docker.io/rancher/coredns-coredns:1.6.3 -docker.io/rancher/klipper-helm:v0.2.6 +docker.io/rancher/klipper-helm:v0.2.7 docker.io/rancher/klipper-lb:v0.1.2 docker.io/rancher/library-traefik:1.7.19 docker.io/rancher/local-path-provisioner:v0.0.14 diff --git a/vendor/github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1/types.go b/vendor/github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1/types.go index 2928beb0c0..42166b970d 100644 --- a/vendor/github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1/types.go +++ b/vendor/github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1/types.go @@ -25,6 +25,7 @@ type HelmChartSpec struct { ValuesContent string `json:"valuesContent,omitempty"` HelmVersion string `json:"helmVersion,omitempty"` Bootstrap bool `json:"bootstrap,omitempty"` + ChartContent string `json:"chartContent,omitempty"` } type HelmChartStatus struct { diff --git a/vendor/github.com/rancher/helm-controller/pkg/helm/controller.go b/vendor/github.com/rancher/helm-controller/pkg/helm/controller.go index 07a1c71d3b..46991ae2e5 100644 --- a/vendor/github.com/rancher/helm-controller/pkg/helm/controller.go +++ b/vendor/github.com/rancher/helm-controller/pkg/helm/controller.go @@ -39,7 +39,7 @@ type Controller struct { } const ( - image = "rancher/klipper-helm:v0.2.6" + image = "rancher/klipper-helm:v0.2.7" Label = "helmcharts.helm.cattle.io/chart" CRDName = "helmcharts.helm.cattle.io" Name = "helm-controller" @@ -94,17 +94,20 @@ func (c *Controller) OnHelmChanged(key string, chart *helmv1.HelmChart) (*helmv1 return nil, nil } - if chart.Spec.Chart == "" { + if chart.Spec.Chart == "" && chart.Spec.ChartContent == "" { return chart, nil } objs := objectset.NewObjectSet() - job, configMap := job(chart) + job, valuesConfigMap, contentConfigMap := job(chart) objs.Add(serviceAccount(chart)) objs.Add(roleBinding(chart)) objs.Add(job) - if configMap != nil { - objs.Add(configMap) + if valuesConfigMap != nil { + objs.Add(valuesConfigMap) + } + if contentConfigMap != nil { + objs.Add(contentConfigMap) } if err := c.apply.WithOwner(chart).Apply(objs); err != nil { @@ -120,7 +123,7 @@ func (c *Controller) OnHelmRemove(key string, chart *helmv1.HelmChart) (*helmv1. if chart.Spec.Chart == "" { return chart, nil } - job, _ := job(chart) + job, _, _ := job(chart) job, err := c.jobsCache.Get(chart.Namespace, job.Name) if errors.IsNotFound(err) { @@ -147,7 +150,7 @@ func (c *Controller) OnHelmRemove(key string, chart *helmv1.HelmChart) (*helmv1. return newChart, c.apply.WithOwner(newChart).Apply(objectset.NewObjectSet()) } -func job(chart *helmv1.HelmChart) (*batch.Job, *core.ConfigMap) { +func job(chart *helmv1.HelmChart) (*batch.Job, *core.ConfigMap, *core.ConfigMap) { oneThousand := int32(1000) valuesHash := sha256.Sum256([]byte(chart.Spec.ValuesContent)) @@ -247,35 +250,13 @@ func job(chart *helmv1.HelmChart) (*batch.Job, *core.ConfigMap) { } setProxyEnv(job) - configMap := configMap(chart) - if configMap == nil { - return job, nil - } + valueConfigMap := setValuesConfigMap(job, chart) + contentConfigMap := setContentConfigMap(job, chart) - job.Spec.Template.Spec.Volumes = []core.Volume{ - { - Name: "values", - VolumeSource: core.VolumeSource{ - ConfigMap: &core.ConfigMapVolumeSource{ - LocalObjectReference: core.LocalObjectReference{ - Name: configMap.Name, - }, - }, - }, - }, - } - - job.Spec.Template.Spec.Containers[0].VolumeMounts = []core.VolumeMount{ - { - MountPath: "/config", - Name: "values", - }, - } - - return job, configMap + return job, valueConfigMap, contentConfigMap } -func configMap(chart *helmv1.HelmChart) *core.ConfigMap { +func valuesConfigMap(chart *helmv1.HelmChart) *core.ConfigMap { if chart.Spec.ValuesContent == "" { return nil } @@ -402,3 +383,80 @@ func setProxyEnv(job *batch.Job) { envar) } } + +func contentConfigMap(chart *helmv1.HelmChart) *core.ConfigMap { + if chart.Spec.ChartContent == "" { + return nil + } + return &core.ConfigMap{ + TypeMeta: meta.TypeMeta{ + APIVersion: "v1", + Kind: "ConfigMap", + }, + ObjectMeta: meta.ObjectMeta{ + Name: fmt.Sprintf("chart-content-%s", chart.Name), + Namespace: chart.Namespace, + }, + Data: map[string]string{ + fmt.Sprintf("%s.tgz.base64", chart.Name): chart.Spec.ChartContent, + }, + } +} + +func setValuesConfigMap(job *batch.Job, chart *helmv1.HelmChart) *core.ConfigMap { + configMap := valuesConfigMap(chart) + if configMap == nil { + return nil + } + + job.Spec.Template.Spec.Volumes = append(job.Spec.Template.Spec.Volumes, []core.Volume{ + { + Name: "values", + VolumeSource: core.VolumeSource{ + ConfigMap: &core.ConfigMapVolumeSource{ + LocalObjectReference: core.LocalObjectReference{ + Name: configMap.Name, + }, + }, + }, + }, + }...) + + job.Spec.Template.Spec.Containers[0].VolumeMounts = append(job.Spec.Template.Spec.Containers[0].VolumeMounts, []core.VolumeMount{ + { + MountPath: "/config", + Name: "values", + }, + }...) + + return configMap +} + +func setContentConfigMap(job *batch.Job, chart *helmv1.HelmChart) *core.ConfigMap { + configMap := contentConfigMap(chart) + if configMap == nil { + return nil + } + + job.Spec.Template.Spec.Volumes = append(job.Spec.Template.Spec.Volumes, []core.Volume{ + { + Name: "content", + VolumeSource: core.VolumeSource{ + ConfigMap: &core.ConfigMapVolumeSource{ + LocalObjectReference: core.LocalObjectReference{ + Name: configMap.Name, + }, + }, + }, + }, + }...) + + job.Spec.Template.Spec.Containers[0].VolumeMounts = append(job.Spec.Template.Spec.Containers[0].VolumeMounts, []core.VolumeMount{ + { + MountPath: "/chart", + Name: "content", + }, + }...) + + return configMap +} diff --git a/vendor/modules.txt b/vendor/modules.txt index bfb0807601..f86838fccf 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -727,7 +727,7 @@ github.com/rancher/dynamiclistener/factory github.com/rancher/dynamiclistener/storage/file github.com/rancher/dynamiclistener/storage/kubernetes github.com/rancher/dynamiclistener/storage/memory -# github.com/rancher/helm-controller v0.6.2 +# github.com/rancher/helm-controller v0.6.3 github.com/rancher/helm-controller/pkg/apis/helm.cattle.io github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1 github.com/rancher/helm-controller/pkg/generated/clientset/versioned