Browse Source

HUE-9003 [k8s] Use session affinity in load balancing service

Also add cookie based for ingress.
Romain 6 years ago
parent
commit
5344841095

+ 2 - 2
tools/kubernetes/helm/hue/templates/configmap-nginx.yaml

@@ -17,7 +17,7 @@ data:
         ## ssl_certificate_key /path/to/ssl/key;
 
         location / {
-            proxy_pass http://hue;
+            proxy_pass http://localhost:8888;
 
             # Or if the upstream Hue instances are running behind https://
             ## proxy_pass https://hue;
@@ -35,7 +35,7 @@ data:
         ip_hash;
 
         # List all the Hue instances here for high availability.
-        server hue:8888 max_fails=3;
+        server localhost:8888 max_fails=3;
         #server HUE_HOST2:8888 max_fails=3;
     }
 {{- end -}}

+ 4 - 0
tools/kubernetes/helm/hue/templates/ingress-http.yaml

@@ -5,6 +5,10 @@ metadata:
   name: hue-ingress
   annotations:
     kubernetes.io/ingress.class: nginx
+    nginx.ingress.kubernetes.io/affinity: "cookie"
+    nginx.ingress.kubernetes.io/session-cookie-name: "hue-balancer-ingress"
+    nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
+    nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
 spec:
   rules:
   - host: {{ .Values.ingress.domain }}

+ 4 - 0
tools/kubernetes/helm/hue/templates/ingress-https.yaml

@@ -8,6 +8,10 @@ metadata:
     certmanager.k8s.io/cluster-issuer: letsencrypt-prod
     certmanager.k8s.io/acme-challenge-type: http01
     nginx.ingress.kubernetes.io/ssl-redirect: "true"
+    nginx.ingress.kubernetes.io/affinity: "cookie"
+    nginx.ingress.kubernetes.io/session-cookie-name: "hue-balancer-ingress"
+    nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
+    nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
 spec:
   rules:
   - host: {{ .Values.ingress.domain }}

+ 4 - 0
tools/kubernetes/helm/hue/templates/service-nginx.yaml → tools/kubernetes/helm/hue/templates/service-nginx-hue.yaml

@@ -8,6 +8,10 @@ spec:
   # type: LoadBalancer
   selector:
     pod: hue
+  sessionAffinity: ClientIP
+  sessionAffinityConfig:
+    clientIP:
+      timeoutSeconds: 86400
   ports:
     - protocol: TCP
       port: 80

+ 1 - 1
tools/kubernetes/helm/hue/values.yaml

@@ -3,7 +3,7 @@ image:
    tag: "latest"
    pullPolicy: "IfNotPresent"
 hue:
-  replicas: 1
+  replicas: 2
   database:
     create: true
     persist: true