로그인 세션이 기본 30 분 만에 끊기는 것은 SAS Logon 과 웹 애플리케이션의 세션 설정이다. Environment Manager 의 구성에서 server 정의를 고치거나, kustomize 로 sas-logon-app 구성에 패치를 얹는다.
| 값 | 의미 |
|---|---|
servlet.session.timeout |
서블릿 세션 유휴 타임아웃 |
http.session.maxAge |
세션 쿠키 수명 |
Environment Manager 화면에서 24h 같은 표기가 들어가는 경우가 있는데, 이 값들은 초 단위 정수로 넣어야 한다.
24시간 -> 86400
8시간 -> 28800
4시간 -> 14400
24h 로 넣어도 예전 릴리스에서는 통과하던 것이 이후 릴리스에서 거부되어, 값이 무시되고 기본값 1800 초가 그대로 쓰이는 일이 생긴다. 업그레이드 후 "전에는 먹었는데 지금은 안 먹는다" 는 형태로 나타나면 이 표기를 먼저 본다.
Viya 4 의 다른 설정은 sas-bases 아래 예제를 site-config 로 복사해 고치는 방식이지만, 세션 타임아웃은 복사할 원본 예제가 없다. 기본값이 서비스 이미지 안에 들어 있기 때문이다. 그래서 새 패치 파일을 직접 만든다.
site-config/sas-logon-app/logon-session-timeout.yaml
apiVersion: builtin
kind: PatchTransformer
metadata:
name: sas-logon-session-timeout
patch: |-
- op: add
path: /data/application.yaml
value: |
server:
servlet:
session:
timeout: 86400
http:
session:
maxAge: 86400
target:
kind: ConfigMap
name: sas-logon-app-config
kustomization.yaml 의 transformers 에 등록하고 배포한다.
값을 바꾼 뒤에는 관련 서비스를 재기동해야 한다. 전체 재기동까지 갈 필요는 없고 로그온과 해당 웹 앱만 돌려도 된다.
kubectl -n <namespace> rollout restart deploy sas-logon-app
kubectl -n <namespace> get deploy | grep -Ei 'studio|explorer|visual'
kubectl -n <namespace> rollout restart deploy <sas-studio-app>
세션 타임아웃은 여러 층이 겹쳐 있어 가장 짧은 값이 이긴다.
proxy-read-timeout · proxy-send-timeout인그레스 쪽은 어노테이션으로 조정한다. Viya 는 인그레스 리소스가 백 개 이상이므로 전부 손대는 대신, 컨트롤러 ConfigMap 의 기본값을 올리고 필요한 인그레스만 어노테이션으로 덮는 편이 현실적이다.
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "60"
로드밸런서의 idle timeout 은 인그레스 값보다 크거나 같아야 한다. 더 짧으면 앞단에서 먼저 끊는다.