diff --git a/api/config/v1alpha1/envoyproxy_types.go b/api/config/v1alpha1/envoyproxy_types.go index 662d5e85d466..7d0e7eaad9d0 100644 --- a/api/config/v1alpha1/envoyproxy_types.go +++ b/api/config/v1alpha1/envoyproxy_types.go @@ -57,6 +57,12 @@ type EnvoyProxySpec struct { // // +optional Bootstrap *string `json:"bootstrap,omitempty"` + + // MergeGateways defines if Gateway resources should be merged onto the same Envoy Proxy Infrastructure. + // Setting this field to true would merge all Gateway Listeners under the parent Gateway Class. + // + // +optional + MergeGateways *bool `json:"mergeGateways,omitempty"` } // EnvoyProxyProvider defines the desired state of a resource provider. diff --git a/api/config/v1alpha1/zz_generated.deepcopy.go b/api/config/v1alpha1/zz_generated.deepcopy.go index 8673618020b2..3c46332b11cb 100644 --- a/api/config/v1alpha1/zz_generated.deepcopy.go +++ b/api/config/v1alpha1/zz_generated.deepcopy.go @@ -253,6 +253,11 @@ func (in *EnvoyProxySpec) DeepCopyInto(out *EnvoyProxySpec) { *out = new(string) **out = **in } + if in.MergeGateways != nil { + in, out := &in.MergeGateways, &out.MergeGateways + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvoyProxySpec. diff --git a/charts/gateway-helm/crds/generated/config.gateway.envoyproxy.io_envoyproxies.yaml b/charts/gateway-helm/crds/generated/config.gateway.envoyproxy.io_envoyproxies.yaml index 0cf86d07dcf2..ae01101f0ee9 100644 --- a/charts/gateway-helm/crds/generated/config.gateway.envoyproxy.io_envoyproxies.yaml +++ b/charts/gateway-helm/crds/generated/config.gateway.envoyproxy.io_envoyproxies.yaml @@ -75,6 +75,12 @@ spec: unspecified, defaults to "System: Info".' type: object type: object + mergeGateways: + description: MergeGateways defines if Gateway resources should be + merged onto the same Envoy Proxy Infrastructure. Setting this field + to true would merge all Gateway Listeners under the parent Gateway + Class. + type: boolean provider: description: Provider defines the desired resource provider and provider-specific configuration. If unspecified, the "Kubernetes" resource provider diff --git a/docs/latest/api/config_types.md b/docs/latest/api/config_types.md index d8e1547aff9c..6699ab7314e5 100644 --- a/docs/latest/api/config_types.md +++ b/docs/latest/api/config_types.md @@ -149,6 +149,7 @@ _Appears in:_ | `provider` _[EnvoyProxyProvider](#envoyproxyprovider)_ | Provider defines the desired resource provider and provider-specific configuration. If unspecified, the "Kubernetes" resource provider is used with default configuration parameters. | | `logging` _[ProxyLogging](#proxylogging)_ | Logging defines logging parameters for managed proxies. If unspecified, default settings apply. This type is not implemented until https://github.com/envoyproxy/gateway/issues/280 is fixed. | | `bootstrap` _string_ | Bootstrap defines the Envoy Bootstrap as a YAML string. Visit https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/bootstrap/v3/bootstrap.proto#envoy-v3-api-msg-config-bootstrap-v3-bootstrap to learn more about the syntax. If set, this is the Bootstrap configuration used for the managed Envoy Proxy fleet instead of the default Bootstrap configuration set by Envoy Gateway. Some fields within the Bootstrap that are required to communicate with the xDS Server (Envoy Gateway) and receive xDS resources from it are not configurable and will result in the `EnvoyProxy` resource being rejected. Backward compatibility across minor versions is not guaranteed. We strongly recommend using `egctl x translate` to generate a `EnvoyProxy` resource with the `Bootstrap` field set to the default Bootstrap configuration used. You can edit this configuration, and rerun `egctl x translate` to ensure there are no validation errors. | +| `mergeGateways` _boolean_ | MergeGateways defines if Gateway resources should be merged onto the same Envoy Proxy Infrastructure. Setting this field to true would merge all Gateway Listeners under the parent Gateway Class. |