Skip to content

Commit 9424d04

Browse files
committed
add feature flag for listener name
Signed-off-by: Huabing (Robin) Zhao <[email protected]>
1 parent 6085e74 commit 9424d04

File tree

482 files changed

+3541
-575
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

482 files changed

+3541
-575
lines changed

.github/workflows/build_and_test.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ jobs:
102102
- version: v1.33.1
103103
ipFamily: dual # only run dual test on latest version to save time
104104
profile: gateway-namespace-mode
105+
- version: v1.33.1
106+
ipFamily: ipv4
107+
profile: address-as-listener-name
108+
- version: v1.32.5
109+
ipFamily: ipv6
110+
profile: address-as-listener-name
105111
steps:
106112
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
107113
- uses: ./tools/github-actions/setup-deps
@@ -149,6 +155,12 @@ jobs:
149155
- version: v1.33.1
150156
ipFamily: dual # only run dual test on latest version to save time
151157
profile: gateway-namespace-mode
158+
- version: v1.33.1
159+
ipFamily: ipv4
160+
profile: address-as-listener-name
161+
- version: v1.32.5
162+
ipFamily: ipv6
163+
profile: address-as-listener-name
152164
steps:
153165
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
154166
- uses: ./tools/github-actions/setup-deps

api/v1alpha1/envoygateway_helpers.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,32 @@ func (e *EnvoyGateway) GatewayNamespaceMode() bool {
109109
*e.Provider.Kubernetes.Deploy.Type == KubernetesDeployModeTypeGatewayNamespace
110110
}
111111

112+
// featureFlags are the default feature flags for Envoy Gateway.
113+
var featureFlags = map[FeatureFlag]bool{
114+
FeatureUseAddressAsListenerName: false,
115+
}
116+
117+
// IsFeatureEnabled checks if a feature is enabled in the EnvoyGateway configuration.
118+
func (f *FeatureFlags) IsFeatureEnabled(feature FeatureFlag) bool {
119+
if f != nil {
120+
for _, disable := range f.Disabled {
121+
if disable == feature {
122+
return false
123+
}
124+
}
125+
for _, enable := range f.Enabled {
126+
if enable == feature {
127+
return true
128+
}
129+
}
130+
}
131+
132+
if enabled, found := featureFlags[feature]; found {
133+
return enabled
134+
}
135+
return false
136+
}
137+
112138
// DefaultLeaderElection returns a new LeaderElection with default configuration parameters.
113139
func DefaultLeaderElection() *LeaderElection {
114140
return &LeaderElection{

api/v1alpha1/envoygateway_types.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,27 @@ type EnvoyGatewaySpec struct {
9393
//
9494
// +optional
9595
ExtensionAPIs *ExtensionAPISettings `json:"extensionApis,omitempty"`
96+
97+
// FeatureFlags defines the feature flags for Envoy Gateway.
98+
// Unlike ExtensionAPIs, these flags are temporary and will be removed in future releases once the features are stable.
99+
FeatureFlags *FeatureFlags `json:"featureFlags,omitempty"`
100+
}
101+
102+
// FeatureFlag defines a feature flag for Envoy Gateway.
103+
type FeatureFlag string
104+
105+
const (
106+
// FeatureUseAddressAsListenerName indicates that the listener name should be derived from the address and port.
107+
FeatureUseAddressAsListenerName FeatureFlag = "UseAddressAsListenerName"
108+
)
109+
110+
// FeatureFlags provide a mechanism to gate breaking changes or experimental features in new Envoy Gateway releases.
111+
// Each flag may be enabled or disabled by default and can be toggled through the EnvoyGateway resource.
112+
// The names of these flags will be included in the release notes alongside an explanation of the change.
113+
// Please note that these flags are temporary and will be removed in future releases once the features are stable.
114+
type FeatureFlags struct {
115+
Enabled []FeatureFlag `json:"enabled,omitempty"`
116+
Disabled []FeatureFlag `json:"disabled,omitempty"`
96117
}
97118

98119
type KubernetesClient struct {

api/v1alpha1/zz_generated.deepcopy.go

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

internal/cmd/egctl/testdata/translate/out/default-resources.all.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,7 +1134,7 @@ xds:
11341134
name: eg
11351135
namespace: default
11361136
sectionName: http
1137-
name: 0.0.0.0-10080
1137+
name: default/eg/http
11381138
perConnectionBufferLimitBytes: 32768
11391139
- activeState:
11401140
listener:
@@ -1254,7 +1254,7 @@ xds:
12541254
name: eg
12551255
namespace: default
12561256
sectionName: grpc
1257-
name: 0.0.0.0-8080
1257+
name: default/eg/grpc
12581258
perConnectionBufferLimitBytes: 32768
12591259
- activeState:
12601260
listener:
@@ -1342,7 +1342,7 @@ xds:
13421342
filterMetadata:
13431343
envoy-gateway:
13441344
resources: []
1345-
name: 0.0.0.0-1234
1345+
name: default/eg/tcp
13461346
perConnectionBufferLimitBytes: 32768
13471347
- activeState:
13481348
listener:
@@ -1437,7 +1437,7 @@ xds:
14371437
filterMetadata:
14381438
envoy-gateway:
14391439
resources: []
1440-
name: 0.0.0.0-8443
1440+
name: default/eg/tls-passthrough
14411441
perConnectionBufferLimitBytes: 32768
14421442
- activeState:
14431443
listener:
@@ -1525,7 +1525,7 @@ xds:
15251525
'@type': type.googleapis.com/envoy.extensions.filters.udp.udp_proxy.v3.Route
15261526
cluster: udproute/default/backend/rule/-1
15271527
statPrefix: service
1528-
name: 0.0.0.0-1234
1528+
name: default/eg/udp
15291529
- '@type': type.googleapis.com/envoy.admin.v3.RoutesConfigDump
15301530
dynamicRouteConfigs:
15311531
- routeConfig:

internal/cmd/egctl/testdata/translate/out/from-gateway-api-to-xds.all.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -992,7 +992,7 @@
992992
}
993993
}
994994
},
995-
"name": "0.0.0.0-10080",
995+
"name": "default/eg/http",
996996
"perConnectionBufferLimitBytes": 32768
997997
}
998998
}
@@ -1158,7 +1158,7 @@
11581158
}
11591159
}
11601160
},
1161-
"name": "0.0.0.0-8080",
1161+
"name": "default/eg/grpc",
11621162
"perConnectionBufferLimitBytes": 32768
11631163
}
11641164
}
@@ -1277,7 +1277,7 @@
12771277
}
12781278
}
12791279
},
1280-
"name": "0.0.0.0-1234",
1280+
"name": "default/eg/tcp",
12811281
"perConnectionBufferLimitBytes": 32768
12821282
}
12831283
}
@@ -1409,7 +1409,7 @@
14091409
}
14101410
}
14111411
},
1412-
"name": "0.0.0.0-8443",
1412+
"name": "default/eg/tls-passthrough",
14131413
"perConnectionBufferLimitBytes": 32768
14141414
}
14151415
}
@@ -1526,7 +1526,7 @@
15261526
}
15271527
}
15281528
],
1529-
"name": "0.0.0.0-1234"
1529+
"name": "default/eg/udp"
15301530
}
15311531
}
15321532
}

internal/cmd/egctl/testdata/translate/out/from-gateway-api-to-xds.all.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ xds:
587587
name: eg
588588
namespace: default
589589
sectionName: http
590-
name: 0.0.0.0-10080
590+
name: default/eg/http
591591
perConnectionBufferLimitBytes: 32768
592592
- activeState:
593593
listener:
@@ -707,7 +707,7 @@ xds:
707707
name: eg
708708
namespace: default
709709
sectionName: grpc
710-
name: 0.0.0.0-8080
710+
name: default/eg/grpc
711711
perConnectionBufferLimitBytes: 32768
712712
- activeState:
713713
listener:
@@ -795,7 +795,7 @@ xds:
795795
filterMetadata:
796796
envoy-gateway:
797797
resources: []
798-
name: 0.0.0.0-1234
798+
name: default/eg/tcp
799799
perConnectionBufferLimitBytes: 32768
800800
- activeState:
801801
listener:
@@ -890,7 +890,7 @@ xds:
890890
filterMetadata:
891891
envoy-gateway:
892892
resources: []
893-
name: 0.0.0.0-8443
893+
name: default/eg/tls-passthrough
894894
perConnectionBufferLimitBytes: 32768
895895
- activeState:
896896
listener:
@@ -978,7 +978,7 @@ xds:
978978
'@type': type.googleapis.com/envoy.extensions.filters.udp.udp_proxy.v3.Route
979979
cluster: udproute/default/backend/rule/-1
980980
statPrefix: service
981-
name: 0.0.0.0-1234
981+
name: default/eg/udp
982982
- '@type': type.googleapis.com/envoy.admin.v3.RoutesConfigDump
983983
dynamicRouteConfigs:
984984
- routeConfig:

internal/cmd/egctl/testdata/translate/out/from-gateway-api-to-xds.listener.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ xds:
151151
name: eg
152152
namespace: default
153153
sectionName: http
154-
name: 0.0.0.0-10080
154+
name: default/eg/http
155155
perConnectionBufferLimitBytes: 32768
156156
- activeState:
157157
listener:
@@ -271,7 +271,7 @@ xds:
271271
name: eg
272272
namespace: default
273273
sectionName: grpc
274-
name: 0.0.0.0-8080
274+
name: default/eg/grpc
275275
perConnectionBufferLimitBytes: 32768
276276
- activeState:
277277
listener:
@@ -359,7 +359,7 @@ xds:
359359
filterMetadata:
360360
envoy-gateway:
361361
resources: []
362-
name: 0.0.0.0-1234
362+
name: default/eg/tcp
363363
perConnectionBufferLimitBytes: 32768
364364
- activeState:
365365
listener:
@@ -454,7 +454,7 @@ xds:
454454
filterMetadata:
455455
envoy-gateway:
456456
resources: []
457-
name: 0.0.0.0-8443
457+
name: default/eg/tls-passthrough
458458
perConnectionBufferLimitBytes: 32768
459459
- activeState:
460460
listener:
@@ -542,4 +542,4 @@ xds:
542542
'@type': type.googleapis.com/envoy.extensions.filters.udp.udp_proxy.v3.Route
543543
cluster: udproute/default/backend/rule/-1
544544
statPrefix: service
545-
name: 0.0.0.0-1234
545+
name: default/eg/udp

internal/cmd/egctl/testdata/translate/out/jwt-single-route-single-match-to-xds.all.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,7 @@
703703
}
704704
}
705705
},
706-
"name": "0.0.0.0-10080",
706+
"name": "envoy-gateway-system/eg/http",
707707
"perConnectionBufferLimitBytes": 32768
708708
}
709709
}

internal/cmd/egctl/testdata/translate/out/jwt-single-route-single-match-to-xds.all.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ xds:
425425
name: eg
426426
namespace: envoy-gateway-system
427427
sectionName: http
428-
name: 0.0.0.0-10080
428+
name: envoy-gateway-system/eg/http
429429
perConnectionBufferLimitBytes: 32768
430430
- '@type': type.googleapis.com/envoy.admin.v3.RoutesConfigDump
431431
dynamicRouteConfigs:

0 commit comments

Comments
 (0)