The HTTP Add On is highly modular and, as expected, builds on top of KEDA core. Below are some additional components:
- Operator - watches for
ScaledHTTPObject
CRD resources and creates necessary backing Kubernetes resources (e.g.Deployment
s,Service
s,ScaledObject
s, and so forth) - Scaler - communicates scaling-related metrics to KEDA. By default, the operator will install this for you as necessary.
- Interceptor - a cluster-internal proxy that proxies incoming HTTP requests, communicating HTTP queue size metrics to the scaler, and holding requests in a temporary request queue when there are not yet any available app
Pod
s ready to serve. By default, the operator will install this for you as necessary.
There is pending work that may eventually make this component optional.
Both KEDA and the HTTP Addon can be installed in either cluster-global or namespaced mode. In the former case, your ScaledObject
s and HTTPScaledObject
s (respectively) can be installed in any namespace, and one installation will detect and process it. In the latter case, you must install your ScaledObject
s and HTTPScaledObject
s in a specific namespace.
You have the option of installing KEDA and the HTTP Addon in either mode, but if you install one as cluster-global, the other must also be cluster-global. Similarly, if you install one as namespaced, the also must also be namespaced in the same namespace.
Before you install any of these components, you need to install KEDA. Below are simplified instructions for doing so with Helm, but if you need anything more customized, please see the official KEDA deployment documentation. If you need to install Helm, refer to the installation guide.
This document will rely on environment variables such as
${NAMESPACE}
to indicate a value you should customize and provide to the relevant command. In the belowhelm install
command,${NAMESPACE}
should be the namespace you'd like to install KEDA into. KEDA and the HTTP Addon provide scaling functionality to only one namespace per installation.
helm repo add kedacore https://kedacore.github.io/charts
helm repo update
helm install keda kedacore/keda --namespace ${NAMESPACE} --create-namespace
The above command installs KEDA in cluster-global mode. Add
--set watchNamespace=<target namespace>
to install KEDA in namespaced mode.
The Helm chart for this project is within KEDA's default helm repository at kedacore/charts, you can install it by running:
helm install http-add-on kedacore/keda-add-ons-http --namespace ${NAMESPACE}
The above command installed the HTTP Addon in cluster-global mode. Add
--set operator.watchNamespace=<target namespace>
to install the HTTP Addon in namepaced mode. If you do this, you must also install KEDA in namespaced mode and use the same target namespace.
Installing the HTTP add on won't affect any running workloads in your cluster. You'll need to install an
HTTPScaledObject
for each individualDeployment
you want to scale. For more on how to do that, please see the walkthrough.
There are a few values that you can pass to the above helm install
command by including --set NAME=VALUE
on the command line.
images.operator
- the name of the operator's Docker image, not including the tag. Defaults toghcr.io/kedacore/http-add-on-operator
.images.scaler
- the name of the scaler's Docker image, not including the tag. Defaults toghcr.io/kedacore/http-add-on-scaler
.images.interceptor
- the name of the interceptor's Docker image, not including the tag. Defaults toghcr.io/kedacore/http-add-on-interceptor
.images.tag
- the tag to use for all the above docker images. Defaults to the latest stable release.
If you want to install the latest build of the HTTP Add on, set
version
tocanary
:
helm install http-add-on kedacore/keda-add-ons-http --create-namespace --namespace ${NAMESPACE} --set images.tag=canary
For an exhaustive list of configuration options, see the official HTTP Addon chart values.yaml file.
Local clusters like Microk8s offer in-cluster image registries. These are popular tools to speed up and ease local development. If you use such a tool for local development, we recommend that you use and push your images to its local registry. When you do, you'll want to set your images.*
variables to the address of the local registry. In the case of MicroK8s, that address is localhost:32000
and the helm install
command would look like the following:
helm repo add kedacore https://kedacore.github.io/charts
helm repo update
helm pull kedacore/keda-add-ons-http --untar --untardir ./charts
helm upgrade kedahttp ./charts/keda-add-ons-http \
--install \
--namespace ${NAMESPACE} \
--create-namespace \
--set image=localhost:32000/keda-http-operator \
--set images.scaler=localhost:32000/keda-http-scaler \
--set images.interceptor=localhost:32000/keda-http-interceptor
Now that you're finished installing KEDA and the HTTP Add On, please proceed to the walkthrough to test out your new installation.