File tree Expand file tree Collapse file tree 7 files changed +127
-0
lines changed
internal/controller/postgrescluster
pkg/apis/postgres-operator.crunchydata.com/v1beta1 Expand file tree Collapse file tree 7 files changed +127
-0
lines changed Original file line number Diff line number Diff line change @@ -14663,6 +14663,21 @@ spec:
1466314663 - Local
1466414664 maxLength: 10
1466514665 type: string
14666+ ipFamilies:
14667+ items:
14668+ enum:
14669+ - IPv4
14670+ - IPv6
14671+ - foo
14672+ type: string
14673+ type: array
14674+ ipFamilyPolicy:
14675+ description: 'More info: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/'
14676+ enum:
14677+ - SingleStack
14678+ - PreferDualStack
14679+ - RequireDualStack
14680+ type: string
1466614681 metadata:
1466714682 description: Metadata contains metadata for custom resources
1466814683 properties:
@@ -15005,6 +15020,21 @@ spec:
1500515020 - Local
1500615021 maxLength: 10
1500715022 type: string
15023+ ipFamilies:
15024+ items:
15025+ enum:
15026+ - IPv4
15027+ - IPv6
15028+ - foo
15029+ type: string
15030+ type: array
15031+ ipFamilyPolicy:
15032+ description: 'More info: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/'
15033+ enum:
15034+ - SingleStack
15035+ - PreferDualStack
15036+ - RequireDualStack
15037+ type: string
1500815038 metadata:
1500915039 description: Metadata contains metadata for custom resources
1501015040 properties:
@@ -15053,6 +15083,21 @@ spec:
1505315083 - Local
1505415084 maxLength: 10
1505515085 type: string
15086+ ipFamilies:
15087+ items:
15088+ enum:
15089+ - IPv4
15090+ - IPv6
15091+ - foo
15092+ type: string
15093+ type: array
15094+ ipFamilyPolicy:
15095+ description: 'More info: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/'
15096+ enum:
15097+ - SingleStack
15098+ - PreferDualStack
15099+ - RequireDualStack
15100+ type: string
1505615101 metadata:
1505715102 description: Metadata contains metadata for custom resources
1505815103 properties:
@@ -16749,6 +16794,21 @@ spec:
1674916794 - Local
1675016795 maxLength: 10
1675116796 type: string
16797+ ipFamilies:
16798+ items:
16799+ enum:
16800+ - IPv4
16801+ - IPv6
16802+ - foo
16803+ type: string
16804+ type: array
16805+ ipFamilyPolicy:
16806+ description: 'More info: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/'
16807+ enum:
16808+ - SingleStack
16809+ - PreferDualStack
16810+ - RequireDualStack
16811+ type: string
1675216812 metadata:
1675316813 description: Metadata contains metadata for custom resources
1675416814 properties:
Original file line number Diff line number Diff line change @@ -267,6 +267,19 @@ func (r *Reconciler) generateClusterReplicaService(
267267 }
268268 service .Spec .ExternalTrafficPolicy = initialize .FromPointer (spec .ExternalTrafficPolicy )
269269 service .Spec .InternalTrafficPolicy = spec .InternalTrafficPolicy
270+
271+ // Set IPFamilyPolicy and IPFamilies
272+ if spec .IPFamilyPolicy != "" {
273+ policy := corev1 .IPFamilyPolicyType (spec .IPFamilyPolicy )
274+ service .Spec .IPFamilyPolicy = & policy
275+ }
276+ if len (spec .IPFamilies ) > 0 {
277+ service .Spec .IPFamilies = []corev1.IPFamily {}
278+ for _ , family := range spec .IPFamilies {
279+ service .Spec .IPFamilies = append (service .Spec .IPFamilies , corev1 .IPFamily (family ))
280+ }
281+ }
282+
270283 }
271284 service .Spec .Ports = []corev1.ServicePort {servicePort }
272285
Original file line number Diff line number Diff line change @@ -271,6 +271,18 @@ func (r *Reconciler) generatePatroniLeaderLeaseService(
271271 }
272272 service .Spec .ExternalTrafficPolicy = initialize .FromPointer (spec .ExternalTrafficPolicy )
273273 service .Spec .InternalTrafficPolicy = spec .InternalTrafficPolicy
274+
275+ // Set IPFamilyPolicy and IPFamilies
276+ if spec .IPFamilyPolicy != "" {
277+ policy := corev1 .IPFamilyPolicyType (spec .IPFamilyPolicy )
278+ service .Spec .IPFamilyPolicy = & policy
279+ }
280+ if len (spec .IPFamilies ) > 0 {
281+ service .Spec .IPFamilies = []corev1.IPFamily {}
282+ for _ , family := range spec .IPFamilies {
283+ service .Spec .IPFamilies = append (service .Spec .IPFamilies , corev1 .IPFamily (family ))
284+ }
285+ }
274286 }
275287 service .Spec .Ports = []corev1.ServicePort {servicePort }
276288
Original file line number Diff line number Diff line change @@ -183,6 +183,18 @@ func (r *Reconciler) generatePGAdminService(
183183 }
184184 service .Spec .ExternalTrafficPolicy = initialize .FromPointer (spec .ExternalTrafficPolicy )
185185 service .Spec .InternalTrafficPolicy = spec .InternalTrafficPolicy
186+
187+ // Set IPFamilyPolicy and IPFamilies
188+ if spec .IPFamilyPolicy != "" {
189+ policy := corev1 .IPFamilyPolicyType (spec .IPFamilyPolicy )
190+ service .Spec .IPFamilyPolicy = & policy
191+ }
192+ if len (spec .IPFamilies ) > 0 {
193+ service .Spec .IPFamilies = []corev1.IPFamily {}
194+ for _ , family := range spec .IPFamilies {
195+ service .Spec .IPFamilies = append (service .Spec .IPFamilies , corev1 .IPFamily (family ))
196+ }
197+ }
186198 }
187199 service .Spec .Ports = []corev1.ServicePort {servicePort }
188200
Original file line number Diff line number Diff line change @@ -306,6 +306,18 @@ func (r *Reconciler) generatePGBouncerService(
306306 }
307307 service .Spec .ExternalTrafficPolicy = initialize .FromPointer (spec .ExternalTrafficPolicy )
308308 service .Spec .InternalTrafficPolicy = spec .InternalTrafficPolicy
309+
310+ // Set IPFamilyPolicy and IPFamilies
311+ if spec .IPFamilyPolicy != "" {
312+ policy := corev1 .IPFamilyPolicyType (spec .IPFamilyPolicy )
313+ service .Spec .IPFamilyPolicy = & policy
314+ }
315+ if len (spec .IPFamilies ) > 0 {
316+ service .Spec .IPFamilies = []corev1.IPFamily {}
317+ for _ , family := range spec .IPFamilies {
318+ service .Spec .IPFamilies = append (service .Spec .IPFamilies , corev1 .IPFamily (family ))
319+ }
320+ }
309321 }
310322 service .Spec .Ports = []corev1.ServicePort {servicePort }
311323
Original file line number Diff line number Diff line change @@ -20,8 +20,12 @@ type SchemalessObject map[string]any
2020// DeepCopy creates a new SchemalessObject by copying the receiver.
2121func (in SchemalessObject ) DeepCopy () SchemalessObject {
2222 return runtime .DeepCopyJSON (in )
23+
2324}
2425
26+ // +kubebuilder:validation:Enum=IPv4;IPv6;foo
27+ type IPFamily string
28+
2529type ServiceSpec struct {
2630 // +optional
2731 Metadata * Metadata `json:"metadata,omitempty"`
@@ -44,6 +48,15 @@ type ServiceSpec struct {
4448 // +kubebuilder:validation:Enum={ClusterIP,NodePort,LoadBalancer}
4549 Type string `json:"type"`
4650
51+ // More info: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/
52+ // ---
53+ // +optional
54+ // +kubebuilder:validation:Enum=SingleStack;PreferDualStack;RequireDualStack
55+ IPFamilyPolicy string `json:"ipFamilyPolicy,omitempty"`
56+
57+ // +optional
58+ IPFamilies []IPFamily `json:"ipFamilies,omitempty"`
59+
4760 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies
4861 // ---
4962 // Kubernetes assumes the evaluation cost of an enum value is very large.
You can’t perform that action at this time.
0 commit comments