Skip to content

DEVOPS-2722-changed-chart docs minor fixes #51

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

Merged
merged 2 commits into from
Apr 29, 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
29 changes: 13 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

# Lightrun Helm Chart
The `lightrun` Helm chart provides a reliable and efficient way to deploy and manage Lightrun on Kubernetes. It includes all the essential components for a smooth setup and can scale seamlessly to support large deployments.
## Architecture Overview
Expand Down Expand Up @@ -36,56 +35,56 @@ To ensure a smooth and secure production deployment of Lightrun, follow these ke

- Review the Compatibility matrix for the supported tools.
[More info on Compatibility](docs/installation/compatibility_matrix.md)
#### **2. Secrets**
#### **3. Secrets**

- Decide whether to use Helm-managed secrets or an external secrets manager.
[More info on Secrets Management](docs/installation/secrets.md)
#### **3. Lightrun Certificate**
#### **4. Lightrun Certificate**

- Plan how Lightrun certificate will be issued and managed for secure communications.
[More info on Certificate](docs/installation/certificate.md)
#### **4. Database**
#### **5. Database**

> [!TIP]
> Use external database
> Use external managed database

- Choose between a local or external database.
[More info on Database Setup](docs/components/database.md)

#### **5. Router**
#### **6. Router**

- Decide how external traffic will reach the Lightrun router (Ingress, Service, OpenShift Route).
[More info on Router](docs/components/router/index.md)

#### **6. Container Images Registry**
#### **7. Container Images Registry**

- Choose where to store and manage container images (e.g., private registry, Docker Hub, Azure Container Registry, AWS ECR).
[More info on Container Image Registry](docs/installation/container_image_registry.md)

#### **7. Redis**
#### **8. Redis**
> [!TIP]
> Use external redis
> Use external managed redis
- Determine if Redis will be local or external.
[More info on Redis Setup](docs/components/redis.md)

#### **8. (Optional)RabbitMQ**
#### **9. (Optional)RabbitMQ**

- Determine if RabbitMQ is needed for sending telemetry to Lightrun.
[More info on RabbitMQ](docs/components/rabbitmq.md)

#### **9. (Optional)Network Policy**
#### **10. (Optional)Network Policy**

- Establish network policies to restrict access between services and prevent unauthorized communication.
[More info on Network Policy](docs/advanced/network_policy.md)

#### **10. (Optional)Internal TLS Communication**
#### **11. (Optional)Internal TLS Communication**

- Decide whether internal TLS is necessary for secure component communication.
[More info on Internal TLS](docs/advanced/internal_tls.md)

#### **11. Choose Your Deployment Option**
#### **12. Choose Your Deployment Option**

Decide where to run your Kubernetes cluster based on your infrastructure needs. Consider whether youll deploy all services locally (including RabbitMQ, Redis, and MySQL) or use managed cloud services.
Decide where to run your Kubernetes cluster based on your infrastructure needs. Consider whether you'll deploy all services locally (including RabbitMQ, Redis, and MySQL) or use managed cloud services.
##### **Supported Kubernetes Platforms:**

Select your preferred cloud provider for deployment:
Expand All @@ -96,8 +95,6 @@ Select your preferred cloud provider for deployment:
- **[OpenShift](docs/installation/cloud/openshift.md)**
## Known Issues and Limitations

Review the [Known Limitations](docs/limitations.md) before deployment.

## Release Notes

Check the [versions mapping documentation](docs/installation/versions_mapping.md) for version compatibility.
Expand Down
17 changes: 10 additions & 7 deletions docs/components/database.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ Before using an external MySQL database, you MUST configure the following server

| System Variable | Required Value | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------- | ------------------------------------------------------------------------------- |
| [`sql_generate_invisible_primary_key`](https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_sql_generate_invisible_primary_key) | `0` | Must be **OFF** to avoid invisible primary keys. |
| [`lower_case_table_names`](https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_lower_case_table_names) | `1` | Must be **ON** to ensure table name consistency. |
| [`max_connections`](https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections) | `100 * (# of backends) + 10 * (# of Keycloak)` | Must be set according to the number of backend services and Keycloak instances. |
| [`character_set_server`](https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_character_set_server) | `utf8mb4` | Must be set to `utf8mb4` for full Unicode support. |
| [`sql_generate_invisible_primary_key`](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_sql_generate_invisible_primary_key) | `0` | Must be **OFF** to avoid invisible primary keys. |
| [`lower_case_table_names`](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_lower_case_table_names) | `1` | Must be **ON** to ensure table name consistency. |
| [`max_connections`](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections) | `70 * (# of backends) + 10 * (# of Keycloak)` | Must be set according to the number of backend services and Keycloak instances. |
| [`character_set_server`](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_server) | `utf8mb4` | Must be set to `utf8mb4` for full Unicode support. |

**Pre-created Database Requirement:**
The target MySQL database **must be created in advance** and should match the value of `general.db_database`. The application will not create the database automatically.
Expand All @@ -35,8 +35,8 @@ CREATE DATABASE lightrunserver;

### **[REQUIRED] External Database Requirements**

- **MySQL Version**: `>= 8.0.37`
- **Database Size**: CPU, Memory, and Disk must meet [**capacity table requirements**](../installation/capacity_planning.md).
- **MySQL Version**: `>= 8.0.34`
- **Database Size**: Minimum requirements are 2vCPU with 8GB memory & 100GB disk. Specific size according to planned capacity should be coordinated with Lightrun support engineer.
- **Database Engine**: **Must be MySQL** (MySQL-compatible databases like **Aurora are NOT supported**).
---

Expand Down Expand Up @@ -66,6 +66,9 @@ general:
In this mode, MySQL is deployed **inside the cluster** using either:
A **StatefulSet** with persistent storage (**Recommended**)
A **Deployment** with ephemeral storage (for testing purposes)

> HA is not supported for MySql in local mode

### **Basic Configuration**
```yaml
general:
Expand Down Expand Up @@ -175,7 +178,7 @@ general:
db_database: lightrunserver
statefulset:
enabled: true
storageClassName: "gp2"
storageClassName: "gp3"
storageSize: "100Gi"

```
Expand Down
2 changes: 2 additions & 0 deletions docs/components/rabbitmq.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ This section configures **RabbitMQ** as the message queue. You can either:
or
* Connect to an **external RabbitMQ instance** (`general.mq.local: false`).

> [!NOTE]
> When using an external RabbitMQ instance, we support RabbitMQ versions 3.12.x.

### **Basic Configuration**
| Property | Description |
Expand Down
6 changes: 5 additions & 1 deletion docs/components/redis.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ There are two modes:
> [!NOTE]
> When using external Redis, ensure that the provided endpoints are reachable. Also, if using replicated architecture, the list of node addresses must be correctly provided.

> [!IMPORTANT]
> - Supported Redis versions: 7.1 and 7.2
> - Minimum size requirements: 2 vCPU, 6GB memory
> - Supported HA configurations: Only replication mode is supported (cluster mode is not supported)

### Configuration Options

Expand Down Expand Up @@ -62,7 +66,7 @@ When using a local Redis deployment (i.e., `deployments.redis.external.enabled:
- **Single Replica Only**: The local deployment always uses one replica.
- All deployment settings (image, resources, persistence, and health probes) apply.

configuration is defined under **`deployments.redis`** in the **`values.yaml`**
configuration is defined under **`deployments.redis`** in the **`values.yaml`**
```yaml
deployments:
redis:
Expand Down
2 changes: 1 addition & 1 deletion docs/components/router/openshift_haproxy.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ This section configures **Lightrun Router** with the **Openshift HAProxy Router*
1. Ability to create a DNS A record that points to the Openshift HAProxy Router external record.
# Caution
If you want the Lightrun application to be accessible via the default OpenShift domain (disabled by default).
For example, the application URL might look like this: https://lightrun.apps.test.o5mj.p1.openshiftapps.com/.
For example, the application URL might look like this: `https://lightrun.apps.test.o5mj.p1.openshiftapps.com/`.
Follow these steps:

1. Enable Default OpenShift Domain:
Expand Down
32 changes: 1 addition & 31 deletions docs/installation/capacity_planning.md
Original file line number Diff line number Diff line change
@@ -1,31 +1 @@
This document provides capacity planning guidelines for deploying and scaling infrastructure based on the number of agents in a system. It includes details on required resources, instance types, and configurations for different cloud providers (AWS, Azure, and GCP). The goal is to ensure optimal performance and resource utilization while maintaining high availability.


> [!NOTE]
> If you intend to deploy all services, including MySQL and Redis, within the cluster (not recommended for production), keep in mind that each service will run with **a single replica** (no high availability). To fit all services, you must allocate at least **9 vCPUs** and **25 GiB of memory**.


The capacity planning estimates include:

- **Application Pods**: Compute and memory resources required for each component.

- **Kubernetes Worker Nodes**: Compute instances needed to support the workload.

- **Managed Services**: Database and Redis services specifications.
## Capacity Planning Table
> [!NOTE]
> the capacity planning do not include k8s reserved resources, such as kube-reserved, system-reserved, and eviction threshold.
The following table outlines resource allocations based on different agent counts:

### Scaling by Agent Count

| Agents | Router Pods | Frontend Pods | Backend Pods | Keycloak Pods | Datastreamer Pods | RabbitMQ Pods | Kubernetes Worker Nodes | Managed MySQL | Managed Redis |
| -------- | ------------------- | ------------------- | ---------------- | --------------- | ------------------- | ----------------- | ---------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| **1K** | 1 (0.3 vCPU, 256Mb) | 1 (0.1 vCPU, 128Mb) | 1 (3 vCPU, 7GB) | 1 (1 vCPU, 2GB) | 1 (0.1 vCPU, 128MB) | 1 (0.5 vCPU, 1GB) | 2 (4 vCPU, 8GB memory, 10 GB disk) | db.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) | cache.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) |
| **5K** | 2 (0.3 vCPU, 256Mb) | 2 (0.1 vCPU, 128Mb) | 2 (3 vCPU, 7GB) | 2 (1 vCPU, 2GB) | 2 (0.1 vCPU, 128MB) | 3 (0.5 vCPU, 1GB) | 4 (4 vCPU, 8GB, 10 GB disk) | db.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) | cache.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) |
| **7.5K** | 2 (0.3 vCPU, 256Mb) | 2 (0.1 vCPU, 128Mb) | 3 (3 vCPU, 7GB) | 2 (1 vCPU, 2GB) | 2 (0.1 vCPU, 128MB) | 3 (0.5 vCPU, 1GB) | 5 (4 vCPU, 8GB, 10 GB disk) | db.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) | cache.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) |
| **10K** | 2 (0.3 vCPU, 256Mb) | 2 (0.1 vCPU, 128Mb) | 4 (3 vCPU, 7GB) | 2 (1 vCPU, 2GB) | 2 (0.1 vCPU, 128MB) | 3 (0.5 vCPU, 1GB) | 6 (4 vCPU, 8GB, 10 GB disk) | db.m7g.xlarge (AWS), Standard_D4as_v5 (Azure), n2-standard-4 (GCP) | cache.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) |
| **15K** | 2 (0.3 vCPU, 256Mb) | 2 (0.1 vCPU, 128Mb) | 5 (3 vCPU, 7GB) | 2 (1 vCPU, 2GB) | 2 (0.1 vCPU, 128MB) | 3 (0.5 vCPU, 1GB) | 7 (4 vCPU, 8GB, 10 GB disk) | db.m7g.xlarge (AWS), Standard_D4as_v5 (Azure), n2-standard-4 (GCP) | cache.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) |
| **20K** | 2 (0.3 vCPU, 256Mb) | 2 (0.1 vCPU, 128Mb) | 7 (3 vCPU, 7GB) | 2 (1 vCPU, 2GB) | 2 (0.1 vCPU, 128MB) | 3 (0.5 vCPU, 1GB) | 9 (4 vCPU, 8GB, 10 GB disk) | db.m7g.xlarge (AWS), Standard_D4as_v5 (Azure), n2-standard-4 (GCP) | cache.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) |
| **25K** | 2 (0.3 vCPU, 256Mb) | 2 (0.1 vCPU, 128Mb) | 9 (3 vCPU, 7GB) | 2 (1 vCPU, 2GB) | 2 (0.1 vCPU, 128MB) | 3 (0.5 vCPU, 1GB) | 11 (4 vCPU, 8GB, 10 GB disk) | db.m7g.2xlarge (AWS), Standard_D8as_v5 (Azure), n2-standard-8 (GCP) | cache.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) |
| **30K** | 2 (0.3 vCPU, 256Mb) | 2 (0.1 vCPU, 128Mb) | 10 (3 vCPU, 7GB) | 2 (1 vCPU, 2GB) | 2 (0.1 vCPU, 128MB) | 3 (0.5 vCPU, 1GB) | 12 (4 vCPU, 8GB, 10 GB disk) | db.m7g.2xlarge (AWS), Standard_D8as_v5 (Azure), n2-standard-8 (GCP) | cache.m7g.large (AWS), Standard_D2s_v3 (Azure), n2-standard-2 (GCP) |
Capacity planning should be done in coordination with Lightrun Support Engineers.
10 changes: 6 additions & 4 deletions docs/installation/compatibility_matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ This document provides a compatibility overview for Kubernetes and OpenShift ver

## OpenShift Compatibility

| OpenShift Version | Compatibility | Comments |
| ----------------- | ------------- | ------------------------------------------------------------------------ |
| 4.17.7 | Compatible | Tested with chart version 3.9.0 and LR version 1.47.1-release.d4424d8dee |
| 4.14.42 | Compatible | Tested with chart version 3.9.0 and LR version 1.47.1-release.d4424d8dee |
| OpenShift Version | Compatibility | Comments |
| ----------------- | ------------- | -------- |
| 4.14 | Compatible | |
| 4.15 | Compatible | |
| 4.16 | Compatible | |
| 4.17 | Compatible | |

2 changes: 1 addition & 1 deletion docs/installation/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ secrets:

- **Docker images** are pulled from the Lightrun private repository on DockerHub (`lightruncom`).

- **Router** is exposed without SSL, relying on an Nginx ingress controller for SSL termination.
- **Router** is exposed without SSL, relying on an ingress controller (such as Nginx) for SSL termination.


For a self-signed certificate, see **"Generating a Self-Signed TLS Certificate"** section in the [Certificate Overview](docs/installation/certificate)
Expand Down
1 change: 0 additions & 1 deletion docs/limitations.md

This file was deleted.

Loading