From 64295f0432e7fddff82ca22e75eee0a4b427bf71 Mon Sep 17 00:00:00 2001 From: John Howard Date: Mon, 18 Sep 2023 07:57:53 -0700 Subject: [PATCH] Remove GC and clarify address --- geps/gep-1762.md | 68 +++++------------------------------------------- 1 file changed, 6 insertions(+), 62 deletions(-) diff --git a/geps/gep-1762.md b/geps/gep-1762.md index 3f232585e5..bb7bacf905 100644 --- a/geps/gep-1762.md +++ b/geps/gep-1762.md @@ -87,7 +87,10 @@ This is handled by [GEP-1651](https://github.com/kubernetes-sigs/gateway-api/pul #### Gateway IP -For setting a specific IP address in a generated `Service`, the `.Spec.Addresses` field can be used. +This section just clarifies and existing part of the spec, how to handle `.spec.addresses` for in-cluster implementations. +Like all other Gateway types, this should impact the address the `Gateway` is reachable at. + +For implementations using a `Service`, this means the `clusterIP` or `loadBalancerIP` (depending on the `Service` type). For example: @@ -109,10 +112,6 @@ spec: This would generate a `Service` with `clusterIP` or `loadBalancerIP`, depending on the Service type. -This follows the same behavior as out-of-cluster Gateway implementations. - -Note: this differs from the selection of "manual deployment", which doesn't use `IPAddress` type. -Instead, these Gateways attach to some existing infrastructure (such as Service) which provides an address. #### Labels and Annotations @@ -141,6 +140,8 @@ exclude these from irrelevant resources. This is intended to clearly identify resources associatd with a specific application, environment, or Gateway. Additionally, it can be used support integration with the kitchen-sync of Kubernetes extensions which rely on labels and annotations. +Validation will be added to prevent any usage with `gateway.networking.k8s.io/` prefix, to avoid conflicts with `gateway.networking.k8s.io/gateway-name` or other future additions. + #### Arbitrary Customization GEP-1867 introduces a new `infrastructure` field, which allows customization of some common configurations (version, size, etc) @@ -224,8 +225,6 @@ type GatewayInfrastructure struct { // For implementations creating other Kubernetes objects, this should be the `metadata.labels` field on resources. // For other implementations, this refers to any relevant (implementation specific) "labels" concepts. // - // If Labels is set on the GatewayClass as well, the labels are merged with the Gateway's labels taking precedence. - // // Support: Extended Labels map[string]string `json:"labels,omitempty"` // Annotations that should be applied to any resources created in response to this Gateway. @@ -233,65 +232,10 @@ type GatewayInfrastructure struct { // For implementations creating other Kubernetes objects, this should be the `metadata.annotations` field on resources. // For other implementations, this refers to any relevant (implementation specific) "annotations" concepts. // - // If Annotations is set on the GatewayClass as well, the labels are merged with the Gateway's labels taking precedence. - // // Support: Extended Annotations map[string]string `json:"annotations,omitempty"` - // ParametersRef is a reference to a resource that contains the configuration - // parameters corresponding to the Gateway. This is optional if the - // controller does not require any additional configuration. - // - // ParametersRef can reference a standard Kubernetes resource, i.e. ConfigMap, - // or an implementation-specific custom resource. The resource must be namespace-scoped - // and live in the same namespace. - // - // If ParametersRef is set on both a Gateway and the corresponding GatewayClass, the merging - // behavior between the two are implementation-specific. - // - // Support: Implementation-specific - // - // +optional - ParametersRef *LocalParametersReference `json:"parametersRef,omitempty"` ... } - -type GatewayClassInfrastructure struct { - // Labels that should be applied to any resources created in response to this GatewayClass. - // - // For implementations creating other Kubernetes objects, this should be the `metadata.labels` field on resources. - // For other implementations, this refers to any relevant (implementation specific) "labels" concepts. - // - // If Labels is set on the Gateway as well, the labels are merged with the Gateway's labels taking precedence. - // - // Support: Extended - Labels map[string]string `json:"labels,omitempty"` - // Annotations that should be applied to any resources created in response to this GatewayClass. - // - // For implementations creating other Kubernetes objects, this should be the `metadata.annotations` field on resources. - // For other implementations, this refers to any relevant (implementation specific) "annotations" concepts. - // - // If Annotations is set on the Gateway as well, the labels are merged with the Gateway's annotations taking precedence. - // - // Support: Extended - Annotations map[string]string `json:"annotations,omitempty"` - ... -} - -// LocalParametersReference identifies an API object containing controller-specific -// configuration resource within the cluster. -type LocalParametersReference struct { - // Group is the group of the referent. - Group Group `json:"group"` - - // Kind is kind of the referent. - Kind Kind `json:"kind"` - - // Name is the name of the referent. - // - // +kubebuilder:validation:MinLength=1 - // +kubebuilder:validation:MaxLength=253 - Name string `json:"name"` -} ``` ## Future Work