Skip to content

Commit

Permalink
Update alaz version to v0.5.2 and Redhat certify
Browse files Browse the repository at this point in the history
  • Loading branch information
fatihbaltaci committed Feb 7, 2024
1 parent 7b5e6da commit 8aecd8d
Show file tree
Hide file tree
Showing 9 changed files with 313 additions and 197 deletions.
153 changes: 12 additions & 141 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,166 +4,37 @@ This [repository](https://github.com/ddosify/ddosify-helm-charts) hosts the Helm

There are two charts available in this repository:

- 🏠 [Ddosify Self-Hosted Chart](#ddosify-self-hosted-chart)
- 🏠 [Ddosify Platform Self-Hosted Chart](#ddosify-platform-self-hosted-chart)
- 🐝 [Alaz Chart - Ddosify eBPF Agent](#alaz-chart---ddosify-ebpf-agent)

## What is Ddosify?

<p align="center">
<img src="https://imagedelivery.net/jnIqn6NB1gbMLXIvlYKo5A/5ed79d96-aef4-467d-f5d0-e17cc5c3e700/public" alt="Ddosify - Self-Hosted" />
<img src="assets/ddosify_service_map.png" alt="Ddosify Kubernetes Monitoring Service Map" />
<i>Ddosify automatically generates Service Map of your K8s cluster without code instrumentation or sidecars with eBPF. So you can easily find the bottlenecks in your system. Red lines indicate the high latency between services.</i>
</p>

Ddosify is a comprehensive performance testing and observability platform. It consists of the following components:

- ⚡️ [Ddosify Engine](https://github.com/ddosify/ddosify/blob/master/engine_docs/README.md): High-performance, single engine load testing tool.
- 🏠 [Ddosify Self-Hosted](https://github.com/ddosify/ddosify/tree/master/selfhosted): Self-hosted, distributed load testing and observability platform.
- ☁️ [Ddosify Cloud](https://app.ddosify.com): Cloud-based, distributed load testing and observability platform.
- 🐝 [Alaz](https://github.com/ddosify/alaz): Ddosify eBPF agent for Kubernetes. It can inspect and collect Kubernetes (K8s) service traffic without the need for code instrumentation, sidecars, or service restarts. It also gets system information and resources (CPU, Memory, Disk and Network) via the Prometheus Node Exporter.
Ddosify is an [open-source](https://github.com/ddosify/ddosify) Kubernetes Monitoring and Performance Testing platform.

## Pre-requisites

- Kubernetes 1.19+
- [Helm](https://helm.sh/docs/intro/install/) must be installed to use the Ddosify charts.

## Ddosify Self-Hosted Chart

[Ddosify Self-Hosted](https://github.com/ddosify/ddosify/tree/master/selfhosted) features a web-based user interface, distributed load generation, and **Kubernetes Monitoring** capabilities. While it shares many of the same functionalities as Ddosify Cloud, the Self-Hosted version is designed to be deployed within your own infrastructure for enhanced control and customization.

To install the Ddosify Self-Hosted chart via Helm, run the following commands:

```bash
helm repo add ddosify https://ddosify.github.io/ddosify-helm-charts/
helm repo update
kubectl create namespace ddosify
helm upgrade --install --namespace ddosify ddosify ddosify/ddosify --wait
```

### Accessing the Ddosify Dashboard (Port Forwarding)

Port forward the Ddosify nginx reverse proxy service to access the Ddosify dashboard:

```bash
LOCAL_PORT=8014
kubectl port-forward --namespace ddosify service/nginx-service $LOCAL_PORT:80
```

Open the browser and navigate to http://localhost:8014.

### Upgrading the Ddosify Chart

To upgrade the Ddosify chart, run the following commands:

```bash
helm repo add ddosify https://ddosify.github.io/ddosify-helm-charts/
helm repo update
helm upgrade --namespace ddosify ddosify ddosify/ddosify --wait
```
## Ddosify Platform Self-Hosted Chart

### Add New Engine (Optional):
With the Ddosify Self-Hosted chart, you can deploy the Ddosify platform to your Kubernetes cluster.

Currently, the Ddosify chart deploys a single engine (load generator). To add more engines, you can upgrade the chart with the desired number of engine count as follows. Before adding new engines, ensure that you have enabled the distributed mode by clicking the `Unlock the Distributed Mode` button in the Ddosify UI.
Check the [Ddosify Self-Hosted](./charts/ddosify/README.md) chart for the installation and configuration details.

```bash
ENGINE_COUNT=3
helm upgrade --namespace ddosify ddosify ddosify/ddosify --set hammerReplicas=$ENGINE_COUNT --wait
```

### External Database (Optional):

By default, the Ddosify chart deploys a PostgreSQL and InfluxDB. If you want to use them externally, you can write a custom values file (`values-external_db.yaml`) as follows:

```yaml
influxDB:
external: true
url: "https://us-east-1-1.aws.cloud2.influxdata.com"
apiToken: "<your-token>"
org: "<your-organization>"

postgres:
external: true
host: "postgres-rds-test.xxxxxx.rds.amazonaws.com"
port: 5432
username: "postgres"
password: "<your-password>"
```
In this example, we are using the external InfluxDB Cloud and AWS RDS PostgreSQL. You must change the values according to your setup. Note that the external database must be accessible from the Kubernetes cluster. Then, you can install the chart with the custom values file as follows:
```bash
helm upgrade --install --namespace ddosify ddosify ddosify/ddosify --values values-external_db.yaml --wait
```

The recommended and tested version of PostgreSQL is `13.6` and InfluxDB is `2.6.1`. If you get any errors on different versions, please open an issue. We will try to fix it as soon as possible. To avoid the latency, the external databases should be as close as possible to the Kubernetes cluster.

### Cleanup

```bash
helm delete ddosify --namespace ddosify
```

### Telemetry Data
## Alaz Chart - Ddosify eBPF Agent

Ddosify collects telemetry data to improve the product. You can disable it by setting the `ANONYMOUS_TELEMETRY_ENABLED` environment variable to `False` in the [backend](./charts/ddosify/templates/backend.yaml) deployment.
With the Alaz chart, you can deploy the Ddosify eBPF agent to your Kubernetes cluster that you want to monitor. Alaz sends the collected data to the Ddosify platform.

```yaml
...
env:
- name: ANONYMOUS_TELEMETRY_ENABLED
value: "False"
...
```
Check the [Alaz](./charts/alaz/README.md) chart for the installation and configuration details.

Check the example telemetry data that Ddosify collects from [here](https://github.com/ddosify/ddosify/tree/master/selfhosted#example-data).

## Alaz Chart - Ddosify eBPF Agent
## Communication

[Alaz](https://github.com/ddosify/alaz) is an open-source Ddosify eBPF agent that can inspect and collect Kubernetes (K8s) service traffic without the need for code instrumentation, sidecars, or service restarts. This is possible due to its use of eBPF technology. Alaz can create a Service Map that helps identify golden signals and problems like high latencies, 5xx errors, zombie services, SQL queries. Additionally, it can gather system information and resources via the Prometheus Node Exporter, which is readily available on the agent.

To install the Alaz chart, first, you need to add the Ddosify Helm repository:

```bash
helm repo add ddosify https://ddosify.github.io/ddosify-helm-charts/
helm repo update
```

Then, you can install the Alaz chart with the following command:
```bash
# Replace <MONITORING_ID> with your monitoring ID from the Ddosify UI. Change XXXXX with your monitoring ID.
MONITORING_ID=XXXXX
# Set BACKEND_HOST with your Ddosify Self-Hosted Endpoint. If your Ddosify Self-Hosted endpoint is http://localhost:8014, then BACKEND_HOST=http://localhost:8014/api
BACKEND_HOST=XXXXX
helm repo add ddosify https://ddosify.github.io/ddosify-helm-charts/
helm repo update
kubectl create namespace ddosify
helm upgrade --install --namespace ddosify alaz ddosify/alaz --set monitoringID=$MONITORING_ID --set backendHost=$BACKEND_HOST
```

For more installation methods, see [Alaz (Ddosify eBPF Agent)](https://github.com/ddosify/alaz).

### Alaz Parameters

The following table lists the configurable parameters of the Alaz chart and their default values.

| Parameter | Description | Type | Default |
| --- | --- | --- | --- |
| `monitoringID` | **CHANGE**: Monitoring ID (required). You can get it from Ddosify UI, Cluster Detail Page. | string | `<monitoringID>` |
| `backendHost` | Backend host URL to send the collected data. Default is [Ddosify Cloud](https://app.ddosify.com/). If you have Ddosify Self-Hosted installed, you can give the backend URL. | string | `https://api.ddosify.com:443` |
| `namespace` | Namespace to deploy the chart | string | `ddosify` |
| `logLevel` | [Zero log](https://github.com/rs/zerolog) level (0: trace, 1: debug, 2: info, 3: warn, 4: error, 5: fatal, 6: panic) | int | `1` |
| `resources.limits.cpu` | CPU limit | string | `1` |
| `resources.limits.memory` | Memory limit | string | `1Gi` |
| `resources.requests.cpu` | CPU request | string | `500m` |
| `resources.requests.memory` | Memory request | string | `400Mi` |
| `image` | Alaz Docker image | string | `ddosify/alaz:v0.1.4` |
| `imagePullPolicy` | Image pull policy | string | `IfNotPresent` |
| `containerPort` | Container port for debugging and profiling Alaz | int | `8181` |
| `podAnnotations` | Annotations to add to the pod | object | `{}` |
| `metricsEnabled` | Enable prometheus node exporter metrics (cpu, memory, network, disk, etc.) | bool | `true` |
| `serviceMapEnabled` | Enable service map for K8s network traffic using eBPF | bool | `true` |
| `distTracingEnabled` | Enable distributed tracing using eBPF | bool | `true` |

You can override these default values by creating a `values.yaml` file and specifying your own values or using the `--set` flag during installation.

## Notes

- For AWS EKS, Amazon EKS CSI Driver addon must be enabled to use the EBS storage class. For more information, see [Amazon EKS CSI Driver](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html).
You can join our [Discord Server](https://discord.gg/9KdnrSUZQg) for discussions, support, and community updates.
Binary file added assets/ddosify_service_map.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 7 additions & 3 deletions charts/alaz/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apiVersion: v2
name: alaz
description: Alaz is an open-source Ddosify eBPF agent that can inspect and collect Kubernetes (K8s) service traffic without the need for code instrumentation, sidecars, or service restarts. This is possible due to its use of eBPF technology. Alaz can create a Service Map that helps identify golden signals and problems like high latencies, 5xx errors, zombie services, SQL queries. Additionally, it can gather system information and resources via the Prometheus Node Exporter, which is readily available on the agent.
description: Alaz is an open-source Ddosify eBPF agent that can inspect and collect Kubernetes (K8s) service traffic without the need for code instrumentation, sidecars, or service restarts. Alaz can create a Service Map that helps identify golden signals and problems like high latencies, 5xx errors, zombie services, SQL queries. Additionally, it can gather system information and resources via the Prometheus Node Exporter, which is readily available on the agent.

# A chart can be either an 'application' or a 'library' chart.
#
Expand All @@ -16,12 +16,16 @@ icon: https://d2uj9largygsoq.cloudfront.net/docker/ddosify-square-icon-db.svg
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.5.1
version: 0.5.2

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "v0.5.0"
appVersion: "v0.5.2"

kubeVersion: ">=1.16.0-0"

annotations:
charts.openshift.io/name: "Alaz is an open-source Ddosify eBPF agent that can inspect and collect Kubernetes (K8s) service traffic without the need for code instrumentation, sidecars, or service restarts. Alaz can create a Service Map that helps identify golden signals and problems like high latencies, 5xx errors, zombie services, SQL queries. Additionally, it can gather system information and resources via the Prometheus Node Exporter, which is readily available on the agent."
charts.openshift.io/versions: ">=4.5"
48 changes: 48 additions & 0 deletions charts/alaz/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Alaz Chart - Ddosify eBPF Agent

[Alaz](https://github.com/ddosify/alaz) is an open-source Ddosify eBPF agent that can inspect and collect Kubernetes (K8s) service traffic without the need for code instrumentation, sidecars, or service restarts. This is possible due to its use of eBPF technology. Alaz can create a Service Map that helps identify golden signals and problems like high latencies, 5xx errors, zombie services, SQL queries. Additionally, it can gather system information and resources via the Prometheus Node Exporter, which is readily available on the agent.

To install the Alaz chart, first, you need to add the Ddosify Helm repository:

```bash
helm repo add ddosify https://ddosify.github.io/ddosify-helm-charts/
helm repo update
```

Then, you can install the Alaz chart with the following command:
```bash
# Replace <MONITORING_ID> with your monitoring ID from the Ddosify UI. Change XXXXX with your monitoring ID.
MONITORING_ID=XXXXX
# Set BACKEND_HOST with your Ddosify Self-Hosted Endpoint. If your Ddosify Self-Hosted endpoint is http://localhost:8014, then BACKEND_HOST=http://localhost:8014/api
BACKEND_HOST=XXXXX
helm repo add ddosify https://ddosify.github.io/ddosify-helm-charts/
helm repo update
kubectl create namespace ddosify
helm upgrade --install --namespace ddosify alaz ddosify/alaz --set monitoringID=$MONITORING_ID --set backendHost=$BACKEND_HOST
```

For more installation methods, see [Alaz (Ddosify eBPF Agent)](https://github.com/ddosify/alaz).

## Alaz Chart Configuration Parameters

The following table lists the configurable parameters of the Alaz chart and their default values.

| Parameter | Description | Type | Default |
| --- | --- | --- | --- |
| `monitoringID` | **CHANGE**: Monitoring ID (required). You can get it from Ddosify UI, Cluster Detail Page. | string | `""` |
| `backendHost` | Backend host URL to send the collected data. Default is [Ddosify Cloud](https://app.ddosify.com/). If you have Ddosify Self-Hosted installed, you can give the backend URL. | string | `https://api.ddosify.com:443` |
| `namespace` | Namespace to deploy the chart | string | `ddosify` |
| `logLevel` | [Zero log](https://github.com/rs/zerolog) level (0: trace, 1: debug, 2: info, 3: warn, 4: error, 5: fatal, 6: panic) | int | `1` |
| `resources.limits.cpu` | CPU limit | string | `1` |
| `resources.limits.memory` | Memory limit | string | `1Gi` |
| `resources.requests.cpu` | CPU request | string | `500m` |
| `resources.requests.memory` | Memory request | string | `400Mi` |
| `image` | Alaz Docker image | string | - |
| `imagePullPolicy` | Image pull policy | string | `IfNotPresent` |
| `containerPort` | Container port for debugging and profiling Alaz | int | `8181` |
| `podAnnotations` | Annotations to add to the pod | object | `{}` |
| `metricsEnabled` | Enable prometheus node exporter metrics (cpu, memory, network, disk, etc.) | bool | `true` |
| `serviceMapEnabled` | Enable service map for K8s network traffic using eBPF | bool | `true` |
| `distTracingEnabled` | Enable distributed tracing using eBPF | bool | `true` |

You can override these default values by creating a `values.yaml` file and specifying your own values or using the `--set` flag during installation.
15 changes: 15 additions & 0 deletions charts/alaz/templates/tests/test-alaz.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "alaz.fullname" . }}-test-api"
namespace: {{ .Values.namespace }}
annotations:
"helm.sh/hook": test
"helm.sh/hook-delete-policy": hook-succeeded,hook-failed
spec:
serviceAccountName: alaz-serviceaccount
containers:
- name: test
image: bitnami/kubectl
command: ['kubectl', 'get', 'pods', '-l', 'app.kubernetes.io/name={{ include "alaz.name" . }}', '-o', 'jsonpath={..status.conditions[?(@.type=="Ready")].status}']
restartPolicy: Never
103 changes: 103 additions & 0 deletions charts/alaz/values.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Alaz Helm Chart Values",
"description": "Validation schema for values of Alaz Helm chart",
"type": "object",
"properties": {
"namespace": {
"type": "string",
"description": "Namespace to deploy the chart",
"default": "ddosify"
},
"backendHost": {
"type": "string",
"format": "uri",
"description": "Backend host URL to send the collected data",
"default": "https://api.ddosify.com:443"
},
"monitoringID": {
"type": "string",
"description": "Monitoring ID (required). You can get it from Ddosify Platform"
},
"logLevel": {
"type": "integer",
"description": "Zero log level",
"enum": [0, 1, 2, 3, 4, 5, 6],
"default": 1
},
"resources": {
"type": "object",
"properties": {
"limits": {
"type": "object",
"properties": {
"cpu": {
"type": "string",
"pattern": "^\\d+m?$",
"default": "1"
},
"memory": {
"type": "string",
"pattern": "^\\d+(Mi|Gi)$",
"default": "1Gi"
}
}
},
"requests": {
"type": "object",
"properties": {
"cpu": {
"type": "string",
"pattern": "^\\d+m?$",
"default": "500m"
},
"memory": {
"type": "string",
"pattern": "^\\d+(Mi|Gi)$",
"default": "400Mi"
}
}
}
}
},
"image": {
"type": "string",
"description": "Alaz Docker image",
"default": "ddosify/alaz:v0.1.4"
},
"imagePullPolicy": {
"type": "string",
"enum": ["Always", "Never", "IfNotPresent"],
"default": "IfNotPresent"
},
"containerPort": {
"type": "integer",
"description": "Container port for debugging and profiling Alaz",
"default": 8181
},
"podAnnotations": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"default": {}
},
"metricsEnabled": {
"type": "boolean",
"description": "Enable Prometheus node exporter metrics",
"default": true
},
"serviceMapEnabled": {
"type": "boolean",
"description": "Enable service map for K8s network traffic using eBPF",
"default": true
},
"distTracingEnabled": {
"type": "boolean",
"description": "Enable distributed tracing using eBPF",
"default": true
}
},
"required": ["namespace", "backendHost", "monitoringID", "logLevel", "resources", "image", "imagePullPolicy", "containerPort", "metricsEnabled", "serviceMapEnabled", "distTracingEnabled"]
}

4 changes: 2 additions & 2 deletions charts/alaz/values.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
namespace: ddosify

backendHost: https://api.ddosify.com:443
monitoringID: <monitoringID> # required
monitoringID: "" # required
logLevel: 1 # zero log levels: -1: trace, 0: debug, 1: info, 2: warn, 3: error, 4: fatal, 5: panic

resources:
Expand All @@ -12,7 +12,7 @@ resources:
cpu: 500m
memory: 400Mi

image: ddosify/alaz:v0.5.0
image: ddosify/alaz:v0.5.2
imagePullPolicy: IfNotPresent
containerPort: 8181
podAnnotations: {}
Expand Down
Loading

0 comments on commit 8aecd8d

Please sign in to comment.