Skip to content

Commit a0e00fd

Browse files
committed
Two deployers
Signed-off-by: David L. Chandler <[email protected]>
1 parent ce72056 commit a0e00fd

File tree

10 files changed

+203
-175
lines changed

10 files changed

+203
-175
lines changed

pkg/deployer/deployer.go

Lines changed: 4 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ type Deployer struct {
5959
agwControllerName string
6060
agwGatewayClassName string
6161
chart *chart.Chart
62-
agentgatewayChart *chart.Chart
6362
scheme *runtime.Scheme
6463
client apiclient.Client
6564
helmValues HelmValuesGenerator
@@ -82,7 +81,7 @@ func WithGVKToGVRMapper(m map[schema.GroupVersionKind]schema.GroupVersionResourc
8281
}
8382
}
8483

85-
// NewDeployer creates a new gateway/inference pool/etc
84+
// NewDeployer creates a new gateway/inference pool/etc deployer with a single chart.
8685
// TODO [danehans]: Reloading the chart for every reconciliation is inefficient.
8786
// See https://github.com/kgateway-dev/kgateway/issues/10672 for details.
8887
func NewDeployer(
@@ -101,36 +100,6 @@ func NewDeployer(
101100
scheme: scheme,
102101
client: client,
103102
chart: chart,
104-
agentgatewayChart: nil,
105-
helmValues: hvg,
106-
helmReleaseNameAndNamespaceGenerator: helmReleaseNameAndNamespaceGenerator,
107-
patcher: applyPatch,
108-
}
109-
for _, o := range opts {
110-
o(d)
111-
}
112-
return d
113-
}
114-
115-
// NewDeployerWithMultipleCharts creates a new gateway deployer that supports both envoy and agentgateway charts
116-
func NewDeployerWithMultipleCharts(
117-
controllerName, agwControllerName, agwGatewayClassName string,
118-
scheme *runtime.Scheme,
119-
client apiclient.Client,
120-
envoyChart *chart.Chart,
121-
agentgatewayChart *chart.Chart,
122-
hvg HelmValuesGenerator,
123-
helmReleaseNameAndNamespaceGenerator func(obj client.Object) (string, string),
124-
opts ...Option,
125-
) *Deployer {
126-
d := &Deployer{
127-
controllerName: controllerName,
128-
agwControllerName: agwControllerName,
129-
agwGatewayClassName: agwGatewayClassName,
130-
scheme: scheme,
131-
client: client,
132-
chart: envoyChart,
133-
agentgatewayChart: agentgatewayChart,
134103
helmValues: hvg,
135104
helmReleaseNameAndNamespaceGenerator: helmReleaseNameAndNamespaceGenerator,
136105
patcher: applyPatch,
@@ -183,12 +152,7 @@ func (d *Deployer) RenderChartToObjects(ns, name string, vals map[string]any) ([
183152
// It returns the list of Objects that are rendered, and an optional error if rendering failed,
184153
// or converting the rendered manifests to objects failed.
185154
func (d *Deployer) RenderToObjects(ns, name string, vals map[string]any) ([]client.Object, error) {
186-
return d.RenderToObjectsWithChartType(ns, name, vals, ChartTypeEnvoy)
187-
}
188-
189-
// RenderToObjectsWithChartType renders the helm chart with the specified chart type.
190-
func (d *Deployer) RenderToObjectsWithChartType(ns, name string, vals map[string]any, chartType ChartType) ([]client.Object, error) {
191-
manifest, err := d.RenderManifestWithChartType(ns, name, vals, chartType)
155+
manifest, err := d.RenderManifest(ns, name, vals)
192156
if err != nil {
193157
return nil, err
194158
}
@@ -201,11 +165,6 @@ func (d *Deployer) RenderToObjectsWithChartType(ns, name string, vals map[string
201165
}
202166

203167
func (d *Deployer) RenderManifest(ns, name string, vals map[string]any) ([]byte, error) {
204-
return d.RenderManifestWithChartType(ns, name, vals, ChartTypeEnvoy)
205-
}
206-
207-
// RenderManifestWithChartType renders the helm chart with the specified chart type.
208-
func (d *Deployer) RenderManifestWithChartType(ns, name string, vals map[string]any, chartType ChartType) ([]byte, error) {
209168
mem := driver.NewMemory()
210169
mem.SetNamespace(ns)
211170
cfg := &action.Configuration{
@@ -221,13 +180,7 @@ func (d *Deployer) RenderManifestWithChartType(ns, name string, vals map[string]
221180
install.ClientOnly = true
222181
installCtx := context.Background()
223182

224-
// Select the appropriate chart based on chart type
225-
chartToUse := d.chart
226-
if chartType == ChartTypeAgentgateway && d.agentgatewayChart != nil {
227-
chartToUse = d.agentgatewayChart
228-
}
229-
230-
release, err := install.RunWithContext(installCtx, chartToUse, vals)
183+
release, err := install.RunWithContext(installCtx, d.chart, vals)
231184
if err != nil {
232185
return nil, fmt.Errorf("failed to render helm chart for %s.%s: %w", ns, name, err)
233186
}
@@ -262,10 +215,8 @@ func (d *Deployer) GetObjsToDeploy(ctx context.Context, obj client.Object) ([]cl
262215
"values", vals,
263216
)
264217

265-
chartType := d.helmValues.GetChartType(ctx, obj)
266-
267218
rname, rns := d.helmReleaseNameAndNamespaceGenerator(obj)
268-
objs, err := d.RenderToObjectsWithChartType(rns, rname, vals, chartType)
219+
objs, err := d.RenderToObjects(rns, rname, vals)
269220
if err != nil {
270221
return nil, fmt.Errorf("failed to get objects to deploy %s.%s: %w", obj.GetNamespace(), obj.GetName(), err)
271222
}

pkg/deployer/deployer_test.go

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -390,13 +390,13 @@ var _ = Describe("Deployer", func() {
390390
AgentgatewayClassName: wellknown.DefaultAgwClassName,
391391
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
392392
})
393-
d, err := deployerinternal.NewGatewayDeployer(
393+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
394394
wellknown.DefaultGatewayControllerName,
395395
wellknown.DefaultAgwControllerName,
396396
wellknown.DefaultAgwClassName,
397397
scheme,
398398
fakeClient,
399-
gwp,
399+
gwp.EnvoyHelmValuesGenerator(),
400400
)
401401
Expect(err).NotTo(HaveOccurred())
402402
fakeClient.RunAndWait(context.Background().Done())
@@ -477,13 +477,13 @@ var _ = Describe("Deployer", func() {
477477
AgentgatewayClassName: wellknown.DefaultAgwClassName,
478478
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
479479
})
480-
d, err = deployerinternal.NewGatewayDeployer(
480+
d, err = deployerinternal.NewEnvoyGatewayDeployer(
481481
wellknown.DefaultGatewayControllerName,
482482
wellknown.DefaultAgwControllerName,
483483
wellknown.DefaultAgwClassName,
484484
scheme,
485485
fakeClient,
486-
gwParams,
486+
gwParams.EnvoyHelmValuesGenerator(),
487487
)
488488
Expect(err).NotTo(HaveOccurred())
489489
fakeClient.RunAndWait(context.Background().Done())
@@ -557,13 +557,13 @@ var _ = Describe("Deployer", func() {
557557
AgentgatewayClassName: wellknown.DefaultAgwClassName,
558558
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
559559
})
560-
d, err := deployerinternal.NewGatewayDeployer(
560+
d, err := deployerinternal.NewAgentgatewayDeployer(
561561
wellknown.DefaultGatewayControllerName,
562562
wellknown.DefaultAgwControllerName,
563563
wellknown.DefaultAgwClassName,
564564
scheme,
565565
fakeClient,
566-
gwParams,
566+
gwParams.AgentgatewayHelmValuesGenerator(),
567567
)
568568
Expect(err).NotTo(HaveOccurred())
569569
fakeClient.RunAndWait(context.Background().Done())
@@ -675,13 +675,13 @@ var _ = Describe("Deployer", func() {
675675
AgentgatewayClassName: wellknown.DefaultAgwClassName,
676676
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
677677
})
678-
d, err := deployerinternal.NewGatewayDeployer(
678+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
679679
wellknown.DefaultGatewayControllerName,
680680
wellknown.DefaultAgwControllerName,
681681
wellknown.DefaultAgwClassName,
682682
scheme,
683683
fakeClient,
684-
gwParams,
684+
gwParams.EnvoyHelmValuesGenerator(),
685685
)
686686
Expect(err).NotTo(HaveOccurred())
687687
fakeClient.RunAndWait(context.Background().Done())
@@ -748,13 +748,13 @@ var _ = Describe("Deployer", func() {
748748
AgentgatewayClassName: wellknown.DefaultAgwClassName,
749749
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
750750
})
751-
d, err := deployerinternal.NewGatewayDeployer(
751+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
752752
wellknown.DefaultGatewayControllerName,
753753
wellknown.DefaultAgwControllerName,
754754
wellknown.DefaultAgwClassName,
755755
scheme,
756756
fakeClient,
757-
gwParams,
757+
gwParams.EnvoyHelmValuesGenerator(),
758758
)
759759
Expect(err).NotTo(HaveOccurred())
760760
fakeClient.RunAndWait(context.Background().Done())
@@ -837,13 +837,13 @@ var _ = Describe("Deployer", func() {
837837
AgentgatewayClassName: wellknown.DefaultAgwClassName,
838838
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
839839
})
840-
d, err := deployerinternal.NewGatewayDeployer(
840+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
841841
wellknown.DefaultGatewayControllerName,
842842
wellknown.DefaultAgwControllerName,
843843
wellknown.DefaultAgwClassName,
844844
scheme,
845845
fakeClient,
846-
gwParams,
846+
gwParams.EnvoyHelmValuesGenerator(),
847847
)
848848
Expect(err).NotTo(HaveOccurred())
849849
fakeClient.RunAndWait(context.Background().Done())
@@ -932,13 +932,13 @@ var _ = Describe("Deployer", func() {
932932
AgentgatewayClassName: wellknown.DefaultAgwClassName,
933933
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
934934
})
935-
d, err := deployerinternal.NewGatewayDeployer(
935+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
936936
wellknown.DefaultGatewayControllerName,
937937
wellknown.DefaultAgwControllerName,
938938
wellknown.DefaultAgwClassName,
939939
scheme,
940940
fakeClient,
941-
gwParams,
941+
gwParams.EnvoyHelmValuesGenerator(),
942942
)
943943
Expect(err).NotTo(HaveOccurred())
944944
fakeClient.RunAndWait(context.Background().Done())
@@ -1023,13 +1023,13 @@ var _ = Describe("Deployer", func() {
10231023
AgentgatewayClassName: wellknown.DefaultAgwClassName,
10241024
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
10251025
})
1026-
d1, err := deployerinternal.NewGatewayDeployer(
1026+
d1, err := deployerinternal.NewEnvoyGatewayDeployer(
10271027
wellknown.DefaultGatewayControllerName,
10281028
wellknown.DefaultAgwControllerName,
10291029
wellknown.DefaultAgwClassName,
10301030
scheme,
10311031
fakeClient,
1032-
gwParams1,
1032+
gwParams1.EnvoyHelmValuesGenerator(),
10331033
)
10341034
Expect(err).NotTo(HaveOccurred())
10351035

@@ -1050,13 +1050,13 @@ var _ = Describe("Deployer", func() {
10501050
AgentgatewayClassName: wellknown.DefaultAgwClassName,
10511051
AgentgatewayControllerName: wellknown.DefaultAgwControllerName,
10521052
})
1053-
d2, err := deployerinternal.NewGatewayDeployer(
1053+
d2, err := deployerinternal.NewEnvoyGatewayDeployer(
10541054
wellknown.DefaultGatewayControllerName,
10551055
wellknown.DefaultAgwControllerName,
10561056
wellknown.DefaultAgwClassName,
10571057
scheme,
10581058
fakeClient,
1059-
gwParams2,
1059+
gwParams2.EnvoyHelmValuesGenerator(),
10601060
)
10611061
Expect(err).NotTo(HaveOccurred())
10621062
fakeClient.RunAndWait(context.Background().Done())
@@ -1123,13 +1123,13 @@ var _ = Describe("Deployer", func() {
11231123
Tag: "bar",
11241124
},
11251125
})
1126-
d, err := deployerinternal.NewGatewayDeployer(
1126+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
11271127
wellknown.DefaultGatewayControllerName,
11281128
wellknown.DefaultAgwControllerName,
11291129
wellknown.DefaultAgwClassName,
11301130
scheme,
11311131
fakeClient,
1132-
gwParams,
1132+
gwParams.EnvoyHelmValuesGenerator(),
11331133
)
11341134
Expect(err).NotTo(HaveOccurred())
11351135
fakeClient.RunAndWait(context.Background().Done())
@@ -1171,13 +1171,13 @@ var _ = Describe("Deployer", func() {
11711171
Tag: "bar",
11721172
},
11731173
})
1174-
d, err := deployerinternal.NewGatewayDeployer(
1174+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
11751175
wellknown.DefaultGatewayControllerName,
11761176
wellknown.DefaultAgwControllerName,
11771177
wellknown.DefaultAgwClassName,
11781178
scheme,
11791179
fakeClient,
1180-
gwParams,
1180+
gwParams.EnvoyHelmValuesGenerator(),
11811181
)
11821182
Expect(err).NotTo(HaveOccurred())
11831183
fakeClient.RunAndWait(context.Background().Done())
@@ -1232,13 +1232,13 @@ var _ = Describe("Deployer", func() {
12321232
Tag: tag,
12331233
},
12341234
})
1235-
d, err = deployerinternal.NewGatewayDeployer(
1235+
d, err = deployerinternal.NewEnvoyGatewayDeployer(
12361236
wellknown.DefaultGatewayControllerName,
12371237
wellknown.DefaultAgwControllerName,
12381238
wellknown.DefaultAgwClassName,
12391239
scheme,
12401240
fakeClient,
1241-
gwParams,
1241+
gwParams.EnvoyHelmValuesGenerator(),
12421242
)
12431243
Expect(err).NotTo(HaveOccurred())
12441244
fakeClient.RunAndWait(context.Background().Done())
@@ -1323,13 +1323,13 @@ var _ = Describe("Deployer", func() {
13231323
Tag: tag,
13241324
},
13251325
})
1326-
d, err = deployerinternal.NewGatewayDeployer(
1326+
d, err = deployerinternal.NewEnvoyGatewayDeployer(
13271327
wellknown.DefaultGatewayControllerName,
13281328
wellknown.DefaultAgwControllerName,
13291329
wellknown.DefaultAgwClassName,
13301330
scheme,
13311331
fakeClient,
1332-
gwParams,
1332+
gwParams.EnvoyHelmValuesGenerator(),
13331333
)
13341334
Expect(err).NotTo(HaveOccurred())
13351335
fakeClient.RunAndWait(context.Background().Done())
@@ -1418,13 +1418,13 @@ var _ = Describe("Deployer", func() {
14181418
Tag: tag,
14191419
},
14201420
})
1421-
d, err = deployerinternal.NewGatewayDeployer(
1421+
d, err = deployerinternal.NewEnvoyGatewayDeployer(
14221422
wellknown.DefaultGatewayControllerName,
14231423
wellknown.DefaultAgwControllerName,
14241424
wellknown.DefaultAgwClassName,
14251425
scheme,
14261426
fakeClient,
1427-
gwParams,
1427+
gwParams.EnvoyHelmValuesGenerator(),
14281428
)
14291429
Expect(err).NotTo(HaveOccurred())
14301430
fakeClient.RunAndWait(context.Background().Done())
@@ -2045,13 +2045,13 @@ var _ = Describe("Deployer", func() {
20452045

20462046
fakeClient := fake.NewClient(GinkgoT(), gwc, defaultGwp, overrideGwp)
20472047
gwParams := deployerinternal.NewGatewayParameters(fakeClient, inp.dInputs)
2048-
d, err := deployerinternal.NewGatewayDeployer(
2048+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
20492049
wellknown.DefaultGatewayControllerName,
20502050
wellknown.DefaultAgwControllerName,
20512051
wellknown.DefaultAgwClassName,
20522052
scheme,
20532053
fakeClient,
2054-
gwParams,
2054+
gwParams.EnvoyHelmValuesGenerator(),
20552055
)
20562056
Expect(err).NotTo(HaveOccurred())
20572057
fakeClient.RunAndWait(context.Background().Done())
@@ -2472,13 +2472,13 @@ var _ = Describe("Deployer", func() {
24722472
Tag: "bar",
24732473
},
24742474
})
2475-
d, err := deployerinternal.NewGatewayDeployer(
2475+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
24762476
wellknown.DefaultGatewayControllerName,
24772477
wellknown.DefaultAgwControllerName,
24782478
wellknown.DefaultAgwClassName,
24792479
scheme,
24802480
fakeClient,
2481-
gwParams,
2481+
gwParams.EnvoyHelmValuesGenerator(),
24822482
)
24832483
Expect(err).NotTo(HaveOccurred())
24842484
fakeClient.RunAndWait(context.Background().Done())
@@ -2709,7 +2709,7 @@ var _ = Describe("DeployObjs", func() {
27092709
)
27102710

27112711
getDeployer := func(fc apiclient.Client, patcher deployer.Patcher) *deployer.Deployer {
2712-
d, err := deployerinternal.NewGatewayDeployer(
2712+
d, err := deployerinternal.NewEnvoyGatewayDeployer(
27132713
wellknown.DefaultGatewayControllerName,
27142714
wellknown.DefaultAgwControllerName,
27152715
wellknown.DefaultAgwClassName,

pkg/deployer/helm_values_generator.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ type HelmValuesGenerator interface {
1717

1818
// GetCacheSyncHandlers returns the cache sync handlers for the HelmValuesGenerator controller
1919
GetCacheSyncHandlers() []cache.InformerSynced
20-
21-
// GetChartType returns the chart type to use for rendering the given object.
22-
GetChartType(ctx context.Context, obj client.Object) ChartType
2320
}
2421

2522
// ObjectPostProcessor is an optional interface that can be implemented by HelmValuesGenerator
@@ -31,13 +28,4 @@ type ObjectPostProcessor interface {
3128
PostProcessObjects(ctx context.Context, obj client.Object, rendered []client.Object) error
3229
}
3330

34-
// ChartType indicates which helm chart to use for rendering.
35-
type ChartType int
36-
37-
const (
38-
// ChartTypeEnvoy indicates the Envoy proxy chart should be used.
39-
ChartTypeEnvoy ChartType = iota
40-
// ChartTypeAgentgateway indicates the agentgateway chart should be used.
41-
ChartTypeAgentgateway
42-
)
4331

0 commit comments

Comments
 (0)