Deploying KEDA Click here for latest

Warning

You are currently viewing v"2.15" of the documentation and it is not the latest. For the most recent documentation, kindly click here.

We provide a few approaches to deploy KEDA runtime in your Kubernetes clusters:

  • Helm charts
  • Operator Hub
  • YAML declarations

💡 NOTE: KEDA requires Kubernetes cluster version 1.27 and higher

Don’t see what you need? Feel free to create an issue on our GitHub repo.

Deploying with Helm

Install

To deploy KEDA with Helm:

  1. Add Helm repo

    helm repo add kedacore https://kedacore.github.io/charts
    
  2. Update Helm repo

    helm repo update
    
  3. Install keda Helm chart

    Helm 3

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

To deploy the CRDs separately from the Helm chart, use the keda-2.xx.x-crds.yaml file provided on the GitHub releases page.

💡 NOTE: Are you upgrading to v2.2.1 or above? Make sure to read our troubleshooting guide to fix potential CRD issues.

Uninstall

If you want to remove KEDA from a cluster, you first need to remove any ScaledObjects and ScaledJobs that you have created. Once that is done, the Helm chart can be uninstalled:

kubectl delete $(kubectl get scaledobjects.keda.sh,scaledjobs.keda.sh -A \
  -o jsonpath='{"-n "}{.items[*].metadata.namespace}{" "}{.items[*].kind}{"/"}{.items[*].metadata.name}{"\n"}')
helm uninstall keda -n keda

Note: if you uninstall the Helm chart without first deleting any ScaledObject or ScaledJob resources you have created, they will become orphaned. In this situation, you will need to patch the resources to remove their finalizers. Once this is done, they should automatically be removed:

for i in $(kubectl get scaledobjects -A \
  -o jsonpath='{"-n "}{.items[*].metadata.namespace}{" "}{.items[*].kind}{"/"}{.items[*].metadata.name}{"\n"}');
do kubectl patch $i -p '{"metadata":{"finalizers":null}}' --type=merge
done

for i in $(kubectl get scaledjobs -A \
  -o jsonpath='{"-n "}{.items[*].metadata.namespace}{" "}{.items[*].kind}{"/"}{.items[*].metadata.name}{"\n"}');
do kubectl patch $i -p '{"metadata":{"finalizers":null}}' --type=merge
done

Deploying with Operator Hub

Install

  1. On Operator Hub Marketplace locate and install KEDA operator to namespace keda
  2. Create KedaController resource named keda in namespace keda
    Operator Hub installation

💡 NOTE: Further information on Operator Hub installation method can be found in the following repository.

Uninstall

Locate installed KEDA Operator in keda namespace, then remove created KedaController resource and uninstall KEDA operator.

Deploying using the deployment YAML files

Install

If you want to try KEDA on Minikube or a different Kubernetes deployment without using Helm you can still deploy it with kubectl.

  • We provide sample YAML declaration which includes our CRDs and all other resources in a file which is available on the GitHub releases page.
    • We offer two options to deploy KEDA:
      • Use keda-2.xx.x.yaml that includes all features, including admission webhooks (recommended)
      • Use keda-2.xx.x-core.yaml that installs the minimal required KEDA components, without admission webhooks

Run the following command (if needed, replace the version, in this case 2.15.1, with the one you are using):

# Including admission webhooks
kubectl apply --server-side -f https://github.com/kedacore/keda/releases/download/v2.15.1/keda-2.15.1.yaml
# Without admission webhooks
kubectl apply --server-side -f https://github.com/kedacore/keda/releases/download/v2.15.1/keda-2.15.1-core.yaml
  • Alternatively you can download the file and deploy it from the local path:
# Including admission webhooks
kubectl apply --server-side -f keda-2.15.1.yaml
# Without admission webhooks
kubectl apply --server-side -f keda-2.15.1-core.yaml

💡 NOTE: --server-side option is needed because the ScaledJob CRD is too long to process, see this issue for details.

  • You can also find the same YAML declarations in our /config directory on our GitHub repo if you prefer to clone it.
git clone https://github.com/kedacore/keda && cd keda

VERSION=2.15.1 make deploy

Uninstall

  • In case of installing from released YAML file just run the following command (if needed, replace the version, in this case 2.15.1, with the one you are using):
# Including admission webhooks
kubectl delete -f https://github.com/kedacore/keda/releases/download/v2.15.1/keda-2.15.1.yaml
# Without admission webhooks
kubectl delete -f https://github.com/kedacore/keda/releases/download/v2.15.1/keda-2.15.1-core.yaml
  • If you have downloaded the file locally, you can run:
# Including admission webhooks
kubectl delete -f keda-2.15.1.yaml
# Without admission webhooks
kubectl delete -f keda-2.15.1-core.yaml
  • You would need to run these commands from within the directory of the cloned GitHub repo:
VERSION=2.15.1 make undeploy

Deploying KEDA on MicroK8s

Install

If you want to try KEDA v2 on MicroK8s from 1.20 channel, KEDA is included into MicroK8s add-ons.

microk8s enable keda

Uninstall

To uninstall KEDA in MicroK8s, disable the add-on as shown below.

microk8s disable keda