SynfraCore
Synfracore
Start Learning
Navigation

Academies

Platform

RoadmapsLabsCertificationsInterviewPYQsAI AssistantCareer
Start Learning Free Learning Roadmaps

KEDAInstallation

Step-by-step setup and installation guide

📄
Last updated Aug 2026
Expert Content

KEDA — Installation Guide

Install KEDA via Helm

The standard installation path, matching Overview's Module 01 example:

bash
helm repo add kedacore https://kedacore.github.io/charts
helm repo update

helm install keda kedacore/keda \
  --namespace keda \
  --create-namespace

# Verify both core components are running
kubectl get pods -n keda
# keda-operator-xxx        Running
# keda-metrics-apiserver   Running

Install KEDA With High Availability (Production)

For a production-grade install with the leader-election-based HA pattern covered in Advanced:

bash
helm install keda kedacore/keda \
  --namespace keda --create-namespace \
  --set operator.replicaCount=2

Install the KEDA HTTP Add-on (Optional)

Needed only if scale-to-zero for synchronous HTTP services is required, per Intermediate's coverage:

bash
helm install http-add-on kedacore/keda-add-ons-http \
  --namespace keda

kubectl get pods -n keda -l app=keda-add-ons-http-interceptor

Verify Everything Works

bash
# 1. Confirm both core KEDA components are healthy
kubectl get pods -n keda

# 2. Confirm the CRDs are registered
kubectl get crd | grep keda.sh
# Should show scaledobjects.keda.sh, scaledjobs.keda.sh,
# triggerauthentications.keda.sh

# 3. Create a minimal test ScaledObject and confirm it's recognized
cat <<EOF | kubectl apply -f -
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata: { name: test-scaler }
spec:
  scaleTargetRef: { name: test-deployment }
  minReplicaCount: 0
  maxReplicaCount: 5
  triggers:
    - type: cron
      metadata:
        timezone: UTC
        start: "0 8 * * *"
        end: "0 18 * * *"
        desiredReplicas: "1"
EOF

kubectl get scaledobject test-scaler
# STATUS should show "True" for Ready once KEDA has reconciled it

Common Installation Issues

keda-operator pod stuck in CrashLoopBackOff

bash
kubectl logs -n keda deploy/keda-operator
# Most common cause on a locked-down cluster: insufficient RBAC
# permissions for the operator's ServiceAccount

ScaledObject created but HPA never appears

bash
kubectl get hpa
kubectl describe scaledobject <name>
# KEDA creates the underlying HPA automatically once a ScaledObject
# is valid — if no HPA appears, check the ScaledObject's own status
# conditions for a validation error first, before assuming KEDA itself
# is broken

Metrics API server not responding for HPA queries

bash
kubectl get pods -n keda -l app=keda-metrics-apiserver
kubectl logs -n keda deploy/keda-operator-metrics-apiserver
# This is the component the standard HPA controller actually queries —
# if it's unhealthy, scaling silently stalls even though the
# ScaledObject itself looks fine

Cron trigger scaling at the wrong time

Confirm the timezone field in the cron trigger is set explicitly — a missing timezone defaults to UTC, which is a common source of "scaling happened at the wrong local time" confusion.

What's Installed

After a successful installation:

keda-operator — reconciles ScaledObject/ScaledJob CRDs and manages the HPA lifecycle on their behalf
keda-operator-metrics-apiserver — registers as a Kubernetes External Metrics API provider, which the standard HPA controller queries
The ScaledObject, ScaledJob, and TriggerAuthentication CRDs

Next Steps

Go to the Fundamentals section to build your first event-driven ScaledObject.

Share:
Join our Community
Daily tips, job alerts, interview help — join engineers learning together
Up Next
🔤
KEDAFundamentals
Core concepts and commands — hands-on from the start
Also Worth Exploring
← Back to all KEDA modules
PrerequisitesFundamentals