Skip to content

Commit b95a928

Browse files
authored
Merge pull request #40 from arangodb/sticky-sessions
Set sesion affinity for coordinator
2 parents 9a1e88c + 1aaa8a9 commit b95a928

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

pkg/util/k8sutil/services.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ func CreateHeadlessService(kubecli kubernetes.Interface, deployment metav1.Objec
6161
},
6262
}
6363
publishNotReadyAddresses := false
64-
if err := createService(kubecli, svcName, deploymentName, deployment.GetNamespace(), ClusterIPNone, "", ports, publishNotReadyAddresses, owner); err != nil {
64+
sessionAffinity := v1.ServiceAffinityNone
65+
if err := createService(kubecli, svcName, deploymentName, deployment.GetNamespace(), ClusterIPNone, "", ports, publishNotReadyAddresses, sessionAffinity, owner); err != nil {
6566
return "", maskAny(err)
6667
}
6768
return svcName, nil
@@ -87,7 +88,8 @@ func CreateDatabaseClientService(kubecli kubernetes.Interface, deployment metav1
8788
role = "coordinator"
8889
}
8990
publishNotReadyAddresses := true
90-
if err := createService(kubecli, svcName, deploymentName, deployment.GetNamespace(), "", role, ports, publishNotReadyAddresses, owner); err != nil {
91+
sessionAffinity := v1.ServiceAffinityClientIP
92+
if err := createService(kubecli, svcName, deploymentName, deployment.GetNamespace(), "", role, ports, publishNotReadyAddresses, sessionAffinity, owner); err != nil {
9193
return "", maskAny(err)
9294
}
9395
return svcName, nil
@@ -107,7 +109,8 @@ func CreateSyncMasterClientService(kubecli kubernetes.Interface, deployment meta
107109
},
108110
}
109111
publishNotReadyAddresses := true
110-
if err := createService(kubecli, svcName, deploymentName, deployment.GetNamespace(), "", "syncmaster", ports, publishNotReadyAddresses, owner); err != nil {
112+
sessionAffinity := v1.ServiceAffinityNone
113+
if err := createService(kubecli, svcName, deploymentName, deployment.GetNamespace(), "", "syncmaster", ports, publishNotReadyAddresses, sessionAffinity, owner); err != nil {
111114
return "", maskAny(err)
112115
}
113116
return svcName, nil
@@ -116,7 +119,8 @@ func CreateSyncMasterClientService(kubecli kubernetes.Interface, deployment meta
116119
// createService prepares and creates a service in k8s.
117120
// If the service already exists, nil is returned.
118121
// If another error occurs, that error is returned.
119-
func createService(kubecli kubernetes.Interface, svcName, deploymentName, ns, clusterIP, role string, ports []v1.ServicePort, publishNotReadyAddresses bool, owner metav1.OwnerReference) error {
122+
func createService(kubecli kubernetes.Interface, svcName, deploymentName, ns, clusterIP, role string,
123+
ports []v1.ServicePort, publishNotReadyAddresses bool, sessionAffinity v1.ServiceAffinity, owner metav1.OwnerReference) error {
120124
labels := LabelsForDeployment(deploymentName, role)
121125
svc := &v1.Service{
122126
ObjectMeta: metav1.ObjectMeta{
@@ -134,6 +138,7 @@ func createService(kubecli kubernetes.Interface, svcName, deploymentName, ns, cl
134138
Selector: labels,
135139
ClusterIP: clusterIP,
136140
PublishNotReadyAddresses: publishNotReadyAddresses,
141+
SessionAffinity: sessionAffinity,
137142
},
138143
}
139144
addOwnerRefToObject(svc.GetObjectMeta(), &owner)

0 commit comments

Comments
 (0)