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 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.

    • 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.

  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.

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.

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.

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:

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.

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 or contact our support team.