> ## Documentation Index
> Fetch the complete documentation index at: https://docs.odigos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# System Requirements

> To ensure optimal performance and compatibility when deploying Odigos, your environment must meet the following system requirements:

## Kubernetes Version

Odigos requires Kubernetes version 1.21.12 or higher.

## Kubernetes Cluster Types

* [Kind](https://kind.sigs.k8s.io)
* [Minikube](https://minikube.sigs.k8s.io/docs/start)
* [K3s](https://k3s.io)
* [Red Hat OpenShift](https://catalog.redhat.com/software/container-stacks/detail/675201b3ade18c062e2efc0b) (see [how to install on OpenShift](../setup/installation-options#openshift-installation))
* [Amazon Elastic Kubernetes Service (EKS)](https://aws.amazon.com/eks/)
* [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
* [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/products/kubernetes-service)

## Resource Requirements

To achieve its functionality Odigos uses a set of Deployments and DaemonSets.

### Cluster

The following components run as Deployment and request the following resources **(per pod)**:

| Component Name                   | Memory Request | Memory Limit | CPU Request | CPU Limit |
| -------------------------------- | -------------- | ------------ | ----------- | --------- |
| odigos-autoscaler                | 64Mi           | 512Mi        | 10m         | 500m      |
| odigos-instrumentor (2 replicas) | 64Mi           | 512Mi        | 10m         | 500m      |
| odigos-scheduler                 | 64Mi           | 512Mi        | 10m         | 500m      |
| odigos-ui                        | 64Mi           | 512Mi        | 10m         | 500m      |

In addition, Odigos deploys OpenTelemetry Collector Deployment,
with auto scaling (multiple replicas) and configurable resources requests and limits.
The default values (unless overridden) are:

| Component Name | Memory Request | Memory Limit | CPU Request | CPU Limit |
| -------------- | -------------- | ------------ | ----------- | --------- |
| odigos-gateway | 600Mi          | 600Mi        | 1000m       | 1000m     |

Read more [here](../pipeline/configuration).

### Per Node

A DaemonSet running on every node in the cluster, consuming resources as outlined below:

| Component Name  | Memory Request | Memory Limit | CPU Request | CPU Limit |
| --------------- | -------------- | ------------ | ----------- | --------- |
| odiglet         | 500Mi          | 500Mi        | 500m        | 500m      |
| data-collection | 250Mi          | 500Mi        | 250m        | 500m      |
| deviceplugin    | 200Mi          | 300Mi        | 40m         | 100m      |

You can override these values by providing a custom configuration (read more [here](../pipeline/configuration)).

## Network Requirements

<Warning>
  Ensure that any network-layer components are properly configured to allow the required connectivity between Odigos components. Improper configuration may impact the correct operation of Odigos.
</Warning>

To ensure proper operation of Odigos components and instrumented applications, the following network connectivity must be allowed inside the Kubernetes cluster:

### Core Network Connectivity

| Source                        | Destination Service                    | Ports                        | Purpose                                             |
| ----------------------------- | -------------------------------------- | ---------------------------- | --------------------------------------------------- |
| Instrumented Application Pods | `odiglet-local`                        | `4320`                       | Retrieve instrumentation configuration from Odiglet |
| Instrumented Application Pods | `odigos-data-collection-local-traffic` | `4317` (gRPC), `4318` (HTTP) | Export application telemetry data (OTLP protocol)   |
| Odiglet Pods                  | `odigos-data-collection-local-traffic` | `4318`                       | Export eBPF-collected telemetry data                |

### Network Layer Considerations

In some environments, the following network components may affect traffic between these services:

* Service meshes (e.g. Istio, Linkerd, Cilium, Consul)
* HTTP proxies or egress gateways
* Transparent proxies (corporate or cluster-level)
* Network security appliances (WAFs, L7 firewalls, DPI systems)
* Kubernetes NetworkPolicies
