🚀 Wave Autoscale 3.2.2: SSO, Realtime Smart Sizing, Wave Diagnosis
저자: Hwansoo Kim (opens in a new tab)
날짜: 2026년 5월 21일
TL;DR
- Realtime Smart Sizing. 권장값이 Kubernetes in-place pod resize (1.27+) 또는 manifest patch 로 자동 적용 — pod 재시작 없음, rollout 없음. VPA 스타일 hysteresis 가 프로덕션 churn 을 막습니다.
- OIDC Single Sign-On. Web Console 이 Okta, Microsoft Entra ID, Google Workspace, Keycloak 와 페더레이션. 로컬 admin 은 break-glass 로 유지되어 공유 비밀번호가 사라집니다.
- Wave Insights 가 Wave Diagnosis 로 재편. 같은 데이터, 인시던트 중 SRE 가 실제로 던지는 질문 — Failures / Waste / Capacity — 중심으로 재구성. 기존 URL 은 redirect 됩니다.
🎯 Realtime Smart Sizing — 권장에서 적용까지 자동으로
Kubernetes 네이티브 대안은 VPA 입니다. VPA 는 전통적으로 pod 를 evict 하고 재시작해 권장값을 적용했지만, 최근의 InPlaceOrRecreate update mode (K8s 1.33 beta, 1.35 에서 in-place pod resize 와 함께 graduate) 는 Wave 가 사용하는 동일한 /resize subresource 를 호출하며, 노드가 새 리소스를 수용하지 못할 때 evict-and-recreate 로 fallback 합니다. 즉 최신 클러스터에서는 양쪽 모두 재시작을 피할 수 있고 — 차별점은 resize 호출의 위쪽으로 이동합니다: 권장값이 어떻게 선택되고, 언제 실제로 적용되며, 운영자가 무엇을 보는가. Smart Sizing 은 이미 권장 쪽을 여러 릴리스에 걸쳐 주도해왔고, 3.2.2 가 적용 경로를 주변 파이프라인 (컨테이너별 buffer / min / max, VPA 의 priority-only 임계값이 놓치는 large-container drift 를 잡아내는 3-가드 hysteresis, Web Console 의 Apply History 패널) 과 함께 연결합니다.
각 워크로드 (Deployment, StatefulSet, DaemonSet, Argo Rollout, OpenShift DeploymentConfig) 는 세 가지 Apply Mode 중 하나를 선택합니다:
- Off — 권장값만 생성, 워크로드에는 손대지 않음.
- In-Place Pod Resize — 실행 중인 pod 에 Kubernetes 1.27+
/resizesubresource 호출. 재시작 없음, rollout 없음, downtime 없음. (InPlacePodVerticalScalingfeature gate; 1.33 부터 GA.) - Manifest Patch — 워크로드 spec 을 patch; 다음 rollout 부터 새 pod 가 반영. 어디서나 안전.
자동 적용은 컨테이너 단위 opt-in 입니다 — 명시적으로 켜기 전까지 클러스터에 어떤 변경도 일어나지 않습니다.
운영 노이즈를 존중하는 hysteresis
10분 주기마다 미세하게 다른 권장값이 매번 적용된다면 churn 이 폭증합니다. Wave 는 다음 세 가드 중 하나라도 충족할 때만 적용합니다:
| 가드 | 임계값 |
|---|---|
| Priority (변화량 누적 비율) | ≥ 10 % |
| CPU 절대 변화량 | ≥ 50 mCPU |
| Memory 절대 변화량 | ≥ 64 MiB |
10% priority 가드는 VPA Updater 의 --pod-update-threshold default 와 동일 — 산업 표준 reference 값입니다. 절대값 가드는 우리의 추가입니다 — 큰 컨테이너에서 비율은 작지만 절대 변화가 의미 있는 케이스를 잡아내는 안전망입니다.
자동 적용을 켜기 전에
- In-Place 는 pod 당 fire-and-forget. 노드 리소스 부족으로 kubelet 이 거부하면 해당 pod 는 건너뛰고 다음 사이클에서 재시도. 재스케줄 보장이 필요하면 Manifest 모드를 사용하세요.
- Manifest 모드는 Argo CD auto-sync 와 충돌. Argo 가 patch 를 drift 로 감지하고 되돌립니다. Wave 가 리소스 값의 source of truth 여야 하는 워크로드는 — Autopilot 과 마찬가지로 — auto-sync 를 꺼주세요.
- Deployment 자동 적용은 Autopilot 전환 시 해제. Autopilot 이 관리하는 워크로드의 리소스 결정은 Autopilot 의 것이며, Wave 는 같은 필드에 두 명의 writer 를 두지 않습니다.
전체 운영 가이드는 /docs/wave-sizing/realtime-smart-sizing 에 있습니다.
🔐 OIDC Single Sign-On
Kubernetes 는 대시보드 인증을 해결하지 않습니다. 콘솔류 도구들은 인증 없이 배포하거나, kubectl proxy + kubeconfig 에 의존하거나, 단일 공유 admin 계정을 사용합니다. 어떤 것도 팀 단위 컴플라이언스 리뷰를 통과하지 않죠. Wave Autoscale Web Console 은 단일 공유 admin 문제를 가지고 있었고, 3.2.2 가 그것을 해결합니다.
- 표준 기반 OIDC. Okta, Microsoft Entra ID (Azure AD), Google Workspace, Keycloak 등 OIDC 공급자와 동작. Authorization Code with PKCE, 설정 가능한 email claim, 옵션 verified-email 강제.
- Stateless. OIDC state, nonce, PKCE verifier 가 단일 AES-256-GCM 암호화 쿠키에 담겨 이동. 외부 세션 스토어 없음, Redis 없음.
- 사전 프로비저닝. Admin 이
auth_source = sso로 사용자 행을 만들고 기존 role (Viewer / Operator / Manager / Admin) 중 하나를 부여. 첫 IdP 로그인 시 email 일치로 행에 바인딩. - 로컬 admin 은 break-glass 로 유지. 로그인 화면 토글로 기존 계정 사용 가능 — IdP 장애가 클러스터 접근을 차단하지 못합니다.
설정은 /docs/administration/sso-setup 에 끝까지 문서화되어 있습니다 — env var 표, claims mapping, IdP 별 함정 (Entra ID 개인 계정, Keycloak preferred_username immutability), troubleshooting 까지. 첫 IdP 셋업에 약 10분 잡으시면 됩니다.
🔍 Wave Insights → Wave Diagnosis
"이 워크로드가 지금 왜 깨졌는가" 에 대한 Kubernetes 네이티브 답은 kubectl describe, kubectl logs, 그리고 대시보드 체인입니다. 콘솔은 그 다음에 여는 세 번째 탭이며, 운영자는 이미 무엇을 찾는지 알고 있습니다. Forecasting 프레임 — "무엇이 깨질 수 있는가" — 은 그 워크플로의 방해물이 됩니다.
3.2.2 는 영역을 세 개의 bucket 으로 재구성하고, 각각 하나의 질문에 답하게 합니다:
| Bucket | 질문 | 페이지 |
|---|---|---|
| Failures | "지금 이 워크로드가 왜 이상한가?" | Memory Leak Detection, Pod Scheduling Delay, Workload CPU Utilization |
| Waste | "어디에 돈을 흘리고 있는가?" | Idle Node Detection (PV 낭비는 Additional Features 에 유지) |
| Capacity | "언제 공간이 부족해지는가?" | Cluster Resource Forecast |
각 페이지는 질문으로 시작하고, severity 색상이 입혀진 verdict 가 답을 먼저 보여줍니다. 기반 테이블, 차트, 메트릭 수집은 그대로입니다.
기존 링크는?
Diagnosis 문서는 /docs/wave-diagnosis/* 아래 있습니다. 기존 문서 URL 은 301 redirect 로 계속 작동합니다 — 북마크, Slack 스레드, 검색엔진의 이전 구조 항목은 깨지지 않습니다. sub-grouping (Reliability / Performance / Cost Efficiency) 도 콘솔에 맞춰 Failures / Waste / Capacity 로 교체됩니다. API 경로와 query key 는 그대로입니다.