Welcome

This documentation will guide you through the process of deploying Raven, a powerful platform designed to drastically deprioritize vulnerabilities, stop application attacks early in the kill chain and prevent vulnerabilities in the first place with runtime patching.

Setting Up

Welcome to the getting started guide for deploying Raven Sensor on your Kubernetes cluster. Estimated installation time - 5 minutes. Raven Sensor provides powerful monitoring and profiling capabilities for your Kubernetes nodes. In this guide, we’ll walk you through the process of deploying Raven Sensor using a Helm chart.

Before you begin, ensure you have the following:

  • A running Kubernetes cluster.
  • Helm installed on your local machine.
  • Access to your Kubernetes cluster with kubectl.

Prerequesites and Requirements

In order to deploy Raven Sensor you need to make sure you are running a k8s cluster

  1. Environment AWS EKS, GCP GKE, Azure AKS
  2. Required Skills: Deploying helm charts to a k8s cluster.
  3. Required OS: Linux
  4. Minimum supported Linux kernel versions: 4.18 for amd64/x86_64 and 5.5 for arm64/aarch64
  5. Supported Programming Languages: Java (and any JVM based programming language), JavaScript (Node.js), Python, Go, Ruby, C++, C, Rust, PHP, Scala, Kotlin
  6. Ensure outbound communication to the following addresses
    1. cloud.raven.io
    2. releases.cloud.raven.io
    3. operator-helm.cloud.raven.io
    4. operator-backend.cloud.raven.io
    5. upload.cloud.raven.io

Step 1: Add Raven Operator Helm Repository

First, add the Raven Profiler Helm repository to your Helm configuration.

helm repo add raven-operator https://operator-helm.cloud.raven.io
helm repo update

Step 2: Install Raven Operator

By default the sensor sends data to Raven AWS Tenant on us-east-1. To install Raven Operator using the Helm chart, run the following command:

 helm install raven-operator raven-operator/raven-operator -n raven-operator  --set "client.token=YOUR RAVEN TOKEN" --set "sensor.spec.clusterName=YOUR CLUSTER NAME"

This command deploys a an operator the creates a DaemonSet that runs the Raven Sensor on all nodes in your Kubernetes cluster.

Refer to the Kubernetes Cluster name for setting Kubernetes Cluster Name instructions.

Step 3: Verify Installation

To verify that the Raven Sensor is running, use the following command:

kubectl get daemonset -n raven-operator

You should see an output indicating that the Raven Sensor DaemonSet is running on all nodes.

Configuration Options

The Helm chart for Raven Sensor supports several configuration options. You can customize the deployment by creating a values.yaml file and passing it to the helm install command.

Example values.yaml:

# Raven Helm Chart will create a Kubernetes Secret for the Raven Token in your Kubernetes Cluster. If you want to deploy the Kubernetes Secret by yourself, please remove/comment out the next two lines "client.token", and use the Custom Kubernetes Secret specified in the sensor.spec.auth section
client:
  token: YOUR RAVEN TOKEN
  
# Raven Sensor daemonset configuration  
sensor:
  # The sensor.serviceAccount section is needed to automatically discover the Kubernetes cluster name. You can optionally use the sensor.spec.clusterName section and manually enter the Kubernetes cluster name without needing to provide a service account to Raven.
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: arn:aws:iam::XXXXXXXXXXXX:role/raven-sensor
  spec:
    name: "raven-sensor"
    image: "726055948281.dkr.ecr.us-east-1.amazonaws.com/raven-sensor:latest"
    clusterName: YOUR CLUSTER NAME

    # Optionally specify the Kubernetes Secret which contains the Raven Token. Use this if you don't want Raven Helm Chart to create a Kubernetes Secret. If you want to deploy the Kubernetes Secret by yourself, use the sensor.spec.auth section as follows and remove/comment out the "client.token" section
    # auth:
    #   clientTokenSecret:
    #     name: "raven-sensor"
    #     key: "raven-client-token"

    # Optionally specify resources limits and requests for sensor daemonset
    # resources:
    #   limits:
    #     memory: 
    #   requests:
    #     memory: 

    # Optionally specify tolerations for sensor daemonset
    # tolerations:
    #   - key: ""
    #     operator: ""
    #     value: ""
    #     effect: ""

    # Optionally specify node selector for sensor daemonset
    # nodeSelector:
    #   kubernetes.io/os: "linux"

# Raven Operator configuration
  controllerManager:
    manager:
      # Optionally specify if you want to choose the europe site
      # apiAddr: "operator-backend.eu.cloud.raven.io"
      image:
        repository: releases.cloud.raven.io/raven-public/raven-operator
        tag: latest
      resources:
        limits:
          cpu: 500m
          memory: 128Mi
        requests:
          cpu: 10m        
          memory: 64Mi

On Azure AKS, the Kubernetes Cluster Name Automatic Detection feature is currently not supported. Please specify the cluster name manually via the sensor.spec.clusterName section in the values.yaml

Install Raven Sensor with custom values:

helm install -f values.yaml my-raven-operator raven-operator/raven-operator

Step 4: Accessing Raven Sensor

Once the Raven Sensor is deployed, it will automatically start collecting data from your Kubernetes nodes. You can access the collected data through the cloud.raven.io dashboard.