Helm Installation
Install the Kedify Agent using Helm. You can do this either through the Kedify Service or manually by following the guide in this document.
Prerequisites
- A running Kubernetes cluster (local or cloud-based like EKS, GKE, etc.).
helminstalled and accessible in your environment.- An account created and signed in to the Kedify Service.
Installation with Kedify Service
Log in to the Kedify Service and either in the Overview:

Or in the Clusters section, click on the Connect Cluster button and select Helm Installation:

This opens a dialog showing the necessary steps to install the Kedify using Helm:

Prepare Installation
Follow these steps to install Kedify using Helm manually.
Getting Organization ID
In the Kedify dashboard, navigate to Organization and select Details. Copy the ID.
Alternatively, if you already have an existing installation, you can read the Organization id using:
kubectl set env -nkeda deployment/kedify-agent --list | grep KEDIFY_ORGANIZATION_IDGetting API Key
If you already have a Kedify Agent deployed, you can retrieve your pre-provisioned API key from a Secret in the same Kubernetes cluster:
kubectl get secret -n keda kedify-agent -o=jsonpath='{.data.apikey}' | base64 --decode
If you don't have an existing Agent, you can generate a new API Key in the Kedify dashboard. Navigate to Organization and select API Keys. Click Create Agent Key and copy the key.
Helm Installation
The following steps guide you through the installation of Kedify on your cluster using Helm. Kedify Helm Chart by default installs also KEDA and Kedify HTTP Scaler.
You can either use the quick installation steps below with default values, or proceed to the advanced installation section where you can install each component separately.
Kedify Helm Repository
To install Kedify using Helm, you first need to add the Kedify Helm repository to your local Helm configuration.
helm repo add kedifykeda https://kedify.github.io/chartshelm repo update kedifykedaQuick Installation
Follow these steps to quickly install Kedify using Helm with default settings.
1. Install Kedify components:
This command installs the Kedify Agent along with KEDA and the Kedify HTTP Scaler. If you don't want to install KEDA or the HTTP Scaler, you can disable them by setting keda.enabled=false or keda-add-ons-http.enabled=false.
helm upgrade --install kedify-agent kedifykeda/kedify-agent \--namespace keda \--create-namespace \--version v0.3.2 \--set clusterName="my-cluster" \--set agent.orgId="$YOUR_ORG_ID" \--set agent.apiKey="$YOUR_API_KEY" \--set keda.enabled=true \--set keda-add-ons-http.enabled=true2. (Optional) Install OTel Scaler:
helm upgrade -i kedify-otel oci://ghcr.io/kedify/charts/otel-add-on \--namespace keda \--version v0.1.2Advanced Installation
For a more customized installation, you can create your own values.yaml files for each component and install each chart independently.
0. Prerequisites:
Before proceeding, ensure you have added the Kedify Helm repository to your local Helm configuration as described in the Kedify Helm Repository section above.
1. Configure Kedify build of KEDA
Create a values_keda.yaml file with the following content. See all available options in the values.yaml file.
image: keda: tag: v2.18.0-1 registry: ghcr.io repository: kedify/keda-operator metricsApiServer: tag: v2.18.0-1 registry: ghcr.io repository: kedify/keda-metrics-apiserver webhooks: tag: v2.18.0-1 registry: ghcr.io repository: kedify/keda-admission-webhooks prometheus: operator: enabled: true metricServer: enabled: true webhooks: enabled: truewatchNamespace: ''rbac: scaledRefKinds: - apiGroup: '*' kind: '*'
## Please fill this file with your custom values based on the available options2. Configure HTTP Scaler
Create a values_http.yaml file with the following content. See all available options in the values.yaml file.
images: tag: v0.11.0-3 operator: ghcr.io/kedify/http-add-on-operator interceptor: ghcr.io/kedify/http-add-on-interceptor scaler: ghcr.io/kedify/http-add-on-scalerinterceptor: replicas: min: 1 resources: requests: cpu: '0.1' memory: 32Mi limits: cpu: 1 memory: 64Miscaler: replicas: 1 resources: requests: cpu: '0.1' memory: 16Mi limits: cpu: 0.5 memory: 64Mioperator: replicas: 0
## Please fill this file with your custom values based on the available options3. Configure Kedify Agent
Create a values_kedify.yaml file with the following content. See all available options in the values.yaml file.
clusterName: my-clusteragent: orgId: "YOUR_ORG_ID" apiKey: "YOUR_API_KEY" image: tag: v0.3.2 repository: ghcr.io/kedify/agent
## Please fill this file with your custom values based on the available options4. Install Kedify
To install Kedify using the custom values files, run the following commands:
helm upgrade --install keda kedifykeda/keda --namespace keda \ --create-namespace \ --values values_keda.yaml
helm upgrade --install keda-add-ons-http kedifykeda/keda-add-ons-http \ --namespace keda \ --values values_http.yaml
helm upgrade --install kedify-agent kedifykeda/kedify-agent \ --namespace keda \ --values values_kedify.yaml4. (Optional) Install OTel Scaler
Prepare a values_otel.yaml file with the following content. See all available options in the values.yaml file.
image: repository: ghcr.io/kedify/otel-add-on tag: v0.1.2## Please fill this file with your custom values based on the available optionsThen, install the OTel Scaler using the following command:
helm upgrade --install kedify-otel oci://ghcr.io/kedify/charts/otel-add-on \ --namespace keda \ --values values_otel.yamlHelm Installation with Argo CD
To install the Helm charts using Argo CD, you can use the following manifests. They provide a base configuration for deploying keda, http-add-on, and kedify-agent.
Kedify build of KEDA Installation Manifest with Argo CD
apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata: name: keda namespace: argocdspec: destination: namespace: keda server: https://kubernetes.default.svc project: default source: chart: keda repoURL: https://kedify.github.io/charts targetRevision: v2.18.0-1 helm: values: | image: keda: tag: v2.18.0-1 registry: ghcr.io repository: kedify/keda-operator metricsApiServer: tag: v2.18.0-1 registry: ghcr.io repository: kedify/keda-metrics-apiserver webhooks: tag: v2.18.0-1 registry: ghcr.io repository: kedify/keda-admission-webhooks prometheus: operator: enabled: true metricServer: enabled: true webhooks: enabled: true
## Please fill this section with your custom values based on the available options
syncPolicy: automated: {} syncOptions: - CreateNamespace=true - ServerSideApply=true ignoreDifferences: - kind: APIService group: apiregistration.k8s.io jqPathExpressions: - '.spec.insecureSkipTLSVerify' - kind: ValidatingWebhookConfiguration group: admissionregistration.k8s.io jqPathExpressions: - '.webhooks[].clientConfig.caBundle'HTTP Scaler Installation Manifest with Argo CD
apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata: name: http-scaler namespace: argocdspec: destination: namespace: keda server: https://kubernetes.default.svc project: default source: chart: keda-add-ons-http repoURL: https://kedify.github.io/charts targetRevision: v0.11.0-3 helm: values: | images: tag: v0.11.0-3 operator: ghcr.io/kedify/http-add-on-operator interceptor: ghcr.io/kedify/http-add-on-interceptor scaler: ghcr.io/kedify/http-add-on-scaler interceptor: replicas: min: 1 scaler: replicas: 1 operator: replicas: 0
## Please fill this section with your custom values based on the available optionsKedify Agent Installation Manifest with Argo CD
apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata: name: kedify-agent namespace: argocdspec: destination: namespace: keda server: https://kubernetes.default.svc project: default source: chart: kedify-agent repoURL: https://kedify.github.io/charts targetRevision: v0.3.2 helm: values: | clusterName: my-cluster # EDIT THIS agent: orgId: "$YOUR_ORG_ID" # EDIT THIS apiKey: "$YOUR_API_KEY" # EDIT THIS
## Please fill this section with your custom values based on the available optionsOTel Scaler Installation Manifest with Argo CD
apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata: name: kedify-otel namespace: argocdspec: destination: namespace: keda server: https://kubernetes.default.svc project: default source: repoURL: oci://ghcr.io/kedify/charts/otel-add-on targetRevision: v0.1.2 helm: values: | image: repository: ghcr.io/kedify/otel-add-on tag: v0.1.2
## Please fill this section with your custom values based on the available optionsInstallation on ARM
When running Kedify components on ARM-based Kubernetes clusters, additional scheduling configuration is required.
Most providers like AWS EKS and Azure AKS automatically place pods on ARM nodes when you specify nodeSelector for kubernetes.io/arch=arm64. However, Google Kubernetes Engine (GKE) applies an explicit taint on ARM nodes, requiring matching tolerations.
To ensure a portable deployment strategy across all cloud providers, we recommend configuring both nodeSelector and tolerations in your Helm values or CLI flags.
0. Prerequisites:
Before proceeding, ensure you have added the Kedify Helm repository to your local Helm configuration as described in the Kedify Helm Repository section above.
1. Install Kedify build of KEDA:
helm upgrade --install keda kedifykeda/keda \ --namespace keda \ --version v2.18.0-1 \ --create-namespace \ --set "nodeSelector.kubernetes\.io/arch=arm64" \ --set "tolerations[0].key=kubernetes.io/arch" \ --set "tolerations[0].operator=Equal" \ --set "tolerations[0].value=arm64" \ --set "tolerations[0].effect=NoSchedule"2. Install Kedify HTTP Scaler:
helm upgrade --install keda-add-ons-http kedifykeda/keda-add-ons-http \ --namespace keda \ --version v0.11.0-3 \ \ # Interceptor pod on ARM --set "interceptor.nodeSelector.kubernetes\.io/arch=arm64" \ --set "interceptor.tolerations[0].key=kubernetes.io/arch" \ --set "interceptor.tolerations[0].operator=Equal" \ --set "interceptor.tolerations[0].value=arm64" \ --set "interceptor.tolerations[0].effect=NoSchedule" \ \ # Scaler pod on ARM --set "scaler.nodeSelector.kubernetes\.io/arch=arm64" \ --set "scaler.tolerations[0].key=kubernetes.io/arch" \ --set "scaler.tolerations[0].operator=Equal" \ --set "scaler.tolerations[0].value=arm64" \ --set "scaler.tolerations[0].effect=NoSchedule"3. Install Kedify Agent:
helm upgrade --install kedify-agent kedifykeda/kedify-agent \ --namespace keda \ --version v0.3.2 \ --set "clusterName=cluster-1" \ --set "agent.orgId=$YOUR_ORG_ID" \ --set "agent.apiKey=$YOUR_API_KEY" \ \ # Agent on ARM --set "agent.nodeSelector.kubernetes\.io/arch=arm64" \ --set "agent.tolerations[0].key=kubernetes.io/arch" \ --set "agent.tolerations[0].operator=Equal" \ --set "agent.tolerations[0].value=arm64" \ --set "agent.tolerations[0].effect=NoSchedule" \ \ # kedify-proxy (installed by the agent) defaults to ARM as well --set "agent.kedifyProxy.globalValues.nodeSelector.kubernetes\.io/arch=arm64" \ --set "agent.kedifyProxy.globalValues.tolerations[0].key=kubernetes.io/arch" \ --set "agent.kedifyProxy.globalValues.tolerations[0].operator=Equal" \ --set "agent.kedifyProxy.globalValues.tolerations[0].value=arm64" \ --set "agent.kedifyProxy.globalValues.tolerations[0].effect=NoSchedule"4. (Optional) Install OTel Scaler:
helm upgrade --install kedify-otel oci://ghcr.io/kedify/charts/otel-add-on \ --namespace keda \ --version v0.1.2 \ \ # Scaler pod on ARM --set "nodeSelector.kubernetes\.io/arch=arm64" \ --set "tolerations[0].key=kubernetes.io/arch" \ --set "tolerations[0].operator=Equal" \ --set "tolerations[0].value=arm64" \ --set "tolerations[0].effect=NoSchedule" \ \ # If you create OpenTelemetryCollector CRs via this chart, pin them to ARM too: --set "otelOperatorCrDefaultTemplate.nodeSelector.kubernetes\.io/arch=arm64" \ --set "otelOperatorCrDefaultTemplate.tolerations[0].key=kubernetes.io/arch" \ --set "otelOperatorCrDefaultTemplate.tolerations[0].operator=Equal" \ --set "otelOperatorCrDefaultTemplate.tolerations[0].value=arm64" \ --set "otelOperatorCrDefaultTemplate.tolerations[0].effect=NoSchedule" \ \ # If you enable the embedded otel-collector subchart, also pin it to ARM: --set "otelCollector.nodeSelector.kubernetes\.io/arch=arm64" \ --set "otelCollector.tolerations[0].key=kubernetes.io/arch" \ --set "otelCollector.tolerations[0].operator=Equal" \ --set "otelCollector.tolerations[0].value=arm64" \ --set "otelCollector.tolerations[0].effect=NoSchedule"Verifying Installation
After installing Kedify, you can verify the installation by checking the status of the Kedify Agent and KEDA components in your cluster.
kubectl get pods -n kedaYou should see output similar to the following, indicating that all components are running:
NAME READY STATUS RESTARTS AGEkeda-add-ons-http-external-scaler-8464ffbdc5-9xf2t 1/1 Running 0 66skeda-add-ons-http-interceptor-86bbbbcdb6-rb77p 1/1 Running 0 66skeda-admission-webhooks-54d747fd77-46hz8 1/1 Running 0 66skeda-operator-679d985bf7-s29m5 1/1 Running 0 66skeda-operator-metrics-apiserver-845c769bcd-qghqj 1/1 Running 0 66skedify-agent-74df5f847-rmv8b 1/1 Running 0 66sotel-add-on-scaler-55ff5fcb77-krfxs 1/1 Running 0 66sotelcol-786f85f4c7-hfdp6 1/1 Running 0 66s