Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intro update #96

Merged
merged 4 commits into from
Feb 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 0 additions & 103 deletions docs/README.md

This file was deleted.

3 changes: 3 additions & 0 deletions docs/development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Development

link to the [development guide](https://github.com/truefoundry/elasti/blob/main/DEVELOPMENT.md)
6 changes: 3 additions & 3 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Use Helm to install elasti into your Kubernetes cluster.
helm install elasti oci://tfy.jfrog.io/tfy-helm/elasti --namespace elasti --create-namespace
```

Check out [values.yaml](https://github.com/truefoundry/elasti/blob/main/charts/elasti/values.yaml) to see config in the helm value file.
Check out [values.yaml](https://github.com/truefoundry/elasti/blob/main/charts/elasti/values.yaml) to see configuration options in the helm value file.

### 2. Verify the Installation

Expand Down Expand Up @@ -71,7 +71,7 @@ We will use a sample httpbin service to demonstrate how to configure a service t

```bash
kubectl create namespace elasti-demo
kubectl apply -n elasti-demo -f ../playground/config/demo-application.yaml
kubectl apply -n elasti-demo -f https://raw.githubusercontent.com/truefoundry/elasti/refs/heads/main/playground/config/demo-application.yaml
```

This will deploy a httpbin service in the `elasti-demo` namespace.
Expand All @@ -93,7 +93,7 @@ spec:
cooldownPeriod: 5
scaleTargetRef:
apiVersion: apps/v1
kind: Deployments
kind: deployments
name: httpbin
triggers:
- type: prometheus
Expand Down
12 changes: 8 additions & 4 deletions docs/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,23 @@ Elasti continuously monitors an ElastiService by evaluating a set of custom trig

This allows Elasti to optimize resource consumption by scaling services down when unneeded, while its request queueing mechanism preserves user interactions and guarantees prompt service availability when conditions change.
<div align="center">
<img src="../docs/assets/modes.png" width="400px">
<img src="./assets/modes.png" width="400px">
</div>

## Key Features

- **Seamless Integration:** Elasti integrates effortlessly with your existing Kubernetes setup - whether you are using HPA or Keda. It takes just a few steps to enable scale to zero for any service.

- **Deployment and Argo Rollouts Support:** Elasti supports two target references: Deployment and Argo Rollouts, making it versatile for various deployment scenarios.

- **HTTP API Support:** Currently, Elasti supports only HTTP API types, ensuring straightforward and efficient handling of web traffic.
- **Deployment and Argo Rollouts Support:** Elasti supports two scale target references: Deployment and Argo Rollouts, making it versatile for various deployment scenarios.

- **Prometheus Metrics Export:** Elasti exports Prometheus metrics for easy out-of-the-box monitoring. You can also import a pre-built dashboard into Grafana for comprehensive visualization.

- **Generic Service Support:** Elasti works at the kubernetes service level. It also supports East-West traffic using cluster-local service DNS, ensuring robust and flexible traffic management across your services. So any ingress or service mesh solution can be used with Elasti.

## Limitations

- **Only HTTP is supported:** Elasti currently supports requests that are routed to the service via HTTP. In the future we will support more protocols like TCP, UDP etc.
- **Only Deployment and Argo Rollouts are supported:** Elasti supports two scale target references: Deployment and Argo Rollouts. In the future this will be made generic to support all target references that support the `/scale` subresource.
- **Prometheus Trigger:** The only trigger currently supported is Prometheus

Please checkout the comparison [here](comparisons.md) to see how Elasti compares to other Kubernetes autoscaling solutions.
6 changes: 3 additions & 3 deletions docs/monitoring.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
## Monitoring

Set `.global.enableMonitoring` to `true` in the [values.yaml](./charts/elasti/values.yaml) file to enable monitoring.
Set `.global.enableMonitoring` to `true` in the [values.yaml](https://github.com/truefoundry/elasti/blob/main/charts/elasti/values.yaml) file to enable monitoring.

This will create two ServiceMonitor custom resources to enable Prometheus to discover the Elasti components. To verify this, you can open your Prometheus interface and search for metrics prefixed with `elasti_`, or navigate to the Targets section to check if Elasti is listed.

Once verification is complete, you can use the [provided Grafana dashboard](./playground/infra/elasti-dashboard.yaml) to monitor the internal metrics and performance of Elasti.
Once verification is complete, you can use the [provided Grafana dashboard](https://github.com/truefoundry/elasti/blob/main/playground/infra/elasti-dashboard.yaml) to monitor the internal metrics and performance of Elasti.

<div align="center">
<img src="./docs/assets/grafana-dashboard.png" width="800px">
<img src="./assets/grafana-dashboard.png" width="800px">
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ var _ = Describe("ElastiService Controller", func() {
Service: resourceName,
ScaleTargetRef: elastiv1alpha1.ScaleTargetRef{
APIVersion: "apps/v1",
Kind: "Deployment",
Kind: "deployments",
Name: resourceName,
},
},
Expand Down
2 changes: 1 addition & 1 deletion playground/config/demo-elastiService.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ spec:
minTargetReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployments
kind: deployments
name: httpbin
Loading