Skip to content

Commit 5b51722

Browse files
authored
Merge pull request #5293 from ardikabs/fix/5164
fix: local helm chart with version but no repo
2 parents f87942e + 6640f87 commit 5b51722

File tree

8 files changed

+349
-43
lines changed

8 files changed

+349
-43
lines changed

api/internal/builtins/HelmChartInflationGenerator.go

Lines changed: 10 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/krusty/helmchartinflationgenerator_test.go

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,123 @@ metadata:
567567
`)
568568
}
569569

570+
// Reference: https://github.com/kubernetes-sigs/kustomize/issues/5163
571+
func TestHelmChartInflationGeneratorForMultipleChartsDifferentVersion(t *testing.T) {
572+
th := kusttest_test.MakeEnhancedHarnessWithTmpRoot(t)
573+
defer th.Reset()
574+
if err := th.ErrIfNoHelm(); err != nil {
575+
t.Skip("skipping: " + err.Error())
576+
}
577+
578+
copyValuesFilesTestChartsIntoHarness(t, th)
579+
580+
th.WriteK(th.GetRoot(), `
581+
namespace: default
582+
helmCharts:
583+
- name: test-chart
584+
releaseName: test
585+
version: 1.0.0
586+
skipTests: true
587+
- name: minecraft
588+
repo: https://itzg.github.io/minecraft-server-charts
589+
version: 3.1.3
590+
releaseName: test-1
591+
- name: minecraft
592+
repo: https://itzg.github.io/minecraft-server-charts
593+
version: 3.1.4
594+
releaseName: test-2
595+
`)
596+
597+
m := th.Run(th.GetRoot(), th.MakeOptionsPluginsEnabled())
598+
th.AssertActualEqualsExpected(m, `
599+
apiVersion: apps/v1
600+
kind: Deployment
601+
metadata:
602+
labels:
603+
chart: test-1.0.0
604+
name: my-deploy
605+
namespace: default
606+
spec:
607+
replicas: 1
608+
selector:
609+
matchLabels:
610+
app: test
611+
template:
612+
spec:
613+
containers:
614+
- image: test-image:v1.0.0
615+
imagePullPolicy: Always
616+
---
617+
apiVersion: v1
618+
data:
619+
rcon-password: Q0hBTkdFTUUh
620+
kind: Secret
621+
metadata:
622+
labels:
623+
app: test-1-minecraft
624+
chart: minecraft-3.1.3
625+
heritage: Helm
626+
release: test-1
627+
name: test-1-minecraft
628+
namespace: default
629+
type: Opaque
630+
---
631+
apiVersion: v1
632+
kind: Service
633+
metadata:
634+
labels:
635+
app: test-1-minecraft
636+
chart: minecraft-3.1.3
637+
heritage: Helm
638+
release: test-1
639+
name: test-1-minecraft
640+
namespace: default
641+
spec:
642+
ports:
643+
- name: minecraft
644+
port: 25565
645+
protocol: TCP
646+
targetPort: minecraft
647+
selector:
648+
app: test-1-minecraft
649+
type: ClusterIP
650+
---
651+
apiVersion: v1
652+
data:
653+
rcon-password: Q0hBTkdFTUUh
654+
kind: Secret
655+
metadata:
656+
labels:
657+
app: test-2-minecraft
658+
chart: minecraft-3.1.4
659+
heritage: Helm
660+
release: test-2
661+
name: test-2-minecraft
662+
namespace: default
663+
type: Opaque
664+
---
665+
apiVersion: v1
666+
kind: Service
667+
metadata:
668+
labels:
669+
app: test-2-minecraft
670+
chart: minecraft-3.1.4
671+
heritage: Helm
672+
release: test-2
673+
name: test-2-minecraft
674+
namespace: default
675+
spec:
676+
ports:
677+
- name: minecraft
678+
port: 25565
679+
protocol: TCP
680+
targetPort: minecraft
681+
selector:
682+
app: test-2-minecraft
683+
type: ClusterIP
684+
`)
685+
}
686+
570687
func copyValuesFilesTestChartsIntoHarness(t *testing.T, th *kusttest_test.HarnessEnhanced) {
571688
t.Helper()
572689

go.work.sum

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCv
7272
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
7373
github.com/flowstack/go-jsonschema v0.1.1 h1:dCrjGJRXIlbDsLAgTJZTjhwUJnnxVWl1OgNyYh5nyDc=
7474
github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk=
75-
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
7675
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=
7776
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=
7877
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=
@@ -149,8 +148,6 @@ github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
149148
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5 h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78=
150149
github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
151150
github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo=
152-
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
153-
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
154151
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
155152
github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw=
156153
github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ=
@@ -211,51 +208,21 @@ golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7
211208
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs=
212209
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
213210
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
214-
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
215211
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
216212
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
217213
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
218214
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
219215
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
220-
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
221-
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
222-
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
223216
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
224217
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
225218
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
219+
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
220+
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
226221
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
222+
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
223+
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
227224
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
228-
golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
229225
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
230226
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
231-
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
232-
gomodules.xyz/jsonpatch/v2 v2.0.1 h1:xyiBuvkD2g5n7cYzx6u2sxQvsAy4QJsZFCzGVdzOXZ0=
233-
gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485 h1:OB/uP/Puiu5vS5QMRPrXCDWUPb+kt8f1KW8oQzFejQw=
234-
gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e h1:jRyg0XfpwWlhEV8mDfdNGBeSJM2fuyh9Yjrnd8kF2Ts=
235-
google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w=
236-
google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368 h1:Et6SkiuvnBn+SgrSYXs/BrUpGB4mbdwt4R3vaPIlicA=
237-
google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q=
238-
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
239-
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
240-
gopkg.in/cheggaaa/pb.v1 v1.0.25 h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I=
241-
gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=
242-
gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
243-
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
244-
gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=
245-
gopkg.in/square/go-jose.v2 v2.2.2 h1:orlkJ3myw8CN1nVQHBFfloD+L3egixIa4FvUP6RosSA=
246-
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
247-
honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=
248-
k8s.io/apiserver v0.17.0 h1:XhUix+FKFDcBygWkQNp7wKKvZL030QUlH1o8vFeSgZA=
249-
k8s.io/code-generator v0.17.0 h1:y+KWtDWNqlJzJu/kUy8goJZO0X71PGIpAHLX8a0JYk0=
250-
k8s.io/component-base v0.17.0 h1:BnDFcmBDq+RPpxXjmuYnZXb59XNN9CaFrX8ba9+3xrA=
251-
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c h1:GohjlNKauSai7gN4wsJkeZ3WAJx4Sh+oT/b5IYn5suA=
252227
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
253-
modernc.org/cc v1.0.0 h1:nPibNuDEx6tvYrUAtvDTTw98rx5juGsa5zuDnKwEEQQ=
254-
modernc.org/golex v1.0.0 h1:wWpDlbK8ejRfSyi0frMyhilD3JBvtcx2AdGDnU+JtsE=
255-
modernc.org/mathutil v1.0.0 h1:93vKjrJopTPrtTNpZ8XIovER7iCIH1QU7wNbOQXC60I=
256-
modernc.org/strutil v1.0.0 h1:XVFtQwFVwc02Wk+0L/Z/zDDXO81r5Lhe6iMKmGX3KhE=
257-
modernc.org/xc v1.0.0 h1:7ccXrupWZIS3twbUGrtKmHS2DXY6xegFua+6O3xgAFU=
258-
rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
259-
rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=
260-
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
261228
sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 h1:zD2IemQ4LmOcAumeiyDWXKUI2SO0NYDe3H6QGvPOVgU=

plugin/builtin/helmchartinflationgenerator/HelmChartInflationGenerator.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func (p *plugin) validateArgs() (err error) {
9797
// be under the loader root (unless root restrictions are
9898
// disabled).
9999
if p.ValuesFile == "" {
100-
p.ValuesFile = filepath.Join(p.ChartHome, p.Name, "values.yaml")
100+
p.ValuesFile = filepath.Join(p.absChartHome(), p.Name, "values.yaml")
101101
}
102102
for i, file := range p.AdditionalValuesFiles {
103103
// use Load() to enforce root restrictions
@@ -138,10 +138,17 @@ func (p *plugin) errIfIllegalValuesMerge() error {
138138
}
139139

140140
func (p *plugin) absChartHome() string {
141+
var chartHome string
141142
if filepath.IsAbs(p.ChartHome) {
142-
return p.ChartHome
143+
chartHome = p.ChartHome
144+
} else {
145+
chartHome = filepath.Join(p.h.Loader().Root(), p.ChartHome)
146+
}
147+
148+
if p.Version != "" && p.Repo != "" {
149+
return filepath.Join(chartHome, fmt.Sprintf("%s-%s", p.Name, p.Version))
143150
}
144-
return filepath.Join(p.h.Loader().Root(), p.ChartHome)
151+
return chartHome
145152
}
146153

147154
func (p *plugin) runHelmCommand(

0 commit comments

Comments
 (0)