Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
9499353
operator: add extension Context type
caseydavenport May 28, 2026
a5767f2
operator: add patch registry
caseydavenport May 28, 2026
b448227
operator: add image-override registry
caseydavenport May 28, 2026
e651d7d
render: add Named interface and component name constants for extensio…
caseydavenport May 28, 2026
c1cd817
utils: apply registered render patches in componentHandler
caseydavenport May 28, 2026
cc62d3c
operator: add installation controller extension registry
caseydavenport May 28, 2026
e8c588f
render: typha implements Named
caseydavenport May 28, 2026
f7b28f3
enterprise: move typha variant branches into a modifier
caseydavenport May 29, 2026
e78d633
installation: register enterprise modifiers and pass render Context
caseydavenport May 29, 2026
2e48ab3
enterprise: route node image selection through ResolveImage
caseydavenport May 29, 2026
0506f4c
render: fix node.go import ordering
caseydavenport May 29, 2026
f240c2d
enterprise: move node-prometheus cert setup into an InstallationExten…
caseydavenport May 29, 2026
6e426cb
enterprise: render node metrics service via a modifier
caseydavenport May 29, 2026
c74b106
variant-extensions: gofmt and replace deprecated TigeraSecureEnterpri…
caseydavenport May 29, 2026
6aea4fd
Merge remote-tracking branch 'origin/master' into pr-4871
caseydavenport Jun 3, 2026
fd4e835
Generalize the variant extension mechanism
caseydavenport Jun 3, 2026
311b79e
Simplify render context extension entrypoints
caseydavenport Jun 9, 2026
5a7cad9
Variant-scope extension registration and tighten the seams
caseydavenport Jun 9, 2026
6a33636
Collapse extension seams into Extension and Setup
caseydavenport Jun 9, 2026
9197ec9
Rename modCtx to renderCtx
caseydavenport Jun 9, 2026
6375a34
Document the extensions package and drop stale builder wording
caseydavenport Jun 9, 2026
147ec15
De-variant windows; add per-component context to extensions
caseydavenport Jun 9, 2026
ffe993e
De-variant the guardian component into an enterprise extension
caseydavenport Jun 9, 2026
0351e22
De-variant the guardian network policy
caseydavenport Jun 9, 2026
3de3639
De-variant the apiserver into an enterprise extension
caseydavenport Jun 10, 2026
d59fa4f
Merge remote-tracking branch 'origin/master' into casey-variant-exten…
caseydavenport Jun 17, 2026
139aabb
Address review feedback: cleanups
caseydavenport Jun 17, 2026
36b9881
Inject extensions instead of registering them globally
caseydavenport Jun 17, 2026
cc48b45
Use r.opts for controller options instead of copied fields
caseydavenport Jun 17, 2026
8b5349e
Apply variant extensions by decorating the rendered component
caseydavenport Jun 18, 2026
8ef2965
Restructure extensions into per-variant bundles with a typed controll…
caseydavenport Jun 18, 2026
9ae3012
Clean up the extensions API per review
caseydavenport Jun 18, 2026
76eefc3
Carry extension-produced data in an opaque RenderContext slot
caseydavenport Jun 18, 2026
1d831fd
Decouple the windows controller from enterprise via a per-controller …
caseydavenport Jun 18, 2026
9a05338
Move the enterprise manager-internal cert fetch into the controller hook
caseydavenport Jun 18, 2026
7f47288
Let extensions declare their own watches
caseydavenport Jun 18, 2026
a6e87f9
Move LogCollector process-path collection into the node modifier
caseydavenport Jun 18, 2026
632cfa2
Remove variant branches from the kube-controllers render
caseydavenport Jun 18, 2026
698254f
Move calico-kube-controllers metrics TLS into the enterprise extension
caseydavenport Jun 18, 2026
8d2ff05
Move the calico-kube-controllers enterprise surface into the extension
caseydavenport Jun 18, 2026
ba712b8
Move enterprise FelixConfiguration defaulting into the extension
caseydavenport Jun 22, 2026
fb295a6
Move the enterprise API server surface into the extension
caseydavenport Jun 22, 2026
b2e2109
Merge remote-tracking branch 'origin/master' into casey-variant-exten…
caseydavenport Jun 24, 2026
a2f4fcb
Move RenderContext into render and ControllerContext into a controlle…
caseydavenport Jun 24, 2026
c606796
Add a generic ExtractExtensionData helper for the render context slot
caseydavenport Jun 24, 2026
e40509d
Share the extension decorate test helper instead of copying it
caseydavenport Jun 24, 2026
daf8897
Split pkg/enterprise into per-component subpackages
caseydavenport Jun 24, 2026
b5e50ae
Move guardian enterprise render tests into pkg/enterprise/guardian
caseydavenport Jun 24, 2026
808d423
Move windows enterprise render tests into pkg/enterprise/windows
caseydavenport Jun 24, 2026
5919969
Move node enterprise render tests into pkg/enterprise/installation
caseydavenport Jun 24, 2026
ad7b115
Drop the enterprise dependency from the render test suite
caseydavenport Jun 24, 2026
0e99b4c
Move es-kube-controllers render tests into pkg/enterprise/kubecontrol…
caseydavenport Jun 24, 2026
efcf223
Decouple the clusterconnection controller from the enterprise variant
caseydavenport Jun 24, 2026
5ab843e
Split the clusterconnection enterprise tests into their own file
caseydavenport Jun 24, 2026
3f3b9c4
Return the controller context from ExtendContext
caseydavenport Jun 24, 2026
09a8780
Compute variant controller options on the extension Set
caseydavenport Jun 25, 2026
b97b4a7
Merge origin/master into casey-variant-extensions
caseydavenport Jul 1, 2026
42e3bd2
Preserve WAF RBAC test coverage from master
caseydavenport Jul 1, 2026
c5d64e9
Merge remote-tracking branch 'origin/master' into casey-variant-exten…
caseydavenport Jul 21, 2026
ce67622
Add SetWarning and ClearWarning expectations to the clusterconnection…
caseydavenport Jul 22, 2026
6a6399b
Pass the reconcile context to extension hooks as a parameter
caseydavenport Jul 27, 2026
03e702b
Rename the extension context types to Inputs
caseydavenport Jul 27, 2026
9deed8c
Key extension registration on the component instead of a name
caseydavenport Jul 27, 2026
51ad250
Let render own the names its modifiers reach for
caseydavenport Jul 27, 2026
9f3c5da
Merge remote-tracking branch 'origin/master' into casey-variant-exten…
caseydavenport Jul 27, 2026
3b51691
Trim the comments on the extension mechanism
caseydavenport Jul 27, 2026
7d497a2
Panic when an extension can't find what it expects
caseydavenport Jul 27, 2026
d048a39
Name the render inputs field on controller.Inputs
caseydavenport Jul 27, 2026
0d1a79b
Give the API server policy extension point its own inputs type
caseydavenport Jul 28, 2026
9daa5f6
Merge master into casey-variant-extensions
caseydavenport Aug 4, 2026
50d6f8d
Emit the cloud TENANT_ID from the enterprise es assembler
caseydavenport Aug 4, 2026
19ba9c9
Move the Calico Cloud flag onto the enterprise options
caseydavenport Aug 4, 2026
4cb7f15
Merge master into casey-variant-extensions
caseydavenport Aug 4, 2026
37bef7e
Resolve the variant extension once instead of per reconcile
caseydavenport Aug 4, 2026
277c2b4
Trim the extension mechanism comments
caseydavenport Aug 4, 2026
090db02
Fold extension validation into ExtendInputs
caseydavenport Aug 4, 2026
aeda62a
Restore the RBAC and watches lost in earlier master merges
caseydavenport Aug 4, 2026
c40c534
Get the last variant branches out of the installation controller
caseydavenport Aug 4, 2026
345de62
Hand each controller its own resolved extension
caseydavenport Aug 4, 2026
4f4ba73
Merge master into casey-variant-extensions
caseydavenport Aug 5, 2026
1c9c3d7
Merge master into casey-variant-extensions
caseydavenport Aug 5, 2026
9a7fde1
Give each controller a typed extension instead of a keyed registry
caseydavenport Aug 10, 2026
0fd1724
Merge remote-tracking branch 'origin/master' into casey-variant-exten…
caseydavenport Aug 11, 2026
8bcafcb
Move the RBAC management gate out of the shared controllers
caseydavenport Aug 11, 2026
77643ae
Give the clusterconnection extension its own watches and validation
caseydavenport Aug 11, 2026
558a8a1
Carry a degrade reason on the errors extensions return
caseydavenport Aug 12, 2026
9f5c0bb
Assert the degrade message the extension error now carries
caseydavenport Aug 12, 2026
3c7f213
Merge remote-tracking branch 'origin/master' into casey-variant-exten…
caseydavenport Aug 12, 2026
8472693
Regenerate imported CRDs and the ECK bundle
caseydavenport Aug 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ import (
"github.com/tigera/operator/pkg/controller/options"
"github.com/tigera/operator/pkg/controller/utils"
"github.com/tigera/operator/pkg/dns"
"github.com/tigera/operator/pkg/enterprise"
eoptions "github.com/tigera/operator/pkg/enterprise/options"
"github.com/tigera/operator/pkg/imports/admission"
"github.com/tigera/operator/pkg/imports/crds"
"github.com/tigera/operator/pkg/render"
Expand Down Expand Up @@ -607,6 +609,14 @@ admission policy installation; once an Installation exists it is the authority o
os.Exit(1)
}

// Build the extensions for the variant we resolved above.
extensionRegistry := enterprise.New(variant, eoptions.Options{
MultiTenant: multiTenant,
Cloud: isCloudBuild(),
ManageCRDs: manageCRDs,
UseV3CRDs: v3CRDs,
})

options := options.ControllerOptions{
DetectedProvider: provider,
Variant: variant,
Expand All @@ -621,6 +631,7 @@ admission policy installation; once an Installation exists it is the authority o
ESMigration: elasticIsMigrating,
UseV3CRDs: v3CRDs,
APIDiscovery: apiDiscovery,
Extensions: extensionRegistry,
}

// Before we start any controllers, make sure our options are valid.
Expand Down
6 changes: 3 additions & 3 deletions pkg/common/validation/apiserver/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ func validateContainerPorts(container corev1.Container) field.ErrorList {
ports := container.Ports
// Validate if the port name can be attributed to the container.
for _, port := range ports {
if (port.Name == render.APIServerPortName && container.Name != string(render.APIServerContainerName)) ||
(port.Name == render.QueryServerPortName && container.Name != string(render.TigeraAPIServerQueryServerContainerName)) ||
(port.Name == render.L7AdmissionControllerPortName && container.Name != string(render.L7AdmissionControllerContainerName)) {
if (port.Name == render.APIServerPortName && container.Name != render.APIServerContainerName) ||
(port.Name == render.QueryServerPortName && container.Name != render.TigeraAPIServerQueryServerContainerName) ||
(port.Name == render.L7AdmissionControllerPortName && container.Name != render.L7AdmissionControllerContainerName) {
msg := fmt.Sprintf("port name %s is not valid for container %s", port.Name, container.Name)
allErrs = append(allErrs, field.Invalid(fldPath, port.Name, msg))
}
Expand Down
10 changes: 5 additions & 5 deletions pkg/common/validation/overrides_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ var _ = Describe("Test overrides validation (APIServerDeployment - Container.Por
It("should accept custom valid ContainerPorts", func() {
overrides.Spec.Template.Spec.Containers = []opv1.APIServerDeploymentContainer{
{
Name: string(render.APIServerContainerName),
Name: render.APIServerContainerName,
Ports: []opv1.APIServerDeploymentContainerPort{
{
Name: render.APIServerPortName,
Expand All @@ -307,7 +307,7 @@ var _ = Describe("Test overrides validation (APIServerDeployment - Container.Por
},
},
{
Name: string(render.TigeraAPIServerQueryServerContainerName),
Name: render.TigeraAPIServerQueryServerContainerName,
Ports: []opv1.APIServerDeploymentContainerPort{
{
Name: render.QueryServerPortName,
Expand All @@ -316,7 +316,7 @@ var _ = Describe("Test overrides validation (APIServerDeployment - Container.Por
},
},
{
Name: string(render.L7AdmissionControllerContainerName),
Name: render.L7AdmissionControllerContainerName,
Ports: []opv1.APIServerDeploymentContainerPort{
{
Name: render.L7AdmissionControllerPortName,
Expand Down Expand Up @@ -351,7 +351,7 @@ var _ = Describe("Test overrides validation (APIServerDeployment - Container.Por
),
Entry("queryserver PortName specified in the wrong container",
opv1.APIServerDeploymentContainer{
Name: string(render.APIServerContainerName),
Name: render.APIServerContainerName,
Ports: []opv1.APIServerDeploymentContainerPort{
{
Name: render.QueryServerPortName,
Expand All @@ -363,7 +363,7 @@ var _ = Describe("Test overrides validation (APIServerDeployment - Container.Por
),
Entry("l7admctrl PortName specified in the wrong container",
opv1.APIServerDeploymentContainer{
Name: string(render.APIServerContainerName),
Name: render.APIServerContainerName,
Ports: []opv1.APIServerDeploymentContainerPort{
{
Name: render.L7AdmissionControllerPortName,
Expand Down
Loading
Loading