Update helm controller to 0.6.3 (#1931)

* update helm controller to 0.6.3

* update klipper-helm to v0.2.7
This commit is contained in:
Hussein Galal 2020-06-21 19:12:54 +02:00 committed by GitHub
parent 556d2ad65c
commit 01035ba9df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 97 additions and 38 deletions

2
go.mod
View File

@ -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

4
go.sum
View File

@ -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=

View File

@ -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

View File

@ -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 {

View File

@ -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
}

2
vendor/modules.txt vendored
View File

@ -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