chart 0.7.4 — install KEDA core + HTTP add-on for AI Studio scale-to-zero

Adds two subchart deps:
  - keda v2.15.1 (event-driven autoscaler, ScaledObject CRD)
  - keda-add-ons-http v0.8.0 (HTTPScaledObject CRD + interceptor-proxy)

Both gated by enabled flags (keda.enabled, kedaHttpAddon.enabled),
default true so all clusters can host AI Studio (per-instance OpenCode
pods that scale 0↔1 on URL hit). Idle cost ~300 MB RAM total — small
relative to typical customer cluster (7+ GB allocatable).

Charts mirrored to registry.odoosky.cloud/odoosky/docker-mirror/charts
following the existing mirror-first pattern used by cert-manager,
traefik, longhorn, external-secrets.

Studio chart (studio-template-v3) created in monorepo as part of the
same feature; chart-side IngressRoute will be updated in 0.1.1 to
point at keda-add-ons-http-interceptor-proxy.keda.svc instead of the
per-instance Service (KEDA HTTP routing pattern). Tower handlers for
deploy/get/write-mode-toggle/delete already shipped in 0.76.47 behind
a studioChartReady=false feature flag.
This commit is contained in:
OdooSky v3
2026-05-09 22:53:37 +03:00
parent d602063448
commit ba5408f7f9
2 changed files with 114 additions and 6 deletions

View File

@@ -23,19 +23,22 @@ description: |
Git).
type: application
version: 0.7.3
appVersion: "0.7.3"
version: 0.7.4
appVersion: "0.7.4"
# All 4 subcharts now resolve from registry.odoosky.cloud (mirrored
# 2026-05-08). Mirror-first discipline + China-region readiness: a
# Jetstack / Traefik / Longhorn / external-secrets-io outage no longer
# blocks new tenant cluster bootstrap.
# All 6 subcharts now resolve from registry.odoosky.cloud (mirrored
# 2026-05-08, KEDA stack added 2026-05-09). Mirror-first discipline
# + China-region readiness: a Jetstack / Traefik / Longhorn /
# external-secrets-io / KEDA outage no longer blocks new tenant
# cluster bootstrap.
#
# Original upstream sources (for re-sync if a chart bumps):
# cert-manager → https://charts.jetstack.io
# traefik → https://traefik.github.io/charts
# longhorn → https://charts.longhorn.io
# external-secrets → https://charts.external-secrets.io
# keda → https://kedacore.github.io/charts
# keda-add-ons-http→ https://kedacore.github.io/charts
#
# Re-sync recipe: `helm pull <chart> --repo <upstream> --version <v>`
# then `helm push <tgz> oci://registry.odoosky.cloud/odoosky/docker-mirror/charts`.
@@ -64,3 +67,29 @@ dependencies:
version: "0.10.7"
repository: "oci://registry.odoosky.cloud/odoosky/docker-mirror/charts"
condition: externalSecrets.enabled
# KEDA core — event-driven autoscaler. Owns the ScaledObject CRD
# and the metrics-server adapter that K8s' HPA reads from. Required
# by KEDA HTTP add-on below; declared here so the install order is
# correct (sync-wave 0 default; HTTP add-on at wave 1).
#
# Currently consumed by AI Studio (per-instance OpenCode pods that
# scale 0↔1 on URL hit, see studio-template-v3). Enabled by default
# because Studio is opt-in per-instance — clusters without any
# Studio pay only for the KEDA control plane (~50 MB RAM).
- name: keda
version: "2.15.1"
repository: "oci://registry.odoosky.cloud/odoosky/docker-mirror/charts"
condition: keda.enabled
# KEDA HTTP add-on — separate component that owns the
# HTTPScaledObject CRD + the interceptor-proxy. Traefik routes
# public traffic to the interceptor (in keda namespace), which
# holds the request while it scales the target Deployment 0→1,
# then forwards. After scaledownPeriod of no traffic, scales 1→0.
#
# AI Studio is the only current consumer; the add-on is harmless
# idle (interceptor is just a small Go service). Studio chart
# creates one HTTPScaledObject per (tenant, instance).
- name: keda-add-ons-http
version: "0.8.0"
repository: "oci://registry.odoosky.cloud/odoosky/docker-mirror/charts"
condition: kedaHttpAddon.enabled