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

# Helm installation

## Introduction

This document provides a comprehensive guide to install and configure the Raven Platform in your Kubernetes (K8s) clusters using Helm charts. This guide is intended for platform engineers and administrators who are responsible for deploying and managing the Raven platform within their infrastructure.

## Prerequisites

Before proceeding with the Helm installation, ensure you have completed the following prerequisites:

1. **AWS Setup**: Follow the AWS setup steps mentioned [here](https://docs.raven.io/aws-setup) using Terraform to create the necessary resources, including:We provide a Terraform example repository to assist you with this setup, which can be found [here](https://gitlab.com/Raven-IO/aws-terraform-example).

   * RDS Database

   * Elasticache Redis

   * ClickHouse Database

   * Secrets

   * EKS Cluster

   * Required IAM Roles

2. **Helm Installation**: Ensure Helm is installed on your local machine. You can find the installation guide [here](https://helm.sh/docs/intro/install/).

3. **Helm Registry Login**: You need to log in to the Helm registry using your provided username and password.

## Step-by-Step Guide

### Step 1: Login to Helm Registry

First, authenticate with the Helm registry to access the Raven platform charts.

```bash theme={null}
helm registry login releases.cloud.raven.io
```

You will be prompted to enter your username and password. Ensure you have these credentials handy.

### Step 2: Fetch Helm Chart Values

To customize your Helm chart installation, you may want to review the possible configuration values. Use the following command to display all configurable parameters.

```bash theme={null}
helm show values oci://releases.cloud.raven.io/self-hosted/raven-platform
```

### Step 3: Install the Raven Platform Helm Chart

Once authenticated and aware of the configurable values, you can proceed to install the Raven platform Helm chart. Replace `<your-namespace>` with the namespace where you want to deploy the platform and customize the `<config.yaml>` with your specific configurations.

```bash theme={null}
helm install raven-platform oci://releases.cloud.raven.io/self-hosted/raven-platform --namespace <your-namespace> -f <config.yaml>
```

#### Example Configuration (`config.yaml`)

Below is an example `config.yaml` to illustrate how you might configure your Helm chart:

```yaml theme={null}
imageCredentials:
  name: raven-platform-image
  username: user  # Your Docker registry username
  password: "user!!!"  # Your Docker registry password
  existingSecret: ""

customers-service:
  postgresCredentials:
    existingSecretName: "customers-database-secret"
    PSQL_DBNAME: "customers"
  image:
    tag: latest
  imagePullSecrets:
    - name: raven-platform-image

ingestion-service:
  image:
    tag: latest
  imagePullSecrets:
    - name: raven-platform-image
  s3:
    nodeDataBucketName: "raven-nodes-data"
    nodeSymbolsBucketName: "raven-symbols-metadata"
    endpoint: "s3.us-east-1.amazonaws.com"
    region: "us-east-1"
    aws_sdk_auth: false
  redis:
    samples_queue: "SAMPLES_DATA"
    traces_queue: "TRACES_DATA"
    metrics_queue: "metricsQueue"
    batch_processing: true
    host: "redis-host"
    port: "6379"
  clickhouse:
    host: "clickhouse-host"
    port: "9000"
    tls: false
    user: "default"
    database: "default"
    password: "" # Leave empty to not use it and attach a pre-created secret using extraSecrets
  extraSecrets:
    - clickhouse-secret

query-service:
  image:
    tag: latest
  imagePullSecrets:
    - name: raven-platform-image
  application:
    production: true
  routes:
    http_address: ":7070"
    grpc_server_host: ""
    grpc_server_port: "9092"
    profile_share_address: "api.pprof.me:443"
    customer_service_address: "customers-service:8080"
  logs:
    level: debug
  clickhouse:
    host: "clickhouse-host"
    port: "9000"
    tls: false
    user: "default"
    database: "default"
    password: "" # Leave empty to not use it and attach a pre-created secret using extraSecrets
  extraSecrets:
    - clickhouse-secret
  ingress:
    enabled: "true"
    annotations:
      nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
    hosts:
      - host: query.raven.yourdomain.com
        paths:
          - path: /
            pathType: ImplementationSpecific
    tls:
      - hosts:
        - query.raven.yourdomain.com
        secretName: query-raven-yourdomain-com

raven-ui:
  image:
    tag: latest
  imagePullSecrets:
    - name: raven-platform-image
  ingress:
    enabled: "true"
    hosts:
      - host: raven.yourdomain.com
        paths:
          - path: /
            pathType: ImplementationSpecific
    tls:
      - hosts:
        - raven.yourdomain.com
        secretName: raven-yourdomain-com

upload-service:
  image:
    tag: latest
  imagePullSecrets:
    - name: raven-platform-image
  customerService:
    port: 8080
    host: "customers-service"
  redis:
    host: "redis-host"
    port: "6379"
  clickhouse:
    host: "clickhouse-host"
    port: "9000"
    tls: false
    user: "default"
    database: "default"
    password: "" # Leave empty to not use it and attach a pre-created secret using extraSecrets
  extraSecrets:
    - clickhouse-secret
  ingress:
    enabled: "true"
    hosts:
      - host: upload.raven.yourdomain.com
        paths:
          - path: /
            pathType: ImplementationSpecific
    tls:
      - hosts:
        - upload.raven.yourdomain.com
        secretName: upload-raven-yourdomain-com
```

### Step 4: Verify Installation

After the installation command completes, verify that all resources are created and running as expected.

```bash theme={null}
kubectl get pods -n <your-namespace>
kubectl get svc -n <your-namespace>
```

### Step 5: Access the Raven Platform

Once all pods are running and the services are up, you can access the Raven platform via the ingress host specified in your configuration (`raven.yourdomain.com`).

## Conclusion

Ensure you review and customize the Helm values to fit your specific infrastructure and security requirements. For further assistance, refer to the [Raven Documentation](https://docs.raven.io) or contact our [support team](support@raven.io).
