From 4938d2cc160adc499f5b606a897665780948ccae Mon Sep 17 00:00:00 2001 From: Bastian Hofmann Date: Mon, 22 Jun 2026 16:20:07 +0200 Subject: [PATCH] Add support to configure service LoadBalancerSourceRanges --- api/v1/qdrantcluster_types.go | 3 +++ api/v1/zz_generated.deepcopy.go | 5 +++++ .../templates/region-crds/qdrant.io_qdrantclusters.yaml | 6 ++++++ crds/qdrant.io_qdrantclusters.yaml | 6 ++++++ docs/api.md | 1 + 5 files changed, 21 insertions(+) diff --git a/api/v1/qdrantcluster_types.go b/api/v1/qdrantcluster_types.go index e515501..7c70a1a 100644 --- a/api/v1/qdrantcluster_types.go +++ b/api/v1/qdrantcluster_types.go @@ -273,6 +273,9 @@ type KubernetesService struct { // Annotations specifies the annotations for the Service. // +optional Annotations map[string]string `json:"annotations,omitempty"` + // LoadBalancerSourceRanges specifies the allowed CIDR source ranges for the loadBalancer Service. + // +optional + LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty"` } func (s *KubernetesService) GetType() corev1.ServiceType { diff --git a/api/v1/zz_generated.deepcopy.go b/api/v1/zz_generated.deepcopy.go index 7a0c9b5..c1edb97 100644 --- a/api/v1/zz_generated.deepcopy.go +++ b/api/v1/zz_generated.deepcopy.go @@ -289,6 +289,11 @@ func (in *KubernetesService) DeepCopyInto(out *KubernetesService) { (*out)[key] = val } } + if in.LoadBalancerSourceRanges != nil { + in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges + *out = make([]string, len(*in)) + copy(*out, *in) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubernetesService. diff --git a/charts/qdrant-kubernetes-api/templates/region-crds/qdrant.io_qdrantclusters.yaml b/charts/qdrant-kubernetes-api/templates/region-crds/qdrant.io_qdrantclusters.yaml index 693c2b4..1ec0328 100644 --- a/charts/qdrant-kubernetes-api/templates/region-crds/qdrant.io_qdrantclusters.yaml +++ b/charts/qdrant-kubernetes-api/templates/region-crds/qdrant.io_qdrantclusters.yaml @@ -744,6 +744,12 @@ spec: type: string description: Annotations specifies the annotations for the Service. type: object + loadBalancerSourceRanges: + description: LoadBalancerSourceRanges specifies the allowed CIDR + source ranges for the loadBalancer Service. + items: + type: string + type: array type: default: ClusterIP description: 'Type specifies the type of the Service: "ClusterIP", diff --git a/crds/qdrant.io_qdrantclusters.yaml b/crds/qdrant.io_qdrantclusters.yaml index daed69f..133f542 100644 --- a/crds/qdrant.io_qdrantclusters.yaml +++ b/crds/qdrant.io_qdrantclusters.yaml @@ -743,6 +743,12 @@ spec: type: string description: Annotations specifies the annotations for the Service. type: object + loadBalancerSourceRanges: + description: LoadBalancerSourceRanges specifies the allowed CIDR + source ranges for the loadBalancer Service. + items: + type: string + type: array type: default: ClusterIP description: 'Type specifies the type of the Service: "ClusterIP", diff --git a/docs/api.md b/docs/api.md index c81fa84..d5b402c 100644 --- a/docs/api.md +++ b/docs/api.md @@ -457,6 +457,7 @@ _Appears in:_ | --- | --- | --- | --- | | `type` _[ServiceType](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#servicetype-v1-core)_ | Type specifies the type of the Service: "ClusterIP", "NodePort", "LoadBalancer". | ClusterIP | Optional: \{\}
| | `annotations` _object (keys:string, values:string)_ | Annotations specifies the annotations for the Service. | | Optional: \{\}
| +| `loadBalancerSourceRanges` _string array_ | LoadBalancerSourceRanges specifies the allowed CIDR source ranges for the loadBalancer Service. | | Optional: \{\}
| #### KubernetesStatefulSet