Skip to content

Commit 87b5170

Browse files
feat: add session affinity for service (#27)
Co-authored-by: hardy <[email protected]>
1 parent 70b0715 commit 87b5170

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

pkg/apis/common/types.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,16 @@ type ServiceSpecPart struct {
104104
// Annotations specific to the Service resource.
105105
// +optional
106106
Annotations map[string]string `json:"annotations,omitempty"`
107+
108+
// SessionAffinity specifies the session affinity for the Service.
109+
// Supports "ClientIP" and "None".
110+
// Defaults to "None" if not specified.
111+
// +optional
112+
SessionAffinity *corev1.ServiceAffinity `json:"sessionAffinity,omitempty"`
113+
114+
// SessionAffinityConfig contains the configurations of session affinity.
115+
// +optional
116+
SessionAffinityConfig *corev1.SessionAffinityConfig `json:"sessionAffinityConfig,omitempty"`
107117
}
108118

109119
// PersistenceSpec defines configuration for a shared PersistentVolumeClaim (for Deployment).

pkg/apis/common/zz_generated.deepcopy.go

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/builders/runtime/builder.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func (b *RuntimeBuilderStrategy) BuildObjects(ctx context.Context, k8sClient cli
254254
regularServiceMetadata := builders.BuildObjectMeta(regularServiceName, namespace, commonLabels, runtimeConfig.Service.Annotations)
255255
clientServicePorts := builders.BuildServicePorts(runtimeConfig.Service.Ports)
256256

257-
var serviceType corev1.ServiceType = corev1.ServiceTypeClusterIP // Default
257+
var serviceType = corev1.ServiceTypeClusterIP // Default
258258
if runtimeConfig.Service.Type != nil {
259259
serviceType = *runtimeConfig.Service.Type
260260
}
@@ -263,7 +263,12 @@ func (b *RuntimeBuilderStrategy) BuildObjects(ctx context.Context, k8sClient cli
263263
Selector: selectorLabels,
264264
Ports: clientServicePorts,
265265
Type: serviceType,
266-
// Other service spec fields...
266+
// Session affinity configuration
267+
SessionAffinityConfig: runtimeConfig.Service.SessionAffinityConfig,
268+
}
269+
// Set session affinity if specified
270+
if runtimeConfig.Service.SessionAffinity != nil {
271+
clientServiceSpec.SessionAffinity = *runtimeConfig.Service.SessionAffinity
267272
}
268273

269274
logger.V(1).Info("Building Client Service object", "name", regularServiceName, "type", serviceType)

0 commit comments

Comments
 (0)