# kedacore/charts architecture

> Architecture diagram of the GitHub repository kedacore/charts, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kedacore/charts
- Repository: https://github.com/kedacore/charts

## Overview

1. This repository is a Helm chart distribution repo, not an application codebase. Its primary job is to package and publish Kubernetes deployment manifests for KEDA and related add-ons.

2. The top-level product split is into three charts:
   - `keda`: the core KEDA installation
   - `http-add-on`: the HTTP autoscaling add-on
   - `external-scaler-azure-cosmos-db`: a specialized external scaler integration

3. The `keda` chart is the main control plane package. Its templates deploy the core KEDA manager, metrics server, and validating webhooks, plus the Kubernetes RBAC, services, service accounts, pod disruption budgets, and monitoring resources that support them.

4. In the KEDA architecture, the manager is the operator-like component that reconciles KEDA custom resources. The metrics server exposes custom metrics to Kubernetes so the Horizontal Pod Autoscaler can scale workloads based on event sources. The webhook layer validates CRD objects at admission time.

5. The `keda` chart also installs the CRDs that define KEDA’s API surface: `ScaledObject`, `ScaledJob`, `TriggerAuthentication`, `ClusterTriggerAuthentication`, `CloudEventSource`, and `ClusterCloudEventSource`. These are the primary boundary between user intent and KEDA reconciliation.

6. Certificate-related templates in `keda/templates/cert-manager` show that the chart can manage webhook/serving TLS either with cert-manager or self-signed issuance. That makes TLS a deployment concern inside the chart, not an external app dependency.

7. The `http-add-on` chart is a multi-component add-on with its own control and data path:
   - an operator component
   - a scaler component
   - an interceptor component
   - CRDs for `HTTPScaledObject` and `InterceptorRoute`

8. In the HTTP add-on, the interceptor is the request-facing runtime that sits in front of HTTP workloads, while the scaler and operator coordinate autoscaling behavior through Kubernetes resources. The chart templates separate these into distinct deployments, services, RBAC, and service accounts, indicating clear runtime boundaries.

9. The `external-scaler-azure-cosmos-db` chart is a narrower integration package. It deploys a scaler service and scaler deployment that connect KEDA to Azure Cosmos DB change feed behavior, representing an extension point rather than core functionality.

10. `docs/` contains packaged chart artifacts and repository index files. This indicates the repo is also the publishable Helm repository source, where release tarballs and chart indexes are stored for consumption by `helm repo add` and `helm search`.

11. `samples/nginx-scaledobject.yml` is a usage example rather than a runtime component. It demonstrates how consumers author KEDA custom resources to connect an application workload to autoscaling behavior.

12. The `.github/workflows` files show CI is organized around chart-specific validation pipelines. Separate workflows for core, HTTP add-on, and Cosmos DB scaler imply independent packaging, linting, and release checks per chart.

13. Architecturally, the important boundary is between chart packaging and cluster runtime. This repo does not run the autoscalers itself; it defines the Kubernetes objects that will run in a user’s cluster and the CRDs/controllers those objects depend on.

14. For a diagram, the main flows are: Helm renders templates → Kubernetes installs CRDs and control-plane deployments → KEDA/operator or add-on components watch custom resources → metrics/webhook/scaler services interact with Kubernetes and application workloads → HPA or workload scaling reacts to emitted metrics or HTTP traffic.

Main entry points: [`keda`](https://github.com/kedacore/charts/tree/main/keda) (KEDA), [`http-add-on`](https://github.com/kedacore/charts/tree/main/http-add-on) (HTTP add-on), [`keda/templates/crds`](https://github.com/kedacore/charts/tree/main/keda/templates/crds) (CRDs), [`docs`](https://github.com/kedacore/charts/tree/main/docs) (Chart repo)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_charts["Helm charts"]
  node_keda_chart["KEDA<br/>helm chart"]
  node_keda_crds["CRDs<br/>api schema"]
  node_keda_manager["Manager<br/>controller"]
  node_keda_metrics["Metrics"]
  node_keda_webhooks["Webhooks<br/>admission layer"]
  node_keda_tls["TLS setup<br/>cert provisioning"]
  node_http_chart["HTTP add-on<br/>helm chart"]
  node_http_crds["HTTP CRDs<br/>api schema"]
  node_http_operator["Operator<br/>controller"]
  node_http_scaler["Scaler<br/>integration service"]
  node_http_interceptor["Interceptor<br/>request path"]
  node_cosmos_chart["Cosmos scaler<br/>helm chart"]
  node_cosmos_scaler["Scaler svc<br/>external scaler"]
end

subgraph group_distribution["Repo distribution"]
  node_docs_repo[("Chart repo<br/>package index")]
  node_ci_workflows["CI workflows<br/>automation<br/>[workflows]"]
  node_sample_usage["Sample manifest<br/>example"]
end

node_keda_chart -->|"installs"| node_keda_crds
node_keda_chart -->|"deploys"| node_keda_manager
node_keda_chart -->|"deploys"| node_keda_metrics
node_keda_chart -->|"deploys"| node_keda_webhooks
node_keda_chart -->|"configures"| node_keda_tls
node_keda_manager -->|"watches"| node_keda_crds
node_keda_webhooks -->|"uses"| node_keda_tls
node_keda_metrics -->|"serves metrics for"| node_keda_crds
node_http_chart -->|"installs"| node_http_crds
node_http_chart -->|"deploys"| node_http_operator
node_http_chart -->|"deploys"| node_http_scaler
node_http_chart -->|"deploys"| node_http_interceptor
node_http_operator -->|"watches"| node_http_crds
node_http_interceptor -->|"reports to"| node_http_scaler
node_cosmos_chart -->|"deploys"| node_cosmos_scaler
node_docs_repo -->|"publishes"| node_keda_chart
node_docs_repo -->|"publishes"| node_http_chart
node_docs_repo -->|"publishes"| node_cosmos_chart
node_ci_workflows -->|"validates"| node_keda_chart
node_ci_workflows -->|"validates"| node_http_chart
node_ci_workflows -->|"validates"| node_cosmos_chart
node_sample_usage -.->|"demonstrates"| node_keda_crds

click node_keda_chart "https://github.com/kedacore/charts/tree/main/keda"
click node_keda_crds "https://github.com/kedacore/charts/tree/main/keda/templates/crds"
click node_keda_manager "https://github.com/kedacore/charts/tree/main/keda/templates/manager"
click node_keda_metrics "https://github.com/kedacore/charts/tree/main/keda/templates/metrics-server"
click node_keda_webhooks "https://github.com/kedacore/charts/tree/main/keda/templates/webhooks"
click node_keda_tls "https://github.com/kedacore/charts/tree/main/keda/templates/cert-manager"
click node_http_chart "https://github.com/kedacore/charts/tree/main/http-add-on"
click node_http_crds "https://github.com/kedacore/charts/tree/main/http-add-on/templates/crds"
click node_http_operator "https://github.com/kedacore/charts/tree/main/http-add-on/templates/operator"
click node_http_scaler "https://github.com/kedacore/charts/tree/main/http-add-on/templates/scaler"
click node_http_interceptor "https://github.com/kedacore/charts/tree/main/http-add-on/templates/interceptor"
click node_cosmos_chart "https://github.com/kedacore/charts/tree/main/external-scaler-azure-cosmos-db"
click node_cosmos_scaler "https://github.com/kedacore/charts/tree/main/external-scaler-azure-cosmos-db/templates"
click node_docs_repo "https://github.com/kedacore/charts/tree/main/docs"
click node_ci_workflows "https://github.com/kedacore/charts/blob/main/.github/workflows"
click node_sample_usage "https://github.com/kedacore/charts/blob/main/samples/nginx-scaledobject.yml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_keda_chart,node_keda_crds,node_keda_manager,node_keda_metrics,node_keda_webhooks,node_keda_tls,node_http_chart,node_http_crds,node_http_operator,node_http_scaler,node_http_interceptor,node_cosmos_chart,node_cosmos_scaler toneBlue
class node_docs_repo,node_ci_workflows,node_sample_usage toneAmber
```

## Components

### Helm charts

Packaged Kubernetes deployment charts for KEDA and add-ons.

- [KEDA](https://github.com/kedacore/charts/tree/main/keda): helm chart · Core KEDA control-plane package. · `keda`
- [CRDs](https://github.com/kedacore/charts/tree/main/keda/templates/crds): api schema · Defines ScaledObject, ScaledJob, TriggerAuthentication, ClusterTriggerAuthentication, CloudEventSource, and ClusterCloudEventSource. · `keda/templates/crds`
- [Manager](https://github.com/kedacore/charts/tree/main/keda/templates/manager): controller · Reconciles KEDA custom resources and coordinates core behavior. · `keda/templates/manager`
- [Metrics](https://github.com/kedacore/charts/tree/main/keda/templates/metrics-server): metrics adapter · Exposes custom metrics for Kubernetes autoscaling. · `keda/templates/metrics-server`
- [Webhooks](https://github.com/kedacore/charts/tree/main/keda/templates/webhooks): admission layer · Validates KEDA resources at admission time and serves webhook traffic. · `keda/templates/webhooks`
- [TLS setup](https://github.com/kedacore/charts/tree/main/keda/templates/cert-manager): cert provisioning · Cert-manager and self-signed certificate resources for webhook serving TLS. · `keda/templates/cert-manager`
- [HTTP add-on](https://github.com/kedacore/charts/tree/main/http-add-on): helm chart · Autoscaling add-on for HTTP workloads. · `http-add-on`
- [HTTP CRDs](https://github.com/kedacore/charts/tree/main/http-add-on/templates/crds): api schema · Defines HTTPScaledObject and InterceptorRoute. · `http-add-on/templates/crds`
- [Operator](https://github.com/kedacore/charts/tree/main/http-add-on/templates/operator): controller · Coordinates HTTP add-on resources and scaling workflow. · `http-add-on/templates/operator`
- [Scaler](https://github.com/kedacore/charts/tree/main/http-add-on/templates/scaler): integration service · Connects HTTP add-on scaling logic to Kubernetes resources. · `http-add-on/templates/scaler`
- [Interceptor](https://github.com/kedacore/charts/tree/main/http-add-on/templates/interceptor): request path · Request-facing runtime in front of HTTP workloads. · `http-add-on/templates/interceptor`
- [Cosmos scaler](https://github.com/kedacore/charts/tree/main/external-scaler-azure-cosmos-db): helm chart · External scaler integration for Azure Cosmos DB change feed. · `external-scaler-azure-cosmos-db`
- [Scaler svc](https://github.com/kedacore/charts/tree/main/external-scaler-azure-cosmos-db/templates): external scaler · Service and deployment that expose Cosmos DB scaling behavior to KEDA. · `external-scaler-azure-cosmos-db/templates`

### Repo distribution

Published chart artifacts, examples, and automation around release packaging.

- [Chart repo](https://github.com/kedacore/charts/tree/main/docs): package index · Published chart tarballs and repository index consumed by Helm clients. · `docs`
- [CI workflows](https://github.com/kedacore/charts/blob/main/.github/workflows): automation · Chart-specific validation and release checks for core, HTTP add-on, and Cosmos DB scaler. · `.github/workflows`
- [Sample manifest](https://github.com/kedacore/charts/blob/main/samples/nginx-scaledobject.yml): example · Example ScaledObject showing how users consume KEDA resources. · `samples/nginx-scaledobject.yml`

## Connections

- KEDA → CRDs: installs · Core chart publishes KEDA API definitions.
- KEDA → Manager: deploys · Installs the reconciliation controller.
- KEDA → Metrics: deploys · Installs the custom metrics adapter.
- KEDA → Webhooks: deploys · Installs admission webhooks.
- KEDA → TLS setup: configures · Provides certificate issuance for webhook TLS.
- Manager → CRDs: watches · Reconciles user-authored KEDA resources.
- Webhooks → TLS setup: uses · Webhook serving certs come from chart-managed TLS resources.
- Metrics → CRDs: serves metrics for · Maps KEDA resources into autoscaling signals.
- HTTP add-on → HTTP CRDs: installs · Publishes HTTP add-on API definitions.
- HTTP add-on → Operator: deploys · Installs the add-on controller.
- HTTP add-on → Scaler: deploys · Installs the scaling integration service.
- HTTP add-on → Interceptor: deploys · Installs the request-facing runtime.
- Operator → HTTP CRDs: watches · Coordinates HTTP autoscaling resources.
- Interceptor → Scaler: reports to · Interceptor cooperates with scaler-driven autoscaling.
- Cosmos scaler → Scaler svc: deploys · Installs the specialized external scaler service.
- Chart repo → KEDA: publishes · Stores packaged chart releases.
- Chart repo → HTTP add-on: publishes · Stores packaged add-on releases.
- Chart repo → Cosmos scaler: publishes · Stores packaged scaler releases.
- CI workflows → KEDA: validates · Core chart CI pipeline.
- CI workflows → HTTP add-on: validates · HTTP add-on CI pipeline.
- CI workflows → Cosmos scaler: validates · Cosmos DB scaler CI pipeline.
- Sample manifest → CRDs: demonstrates · Example consumer manifest uses KEDA APIs.
