Skip to content

Commit 6d7131b

Browse files
authored
Merge pull request #30 from jabbukka/helmrelease_type
Support HelmRelease's chart source type
2 parents 8388750 + 2d51927 commit 6d7131b

File tree

6 files changed

+123
-102
lines changed

6 files changed

+123
-102
lines changed

.github/workflows/deploy-image.yml

-1
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,4 @@ jobs:
1515
password: ${{ secrets.GITHUB_TOKEN }}
1616
registry: docker.pkg.github.com
1717
repository: ${{ github.repository }}/kustomize-helm-transformer
18-
tag_with_sha: true
1918
tag_with_ref: true

README.md

+24-18
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,28 @@ Please take a look at the [example](https://github.com/openinfradev/kustomize-he
1414
* go 1.14
1515

1616
## Features
17-
1. Inline value path transform
18-
2. Chart Ref transform
17+
1. Replaced values of HelmRelease CustomResource using inline path
18+
2. Replaced Chart Source of HelmRelease CustomResource
1919

2020
## Example
2121
### Source HelmRelease
2222
```
2323
apiVersion: helm.fluxcd.io/v1
2424
kind: HelmRelease
2525
metadata:
26-
name: glance
26+
name: prometheus
2727
spec:
2828
chart:
29-
git: https://github.com/openstack/openstack-helm.git
30-
path: glance
31-
ref: master
32-
releaseName: glance
33-
targetNamespace: openstack
29+
repository: https://prometheus-community.github.io/helm-charts
30+
name: kube-prometheus-stack
31+
version: 14.5.0
32+
type: helmrepo
33+
releaseName: prometheus
34+
targetNamespace: lma
3435
values:
3536
conf:
3637
ceph:
37-
admin_keyring: admin_keyring
38+
admin_keyring: TO_BE_FIXED
3839
enabled: false
3940
```
4041
### Transformer Configuration
@@ -46,8 +47,12 @@ metadata:
4647
global:
4748
docker_registry: registry.cicd.stg.taco
4849
charts:
49-
- chartName: glance
50-
chartRef: taco-k8s-v20.07
50+
- name: prometheus
51+
source:
52+
repository: [email protected]:helm/charts
53+
version: master
54+
name: charts/stable/prometheus-operator
55+
type: git
5156
override:
5257
conf.ceph.admin_keyring: abcde
5358
conf.ceph.enabled: true
@@ -57,17 +62,18 @@ charts:
5762
apiVersion: helm.fluxcd.io/v1
5863
kind: HelmRelease
5964
metadata:
60-
name: glance
65+
name: prometheus
6166
spec:
6267
chart:
63-
git: https://github.com/openstack/openstack-helm.git
64-
path: glance
65-
ref: taco-k8s-v20.07
66-
releaseName: glance
67-
targetNamespace: openstack
68+
repository: [email protected]:helm/charts
69+
version: master
70+
name: charts/stable/prometheus-operator
71+
type: git
72+
releaseName: prometheus
73+
targetNamespace: lma
6874
values:
6975
conf:
7076
ceph:
71-
admin_keyring: admin_keyring
77+
admin_keyring: abcde
7278
enabled: true
7379
```

plugin/openinfradev.github.com/v1/helmvaluestransformer/HelmValuesTransformer.go

+17-2
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ type ReplacedChart struct {
3636
}
3737

3838
// ChartSource defines the source of helm chart
39-
// TODO: support to use git source
4039
type ChartSource struct {
4140
Repository string `json:"repository,omitempty" yaml:"repository,omitempty"`
4241
Name string `json:"name,omitempty" yaml:"name,omitempty"`
43-
Version string `json:"version,omitempty" yamal:"version,omitempty"`
42+
Version string `json:"version,omitempty" yaml:"version,omitempty"`
43+
Type string `json:"type,omitempty" yaml:"type,omitempty"`
4444
}
4545

4646
//nolint: golint
@@ -129,6 +129,21 @@ func (p *plugin) replaceChartSource(origin map[string]interface{}, chartSource C
129129
chart["version"] = version
130130
}
131131

132+
if chartSource.Name != "" {
133+
name, err := p.replaceGlobalVar(chartSource.Name)
134+
if err != nil {
135+
return err
136+
}
137+
chart["name"] = name
138+
}
139+
140+
if chartSource.Type != "" {
141+
chartType, err := p.replaceGlobalVar(chartSource.Type)
142+
if err != nil {
143+
return err
144+
}
145+
chart["type"] = chartType
146+
}
132147
return nil
133148
}
134149

plugin/openinfradev.github.com/v1/helmvaluestransformer/HelmValuesTransformer_test.go

+57
Original file line numberDiff line numberDiff line change
@@ -336,3 +336,60 @@ spec:
336336
enabled: false
337337
`)
338338
}
339+
340+
func TestGitChartSource(t *testing.T) {
341+
th := kusttest_test.MakeEnhancedHarness(t).
342+
BuildGoPlugin("openinfradev.github.com", "v1", "HelmValuesTransformer")
343+
defer th.Reset()
344+
345+
rm := th.LoadAndRunTransformer(`
346+
apiVersion: openinfradev.github.com/v1
347+
kind: HelmValuesTransformer
348+
metadata:
349+
name: site
350+
charts:
351+
- name: kube-prometheus-stack
352+
source:
353+
repository: [email protected]:helm/charts
354+
version: master
355+
name: charts/stable/prometheus-operator
356+
type: git
357+
`, `
358+
apiVersion: helm.fluxcd.io/v1
359+
kind: HelmRelease
360+
metadata:
361+
name: kube-prometheus-stack
362+
spec:
363+
chart:
364+
name: TO_BE_FIXED
365+
repository: TO_BE_FIXED
366+
version: TO_BE_FIXED
367+
type: TO_BE_FIXED
368+
releaseName: kube-prometheus-stack
369+
targetNamespace: lma
370+
values:
371+
conf:
372+
ceph:
373+
admin_keyring: abcde
374+
enabled: true
375+
`)
376+
th.AssertActualEqualsExpected(rm, `
377+
apiVersion: helm.fluxcd.io/v1
378+
kind: HelmRelease
379+
metadata:
380+
name: kube-prometheus-stack
381+
spec:
382+
chart:
383+
name: charts/stable/prometheus-operator
384+
repository: [email protected]:helm/charts
385+
type: git
386+
version: master
387+
releaseName: kube-prometheus-stack
388+
targetNamespace: lma
389+
values:
390+
conf:
391+
ceph:
392+
admin_keyring: abcde
393+
enabled: true
394+
`)
395+
}

plugin/openinfradev.github.com/v1/helmvaluestransformer/go.mod

+9-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@ module github.com/openinfradev/kustomize-helm-transformer/openinfradev.github.co
33
go 1.14
44

55
require (
6+
github.com/google/go-cmp v0.5.2 // indirect
7+
github.com/kr/text v0.2.0 // indirect
8+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
9+
github.com/pkg/errors v0.9.1 // indirect
10+
github.com/stretchr/testify v1.6.1 // indirect
11+
golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
12+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
13+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
14+
k8s.io/client-go v0.18.10 // indirect
615
sigs.k8s.io/kustomize/api v0.6.5
7-
sigs.k8s.io/kustomize/kustomize/v3 v3.8.7 // indirect
816
sigs.k8s.io/kustomize/kyaml v0.9.4
9-
sigs.k8s.io/yaml v1.2.0
1017
)

0 commit comments

Comments
 (0)