Skip to content

Commit e3ea351

Browse files
authored
revert(helm): Replace VFS with embed for Helm chart rendering (#14206)
This reverts commit 4125bd8.
1 parent 6f5bfea commit e3ea351

34 files changed

+337
-176
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ web/app/js/locales/_build
1212
web/app/js/locales/**/*.js
1313
web/app/yarn-error.log
1414
vendor
15+
**/*.gogen*
1516
**/*.swp
1617
**/charts/**/charts
1718
package-lock.json

bin/build-cli-bin

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ rootdir=$( cd "$bindir"/.. && pwd )
1717
cd "$rootdir"
1818
cd "$(pwd -P)"
1919
target=target/cli/$(os)/linkerd
20-
20+
# TODO: `go generate` does not honor -mod=readonly
21+
GO111MODULE=on go generate -mod=readonly ./pkg/charts/static
22+
GO111MODULE=on go generate -mod=readonly ./jaeger/static
23+
GO111MODULE=on go generate -mod=readonly ./multicluster/static
24+
GO111MODULE=on go generate -mod=readonly ./viz/static
25+
2126
root_tag=$("$bindir"/root-tag)
2227
GO111MODULE=on CGO_ENABLED=0 go build -o "$target" -tags prod -mod=readonly -ldflags "-s -w -X github.com/linkerd/linkerd2/pkg/version.Version=$root_tag" ./cli
2328
echo "$target"

charts/templates.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

cli/Dockerfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ COPY controller/api controller/api
2222
COPY controller/gen controller/gen
2323
COPY pkg pkg
2424

25+
# Generate static templates
26+
# TODO: `go generate` does not honor -mod=readonly
27+
RUN go generate -mod=readonly ./pkg/charts/static
28+
RUN go generate -mod=readonly ./jaeger/static
29+
RUN go generate -mod=readonly ./multicluster/static
30+
RUN go generate -mod=readonly ./viz/static
31+
2532
RUN mkdir -p /out
2633

2734
FROM go-gen AS linux-amd64-full

cli/cmd/install-cni-plugin.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import (
66
"os"
77
"strings"
88

9-
"github.com/linkerd/linkerd2/charts"
10-
chartspkg "github.com/linkerd/linkerd2/pkg/charts"
9+
"github.com/linkerd/linkerd2/pkg/charts"
1110
cnicharts "github.com/linkerd/linkerd2/pkg/charts/cni"
11+
"github.com/linkerd/linkerd2/pkg/charts/static"
1212
"github.com/linkerd/linkerd2/pkg/cmd"
1313
"github.com/linkerd/linkerd2/pkg/flags"
1414
"github.com/linkerd/linkerd2/pkg/version"
@@ -249,13 +249,13 @@ func renderCNIPlugin(w io.Writer, valOpts values.Options, config *cniPluginOptio
249249
{Name: "templates/cni-plugin.yaml"},
250250
}
251251

252-
ch := &chartspkg.Chart{
252+
ch := &charts.Chart{
253253
Name: helmCNIDefaultChartName,
254254
Dir: helmCNIDefaultChartDir,
255255
Namespace: defaultCNINamespace,
256256
Values: mergedValues,
257257
Files: files,
258-
Fs: charts.Templates,
258+
Fs: static.Templates,
259259
}
260260

261261
buf, err := ch.RenderCNI()

cli/cmd/install.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ import (
1313
"text/template"
1414
"time"
1515

16-
"github.com/linkerd/linkerd2/charts"
1716
"github.com/linkerd/linkerd2/cli/flag"
18-
chartspkg "github.com/linkerd/linkerd2/pkg/charts"
17+
"github.com/linkerd/linkerd2/pkg/charts"
1918
l5dcharts "github.com/linkerd/linkerd2/pkg/charts/linkerd2"
19+
"github.com/linkerd/linkerd2/pkg/charts/static"
2020
pkgcmd "github.com/linkerd/linkerd2/pkg/cmd"
2121
flagspkg "github.com/linkerd/linkerd2/pkg/flags"
2222
"github.com/linkerd/linkerd2/pkg/healthcheck"
@@ -331,11 +331,14 @@ func isRunAsRoot(values map[string]interface{}) bool {
331331
// them into a buffer. The coalesced values are also returned so that they may be rendered via
332332
// `renderOverrides` if appropriate.
333333
func renderChartToBuffer(files []*loader.BufferedFile, values map[string]interface{}, valuesOverrides map[string]interface{}) (*bytes.Buffer, chartutil.Values, error) {
334-
partials, err := chartspkg.LoadPartials()
335-
if err != nil {
334+
// Load the partials in addition to the main chart.
335+
var partials []*loader.BufferedFile
336+
for _, template := range charts.L5dPartials {
337+
partials = append(partials, &loader.BufferedFile{Name: template})
338+
}
339+
if err := charts.FilesReader(static.Templates, "", partials); err != nil {
336340
return nil, nil, err
337341
}
338-
339342
chart, err := loader.LoadFiles(append(files, partials...))
340343
if err != nil {
341344
return nil, nil, err
@@ -432,13 +435,13 @@ func renderCRDs(ctx context.Context, k *k8s.KubernetesAPI, w io.Writer, options
432435
for _, template := range TemplatesCrdFiles {
433436
files = append(files, &loader.BufferedFile{Name: template})
434437
}
435-
if err := chartspkg.FilesReader(charts.Templates, l5dcharts.HelmChartDirCrds+"/", files); err != nil {
438+
if err := charts.FilesReader(static.Templates, l5dcharts.HelmChartDirCrds+"/", files); err != nil {
436439
return err
437440
}
438441

439442
// Load defaults from values.yaml
440443
valuesFile := &loader.BufferedFile{Name: l5dcharts.HelmChartDirCrds + "/values.yaml"}
441-
if err := chartspkg.ReadFile(charts.Templates, "", valuesFile); err != nil {
444+
if err := charts.ReadFile(static.Templates, "/", valuesFile); err != nil {
442445
return err
443446
}
444447
// Ensure the map is not nil, even if the default `values.yaml` is empty ---
@@ -467,7 +470,7 @@ func renderCRDs(ctx context.Context, k *k8s.KubernetesAPI, w io.Writer, options
467470
}
468471

469472
defaultValues = updateDefaultValues(installed, defaultValues)
470-
finalValues := chartspkg.MergeMaps(defaultValues, valuesOverrides)
473+
finalValues := charts.MergeMaps(defaultValues, valuesOverrides)
471474

472475
if err := validateFinalValues(installed, finalValues); err != nil {
473476
return err
@@ -489,7 +492,7 @@ func renderControlPlane(w io.Writer, values *l5dcharts.Values, valuesOverrides m
489492
for _, template := range TemplatesControlPlane {
490493
files = append(files, &loader.BufferedFile{Name: template})
491494
}
492-
if err := chartspkg.FilesReader(charts.Templates, l5dcharts.HelmChartDirCP+"/", files); err != nil {
495+
if err := charts.FilesReader(static.Templates, l5dcharts.HelmChartDirCP+"/", files); err != nil {
493496
return err
494497
}
495498

cli/cmd/install_helm_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import (
55
"path/filepath"
66
"testing"
77

8-
"github.com/linkerd/linkerd2/charts"
9-
chartspkg "github.com/linkerd/linkerd2/pkg/charts"
8+
"github.com/linkerd/linkerd2/pkg/charts"
109
l5dcharts "github.com/linkerd/linkerd2/pkg/charts/linkerd2"
10+
"github.com/linkerd/linkerd2/pkg/charts/static"
1111
"github.com/linkerd/linkerd2/pkg/k8s"
1212
"github.com/linkerd/linkerd2/testutil"
1313
"helm.sh/helm/v3/pkg/chart"
@@ -227,7 +227,7 @@ func chartCrds(t *testing.T) *chart.Chart {
227227

228228
// Load defaults from values.yaml
229229
valuesFile := &loader.BufferedFile{Name: l5dcharts.HelmChartDirCrds + "/values.yaml"}
230-
if err := chartspkg.ReadFile(charts.Templates, "", valuesFile); err != nil {
230+
if err := charts.ReadFile(static.Templates, "/", valuesFile); err != nil {
231231
t.Fatal(err)
232232
}
233233
defaultValues := make(map[string]interface{})

controller/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ FROM go-deps AS golang
1414
WORKDIR /linkerd-build
1515
COPY controller/gen controller/gen
1616
COPY pkg pkg
17-
COPY charts charts
1817
COPY controller controller
1918
COPY charts/patch charts/patch
2019
COPY charts/partials charts/partials
2120
COPY multicluster multicluster
2221

22+
# Generate static templates
23+
# TODO: `go generate` does not honor -mod=readonly
24+
RUN go generate -mod=readonly ./pkg/charts/static
2325
ARG TARGETARCH
2426
RUN CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH go build -o /out/controller -tags prod -mod=readonly -ldflags "-s -w" ./controller/cmd
2527

jaeger/charts/templates.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

jaeger/cmd/install.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import (
88
"path"
99
"time"
1010

11-
"github.com/linkerd/linkerd2/jaeger/charts"
12-
chartspkg "github.com/linkerd/linkerd2/pkg/charts"
11+
"github.com/linkerd/linkerd2/jaeger/static"
12+
"github.com/linkerd/linkerd2/pkg/charts"
13+
partials "github.com/linkerd/linkerd2/pkg/charts/static"
1314
pkgcmd "github.com/linkerd/linkerd2/pkg/cmd"
1415
"github.com/linkerd/linkerd2/pkg/flags"
1516
"github.com/linkerd/linkerd2/pkg/healthcheck"
@@ -125,13 +126,20 @@ func render(w io.Writer, valuesOverrides map[string]interface{}, registry string
125126
)
126127
}
127128

129+
var partialFiles []*loader.BufferedFile
130+
for _, template := range charts.L5dPartials {
131+
partialFiles = append(partialFiles,
132+
&loader.BufferedFile{Name: template},
133+
)
134+
}
135+
128136
// Load all jaeger chart files into buffer
129-
if err := chartspkg.FilesReader(charts.Templates, "linkerd-jaeger/", files); err != nil {
137+
if err := charts.FilesReader(static.Templates, "linkerd-jaeger/", files); err != nil {
130138
return err
131139
}
132140

133-
partialFiles, err := chartspkg.LoadPartials()
134-
if err != nil {
141+
// Load all partial chart files into buffer
142+
if err := charts.FilesReader(partials.Templates, "", partialFiles); err != nil {
135143
return err
136144
}
137145

@@ -146,7 +154,7 @@ func render(w io.Writer, valuesOverrides map[string]interface{}, registry string
146154
return err
147155
}
148156

149-
vals, err = chartspkg.InsertVersionValues(vals)
157+
vals, err = charts.InsertVersionValues(vals)
150158
if err != nil {
151159
return err
152160
}

0 commit comments

Comments
 (0)