72 lines
5.0 KiB
Markdown
72 lines
5.0 KiB
Markdown
# Installing the KEDA HTTP Add On
|
|
|
|
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 in KEDA](https://github.com/kedacore/keda/issues/615) that will eventually make this component optional. See [issue #6 in this repository](https://github.com/kedacore/http-add-on/issues/6) for even more background
|
|
|
|
## Installing KEDA
|
|
|
|
Before you install any of these components, you need to install KEDA. Below are simplified instructions for doing so with [Helm](https://helm.sh), but if you need anything more customized, please see the [official KEDA deployment documentation](https://keda.sh/docs/2.0/deploy/). If you need to install Helm, refer to the [installation guide](https://helm.sh/docs/intro/install/).
|
|
|
|
>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 above `helm 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.
|
|
|
|
```console
|
|
helm repo add kedacore https://kedacore.github.io/charts
|
|
helm repo update
|
|
helm install keda kedacore/keda --namespace ${NAMESPACE} --set watchNamespace=${NAMESPACE}
|
|
```
|
|
|
|
## Install via Helm Chart
|
|
|
|
This repository is within KEDA's default helm repository on [kedacore/charts](http://github.com/kedacore/charts), you can install it by running:
|
|
|
|
```console
|
|
helm repo add kedacore https://kedacore.github.io/charts
|
|
helm repo update
|
|
helm install http-add-on kedacore/keda-add-ons-http --create-namespace --namespace ${NAMESPACE}
|
|
```
|
|
|
|
>Installing the HTTP add on won't affect any running workloads in your cluster. You'll need to install an `HTTPScaledObject` for each individual `Deployment` you want to scale. For more on how to do that, please see the [walkthrough](./walkthrough.md).
|
|
|
|
### Customizing the Installation
|
|
|
|
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 to [`ghcr.io/kedacore/http-add-on-operator`](https://github.com/orgs/kedacore/packages/container/package/http-add-on-operator).
|
|
- `images.scaler` - the name of the scaler's Docker image, not including the tag. Defaults to [`ghcr.io/kedacore/http-add-on-scaler`](https://github.com/orgs/kedacore/packages/container/package/http-add-on-scaler).
|
|
- `images.interceptor` - the name of the interceptor's Docker image, not including the tag. Defaults to [`ghcr.io/kedacore/http-add-on-interceptor`](https://github.com/orgs/kedacore/packages/container/package/http-add-on-interceptor).
|
|
- `images.tag` - the tag to use for all the above docker images. Defaults to the [latest stable release](https://github.com/kedacore/http-add-on/releases).
|
|
|
|
>If you want to install the latest build of the HTTP Add on, set `version` to `canary`:
|
|
|
|
```console
|
|
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](https://github.com/kedacore/charts/blob/master/http-add-on/values.yaml).
|
|
|
|
### A Note for Developers and Local Cluster Users
|
|
|
|
Local clusters like [Microk8s](https://microk8s.io/) 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:
|
|
|
|
```shell
|
|
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
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
Now that you're finished installing KEDA and the HTTP Add On, please proceed to the [walkthrough](./walkthrough.md) to test out your new installation.
|