From 13ae09310f0a5e4f8c56d5d90600485ad47a9ef3 Mon Sep 17 00:00:00 2001 From: vsamidurai Date: Wed, 27 May 2026 19:57:03 +0100 Subject: [PATCH 1/3] add LB name and namespace in bootstrapconfig. CRC-1963 --- .../v1alpha1/envoybootstrapconfig_types.go | 13 ++++++++++++ api/routing/v1alpha1/zz_generated.deepcopy.go | 20 +++++++++++++++++++ ...uting.qdrant.io_envoybootstrapconfigs.yaml | 15 ++++++++++++++ docs/api.md | 19 ++++++++++++++++++ 4 files changed, 67 insertions(+) diff --git a/api/routing/v1alpha1/envoybootstrapconfig_types.go b/api/routing/v1alpha1/envoybootstrapconfig_types.go index 34d85c0..a189c1e 100644 --- a/api/routing/v1alpha1/envoybootstrapconfig_types.go +++ b/api/routing/v1alpha1/envoybootstrapconfig_types.go @@ -49,6 +49,19 @@ type EnvoyBootstrapConfigSpec struct { // +kubebuilder:default=false // +optional MultiAZ bool `json:"multiAZ,omitempty"` + // LoadBalancerService identifies the Kubernetes Service backing this Envoy + // fleet's cloud load balancer. + // +optional + LoadBalancerService *LoadBalancerServiceReference `json:"loadBalancerService,omitempty"` +} + +// LoadBalancerServiceReference identifies a Kubernetes Service that exposes an +// Envoy fleet through a cloud load balancer. +type LoadBalancerServiceReference struct { + // Name is the Service name. + Name string `json:"name"` + // Namespace is the Service namespace. + Namespace string `json:"namespace"` } // EnvoyBootstrapConfigStatus defines the observed state of EnvoyBootstrapConfig. diff --git a/api/routing/v1alpha1/zz_generated.deepcopy.go b/api/routing/v1alpha1/zz_generated.deepcopy.go index 0a0c3b6..44529ff 100644 --- a/api/routing/v1alpha1/zz_generated.deepcopy.go +++ b/api/routing/v1alpha1/zz_generated.deepcopy.go @@ -106,6 +106,11 @@ func (in *EnvoyBootstrapConfigSpec) DeepCopyInto(out *EnvoyBootstrapConfigSpec) *out = new(string) **out = **in } + if in.LoadBalancerService != nil { + in, out := &in.LoadBalancerService, &out.LoadBalancerService + *out = new(LoadBalancerServiceReference) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvoyBootstrapConfigSpec. @@ -140,6 +145,21 @@ func (in *EnvoyBootstrapConfigStatus) DeepCopy() *EnvoyBootstrapConfigStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LoadBalancerServiceReference) DeepCopyInto(out *LoadBalancerServiceReference) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerServiceReference. +func (in *LoadBalancerServiceReference) DeepCopy() *LoadBalancerServiceReference { + if in == nil { + return nil + } + out := new(LoadBalancerServiceReference) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *QdrantClusterRouting) DeepCopyInto(out *QdrantClusterRouting) { *out = *in diff --git a/charts/qdrant-kubernetes-api/templates/routing-crds/routing.qdrant.io_envoybootstrapconfigs.yaml b/charts/qdrant-kubernetes-api/templates/routing-crds/routing.qdrant.io_envoybootstrapconfigs.yaml index fd5aab4..7646a9e 100644 --- a/charts/qdrant-kubernetes-api/templates/routing-crds/routing.qdrant.io_envoybootstrapconfigs.yaml +++ b/charts/qdrant-kubernetes-api/templates/routing-crds/routing.qdrant.io_envoybootstrapconfigs.yaml @@ -65,6 +65,21 @@ spec: When set the Envoy runs in dedicated mode for this cluster. When nil it runs in shared mode. type: string + loadBalancerService: + description: |- + LoadBalancerService identifies the Kubernetes Service backing this Envoy + fleet's cloud load balancer. + properties: + name: + description: Name is the Service name. + type: string + namespace: + description: Namespace is the Service namespace. + type: string + required: + - name + - namespace + type: object multiAZ: default: false description: |- diff --git a/docs/api.md b/docs/api.md index 63e83e1..404719f 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1740,10 +1740,29 @@ _Appears in:_ | `clusterID` _string_ | ClusterID identifies the Qdrant cluster this Envoy instance serves.
When set the Envoy runs in dedicated mode for this cluster.
When nil it runs in shared mode. | | Optional: \{\}
| | `proxyProtocolEnabled` _boolean_ | ProxyProtocolEnabled enables the PROXY protocol on Envoy listeners. | false | Optional: \{\}
| | `multiAZ` _boolean_ | MultiAZ marks this Envoy fleet as the multi-AZ load balancer. When true,
the route-manager advertises this fact to Envoy via node metadata so that
zone-aware routing decisions can be made per-cluster via
QdrantClusterRouting.spec.multiAZ. | false | Optional: \{\}
| +| `loadBalancerService` _[LoadBalancerServiceReference](#loadbalancerservicereference)_ | LoadBalancerService identifies the Kubernetes Service backing this Envoy
fleet's cloud load balancer. | | Optional: \{\}
| +#### LoadBalancerServiceReference + + + +LoadBalancerServiceReference identifies a Kubernetes Service that exposes an +Envoy fleet through a cloud load balancer. + + + +_Appears in:_ +- [EnvoyBootstrapConfigSpec](#envoybootstrapconfigspec) + +| Field | Description | Default | Validation | +| --- | --- | --- | --- | +| `name` _string_ | Name is the Service name. | | | +| `namespace` _string_ | Namespace is the Service namespace. | | | + + #### QdrantClusterRouting From b0dabb22d72a95fe5e6bc11c51aeb2f4519592a5 Mon Sep 17 00:00:00 2001 From: vsamidurai Date: Thu, 28 May 2026 12:33:33 +0100 Subject: [PATCH 2/3] github action needs PR write to update the comments incase linter detects uncommited changes. --- .github/workflows/pr-workflow.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr-workflow.yaml b/.github/workflows/pr-workflow.yaml index 15cf202..56f81e9 100644 --- a/.github/workflows/pr-workflow.yaml +++ b/.github/workflows/pr-workflow.yaml @@ -6,6 +6,7 @@ on: permissions: contents: read + pull-requests: write jobs: linter: From a8573df1c601316afb2000f9da9da49eff43b099 Mon Sep 17 00:00:00 2001 From: vsamidurai Date: Thu, 28 May 2026 13:04:59 +0100 Subject: [PATCH 3/3] change namespace back to optional --- api/routing/v1alpha1/envoybootstrapconfig_types.go | 2 ++ .../routing.qdrant.io_envoybootstrapconfigs.yaml | 5 +++-- docs/api.md | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/api/routing/v1alpha1/envoybootstrapconfig_types.go b/api/routing/v1alpha1/envoybootstrapconfig_types.go index a189c1e..4623c37 100644 --- a/api/routing/v1alpha1/envoybootstrapconfig_types.go +++ b/api/routing/v1alpha1/envoybootstrapconfig_types.go @@ -61,6 +61,8 @@ type LoadBalancerServiceReference struct { // Name is the Service name. Name string `json:"name"` // Namespace is the Service namespace. + // If empty, defaults to the namespace where the EnvoyBootstrapConfig is created. + // +optional Namespace string `json:"namespace"` } diff --git a/charts/qdrant-kubernetes-api/templates/routing-crds/routing.qdrant.io_envoybootstrapconfigs.yaml b/charts/qdrant-kubernetes-api/templates/routing-crds/routing.qdrant.io_envoybootstrapconfigs.yaml index 7646a9e..1e72fc3 100644 --- a/charts/qdrant-kubernetes-api/templates/routing-crds/routing.qdrant.io_envoybootstrapconfigs.yaml +++ b/charts/qdrant-kubernetes-api/templates/routing-crds/routing.qdrant.io_envoybootstrapconfigs.yaml @@ -74,11 +74,12 @@ spec: description: Name is the Service name. type: string namespace: - description: Namespace is the Service namespace. + description: |- + Namespace is the Service namespace. + If empty, defaults to the namespace where the EnvoyBootstrapConfig is created. type: string required: - name - - namespace type: object multiAZ: default: false diff --git a/docs/api.md b/docs/api.md index 404719f..1418cb3 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1760,7 +1760,7 @@ _Appears in:_ | Field | Description | Default | Validation | | --- | --- | --- | --- | | `name` _string_ | Name is the Service name. | | | -| `namespace` _string_ | Namespace is the Service namespace. | | | +| `namespace` _string_ | Namespace is the Service namespace.
If empty, defaults to the namespace where the EnvoyBootstrapConfig is created. | | Optional: \{\}
| #### QdrantClusterRouting