@@ -68,6 +68,57 @@ extraManifests:
6868 name : " gcp-cloud-armor-policy-test"
6969` ` `
7070
71+ ## High Availability and Sticky Sessions
72+
73+ When running multiple replicas, enable sticky sessions to keep the browser session (including WebSocket upgrades) routed to the same Atlantis pod.
74+
75+ - Service-level stickiness (ClientIP):
76+
77+ ` ` ` yaml
78+ service :
79+ sessionAffinity : ClientIP
80+ sessionAffinityConfig :
81+ clientIP :
82+ timeoutSeconds : 10800
83+ ` ` `
84+
85+ - If using NGINX Ingress, consider cookie-based affinity and longer WS timeouts:
86+
87+ ` ` ` yaml
88+ ingress :
89+ annotations :
90+ nginx.ingress.kubernetes.io/affinity : " cookie"
91+ nginx.ingress.kubernetes.io/affinity-mode : " persistent"
92+ nginx.ingress.kubernetes.io/session-cookie-name : " route"
93+ nginx.ingress.kubernetes.io/proxy-read-timeout : " 3600"
94+ nginx.ingress.kubernetes.io/proxy-send-timeout : " 3600"
95+ ` ` `
96+
97+ - If using Gateway API, you can enable cookie persistence via an extra manifest (controller support required):
98+
99+ ` ` ` yaml
100+ extraManifests :
101+ - apiVersion : gateway.networking.x-k8s.io/v1alpha1
102+ kind : XBackendTrafficPolicy
103+ metadata :
104+ name : atlantis-session-persistence
105+ namespace : " .Release.Namespace"
106+ spec :
107+ targetRefs :
108+ - group : " "
109+ kind : Service
110+ name : atlantis
111+ sessionPersistence :
112+ type : Cookie
113+ sessionName : atlantis-session
114+ idleTimeout : 1h
115+ absoluteTimeout : 24h
116+ cookieConfig :
117+ lifetimeType : Session
118+ ` ` `
119+
120+ Optionally, set ` service.internalTrafficPolicy: Local` or `Cluster` depending on your environment and how you want internal routing handled.
121+
71122# # Values
72123
73124| Key | Type | Default | Description |
@@ -186,11 +237,14 @@ extraManifests:
186237| secret.annotations | object | `{}` | Annotations for the Secrets. Check values.yaml for examples. |
187238| service.annotations | object | `{}` | |
188239| service.externalTrafficPolicy | string | `nil` | |
240+ | service.internalTrafficPolicy | string | `nil` | [optional] Internal traffic policy for the Service. One of : Cluster, Local. |
189241| service.loadBalancerIP | string | `nil` | |
190242| service.loadBalancerSourceRanges | list | `[]` | |
191243| service.nodePort | string | `nil` | |
192244| service.port | int | `80` | |
193245| service.portName | string | `"atlantis"` | |
246+ | service.sessionAffinity | string | `nil` | [optional] Kubernetes Service sessionAffinity setting. One of : ClientIP, None. |
247+ | service.sessionAffinityConfig | object | `nil` | [optional] Kubernetes Service sessionAffinityConfig. Only applicable when sessionAffinity=ClientIP. |
194248| service.targetPort | int | `4141` | [optional] Define the port you would like atlantis to run on. Defaults to 4141. |
195249| service.type | string | `"NodePort"` | |
196250| serviceAccount.annotations | object | `{}` | Annotations for the Service Account. Check values.yaml for examples. |
0 commit comments