Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7bf310b
feat: API changes to support remote infrastructure provider
zac-nixon Apr 7, 2026
980ec8b
feat: Remote infrastructure provider: do not modify container port fo…
zac-nixon Apr 15, 2026
5dcb02d
feat: Remote infrastructure provider: initial remote provider
zac-nixon Apr 15, 2026
2a11074
feat: Remote infrastructure provider: Refactor Kubernetes configurati…
zac-nixon Apr 29, 2026
164d924
feat: Remote infrastructure provider: Ensure Gateway is set to progra…
zac-nixon May 7, 2026
7b54bbf
feat: Remote infrastructure provider: Refactor grpc connection creati…
zac-nixon May 7, 2026
bd460cf
feat: Remote infrastructure provider: refactor k8s client creation
zac-nixon May 8, 2026
b80a529
feat: Remote infrastructure provider: add support for global rate lim…
zac-nixon May 13, 2026
cdd0597
feat: Remote infrastructure provider: Unit tests
zac-nixon May 14, 2026
6ff3af8
Fix docs
zac-nixon May 21, 2026
84c995c
Clean up port shifting logic
zac-nixon May 27, 2026
7c63d79
Code clean up with help from Claude
zac-nixon May 28, 2026
3002e04
add an integration and e2e test for the remote infrastructure provider
zac-nixon May 28, 2026
17c5760
Add Remote Infrastructure documentation
zac-nixon Jun 1, 2026
611a1ec
Fix lint and license
zac-nixon Jun 2, 2026
7647cce
Fix Port Shifting
zac-nixon Jun 2, 2026
120b18c
Rebase on top of main
zac-nixon Jun 9, 2026
dce38bb
Bug fixes
zac-nixon Jun 12, 2026
9df0614
Fix review comments
zac-nixon Jun 29, 2026
66fe317
Revert customer infrastructure rate limiting configuration
zac-nixon Jul 13, 2026
5557862
Use strongly type IR when sending data to remote infra server
zac-nixon Jul 14, 2026
aee0f1f
Re-base
zac-nixon Jul 24, 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
82 changes: 71 additions & 11 deletions api/v1alpha1/envoygateway_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,12 @@ func (e *EnvoyGateway) SetEnvoyGatewayDefaults() {
if e.Provider == nil {
e.Provider = DefaultEnvoyGatewayProvider()
}

if e.Provider.Kubernetes == nil {
e.Provider.Kubernetes = &EnvoyGatewayKubernetesProvider{
LeaderElection: DefaultLeaderElection(),
EnvoyGatewayKubernetesConfiguration: EnvoyGatewayKubernetesConfiguration{
LeaderElection: DefaultLeaderElection(),
},
}
}
if e.Provider.Kubernetes.LeaderElection == nil {
Expand All @@ -56,6 +59,19 @@ func (e *EnvoyGateway) SetEnvoyGatewayDefaults() {
e.Provider.Kubernetes.Client = DefaultKubernetesClient()
}

if e.Provider != nil && e.Provider.Custom != nil && e.Provider.Custom.Resource.Type == ResourceProviderTypeKubernetes {
if e.Provider.Custom.Resource.Kubernetes == nil {
e.Provider.Custom.Resource.Kubernetes = &EnvoyGatewayKubernetesCustomProvider{}
}
if e.Provider.Custom.Resource.Kubernetes.LeaderElection == nil {
e.Provider.Custom.Resource.Kubernetes.LeaderElection = DefaultLeaderElection()
}

if e.Provider.Custom.Resource.Kubernetes.Client == nil {
e.Provider.Custom.Resource.Kubernetes.Client = DefaultKubernetesClient()
}
}

if e.Gateway == nil {
e.Gateway = DefaultGateway()
}
Expand Down Expand Up @@ -98,11 +114,15 @@ func (e *EnvoyGateway) GetEnvoyGatewayAdminAddress() string {

// WatchesNamespaces returns true when Envoy Gateway is configured to watch specific Kubernetes namespaces.
func (e *EnvoyGateway) WatchesNamespaces() bool {
return e.Provider != nil &&
e.Provider.Kubernetes != nil &&
e.Provider.Kubernetes.Watch != nil &&
e.Provider.Kubernetes.Watch.Type == KubernetesWatchModeTypeNamespaces &&
len(e.Provider.Kubernetes.Watch.Namespaces) > 0
if e.Provider == nil || !e.Provider.IsRunningOnKubernetes() {
return false
}

cfg := e.Provider.GetKubernetesConfiguration()

return cfg.Watch != nil &&
cfg.Watch.Type == KubernetesWatchModeTypeNamespaces &&
len(cfg.Watch.Namespaces) > 0
}

// GatewayNamespaceMode returns true if controller uses gateway namespace mode for infra deployments.
Expand Down Expand Up @@ -276,8 +296,10 @@ func DefaultEnvoyGatewayProvider() *EnvoyGatewayProvider {
return &EnvoyGatewayProvider{
Type: ProviderTypeKubernetes,
Kubernetes: &EnvoyGatewayKubernetesProvider{
LeaderElection: DefaultLeaderElection(),
Client: DefaultKubernetesClient(),
EnvoyGatewayKubernetesConfiguration: EnvoyGatewayKubernetesConfiguration{
LeaderElection: DefaultLeaderElection(),
Client: DefaultKubernetesClient(),
},
},
}
}
Expand All @@ -295,7 +317,9 @@ func (e *EnvoyGateway) GetEnvoyGatewayProvider() *EnvoyGatewayProvider {
// DefaultEnvoyGatewayKubeProvider returns a new EnvoyGatewayKubernetesProvider with default settings.
func DefaultEnvoyGatewayKubeProvider() *EnvoyGatewayKubernetesProvider {
return &EnvoyGatewayKubernetesProvider{
RateLimitDeployment: DefaultKubernetesDeployment(DefaultRateLimitImage),
EnvoyGatewayKubernetesInfrastructureConfiguration: EnvoyGatewayKubernetesInfrastructureConfiguration{
RateLimitDeployment: DefaultKubernetesDeployment(DefaultRateLimitImage),
},
}
}

Expand All @@ -320,7 +344,7 @@ func DefaultEnvoyGatewayAdminAddress() *EnvoyGatewayAdminAddress {
// a default EnvoyGatewayKubernetesProvider if unspecified. If EnvoyGatewayProvider is not of
// type "Kubernetes", a nil EnvoyGatewayKubernetesProvider is returned.
func (r *EnvoyGatewayProvider) GetEnvoyGatewayKubeProvider() *EnvoyGatewayKubernetesProvider {
if r.Type != ProviderTypeKubernetes {
if !r.IsRunningOnKubernetes() {
return nil
}

Expand Down Expand Up @@ -361,7 +385,25 @@ func (r *EnvoyGatewayProvider) GetEnvoyGatewayKubeProvider() *EnvoyGatewayKubern
}

func (r *EnvoyGatewayProvider) IsRunningOnKubernetes() bool {
return r.Type == ProviderTypeKubernetes
if r.Type == ProviderTypeKubernetes {
return true
}
if r.Type == ProviderTypeCustom && r.Custom != nil {
return r.Custom.Resource.Type == ResourceProviderTypeKubernetes
}
return false
}

func (r *EnvoyGatewayProvider) IsInfraManagedRemotely() bool {
if r.Type != ProviderTypeCustom {
return false
}

if r.Custom == nil || r.Custom.Infrastructure == nil {
return false
}

return r.Custom.Infrastructure.Type == InfrastructureProviderTypeRemote
}

func (r *EnvoyGatewayProvider) IsRunningOnHost() bool {
Expand All @@ -370,6 +412,24 @@ func (r *EnvoyGatewayProvider) IsRunningOnHost() bool {
r.Custom.Infrastructure.Type == InfrastructureProviderTypeHost
}

func (r *EnvoyGatewayProvider) GetKubernetesConfiguration() EnvoyGatewayKubernetesConfiguration {
if r.Type == ProviderTypeKubernetes {
return r.Kubernetes.EnvoyGatewayKubernetesConfiguration
}

if r.Type == ProviderTypeCustom && r.Custom != nil && r.Custom.Resource.Type == ResourceProviderTypeKubernetes {
return r.Custom.Resource.Kubernetes.EnvoyGatewayKubernetesConfiguration
}
return EnvoyGatewayKubernetesConfiguration{}
}

func (r *EnvoyGatewayProvider) GetKubernetesInfrastructureConfiguration() EnvoyGatewayKubernetesInfrastructureConfiguration {
if r.Type == ProviderTypeKubernetes {
return r.Kubernetes.EnvoyGatewayKubernetesInfrastructureConfiguration
}
return EnvoyGatewayKubernetesInfrastructureConfiguration{}
}

// DefaultEnvoyGatewayLoggingLevel returns a new EnvoyGatewayLogging with default configuration parameters.
// When v1alpha1.LogComponentGatewayDefault specified, all other logging components are ignored.
func (logging *EnvoyGatewayLogging) DefaultEnvoyGatewayLoggingLevel(level LogLevel) LogLevel {
Expand Down
Loading
Loading