Skip to main content
Application Deployment - Deploy Relvy to your Kubernetes cluster using Helm charts with automated installation or manual configuration.

Overview

This guide walks you through deploying Relvy to your Kubernetes cluster using Helm. We provide two deployment methods: an interactive installer script for quick setup, or manual Helm installation for more control.

Deployment Components

Helm Repository

Add Relvy Helm charts repository

Configuration

Configure database, domain, and credentials

Deployment

Install Relvy using Helm charts

Verification

Verify pods, services, and ingress

Prerequisites

Before deploying Relvy, ensure you have:
  • Kubernetes Cluster - Running and accessible via kubectl
  • Database - PostgreSQL endpoint and credentials
  • SSL Certificate - ACM certificate ARN or equivalent
  • Docker Credentials - Access token for Relvy Docker registry
  • Domain Name - Chosen subdomain for Relvy application
  • License Key - Required to login and use Relvy (contact support@relvy.ai)
Docker Registry Access - Contact Relvy support to obtain Docker registry credentials before proceeding.

Required Information

Gather the following information before starting deployment:
InformationExampleSource
Database Endpointrelvy-app-db.xxxxx.us-east-1.rds.amazonaws.comRDS/Cloud SQL console
Database NamerelvydbDatabase configuration
Database UserpostgresDatabase configuration
Database Passwordyour-secure-passwordSet during database creation
Domain Namerelvy.yourdomain.comYour chosen subdomain
Certificate ARN (AWS)arn:aws:acm:us-east-1:xxxxx:certificate/xxxxxACM console
Docker Passwordyour-docker-tokenProvided by Relvy
License Keyyour-license-keyProvided by Relvy (support@relvy.ai)
The interactive installer guides you through the deployment process with prompts for all required information.

Step 1: Clone Helm Repository

# Clone the Relvy Helm charts repository
git clone https://github.com/Relvy-AI/relvy-helm-charts.git
cd relvy-helm-charts

Step 2: Run Interactive Installer

# Make installer executable
chmod +x install.sh

# Run the installer
./install.sh
The installer will prompt you for:
  1. Database endpoint and credentials
  2. Domain name
  3. Docker registry password
  4. SSL certificate ARN (for AWS)

Step 3: Monitor Installation

The installer will:
  • Add the Relvy Helm repository
  • Create Kubernetes secrets for database and Docker registry
  • Install Relvy Helm chart with your configuration
  • Display deployment status
# Watch pods come up
kubectl get pods -w

# Check deployment status
kubectl get deployments
Installation Time - Initial deployment takes 3-5 minutes. Database migrations run automatically on first deployment.

Option 2: Manual Helm Installation

For more control over the deployment, you can manually install using Helm.

Step 1: Add Helm Repository

# Add Relvy Helm repository
helm repo add relvy https://relvy-ai.github.io/relvy-helm-charts
helm repo update

Step 2: Create Kubernetes Secrets

Create the required secrets for database, Flask, and Docker registry access:

2.1 Database Secret

# Create database secret
kubectl create secret generic relvy-db-secret \
  --from-literal=password=your-database-password \
  --from-literal=username=postgres

2.2 Flask Secret

# Generate and create Flask secret key
kubectl create secret generic relvy-flask-secret \
  --from-literal=key=$(openssl rand -base64 32)

2.3 License Key Secret (Required for Product Usage)

# Create license key secret
kubectl create secret generic relvy-license-secret \
  --from-literal=key=your-license-key-from-relvy
License Key Required - Replace your-license-key-from-relvy with the actual license key provided by Relvy support. Without a valid license key, the application will deploy successfully but users will not be able to login.

2.4 Docker Registry Secret

# Create Docker registry secret
kubectl create secret docker-registry relvy-registry-secret \
  --docker-server=docker.io \
  --docker-username=relvyuser \
  --docker-password=your-docker-token

Step 3: Create Values File

Create a values.yaml file with your configuration. This is the exact format generated by install.sh:
# Database Configuration
database:
  endpoint: "relvy-app-db.xxxxx.us-east-1.rds.amazonaws.com"
  port: 5432
  name: "relvydb"

# Application Configuration
config:
  serverHostname: "https://relvy.yourdomain.com"

# Web application configuration
web:
  ingress:
    hosts:
      - host: relvy.yourdomain.com
        paths:
          - path: /
            pathType: Prefix
    tls:
      - hosts:
          - relvy.yourdomain.com

Optional: Custom Resources

If you need to customize resource limits or replica counts:
# Database Configuration
database:
  endpoint: "relvy-app-db.xxxxx.us-east-1.rds.amazonaws.com"
  port: 5432
  name: "relvydb"

# Application Configuration
config:
  serverHostname: "https://relvy.yourdomain.com"

# Web application configuration
web:
  replicas: 2
  resources:
    requests:
      memory: "1Gi"
      cpu: "500m"
    limits:
      memory: "2Gi"
      cpu: "1000m"
  ingress:
    hosts:
      - host: relvy.yourdomain.com
        paths:
          - path: /
            pathType: Prefix
    tls:
      - hosts:
          - relvy.yourdomain.com

# Celery worker configuration
celery:
  replicas: 2
  resources:
    requests:
      memory: "2Gi"
      cpu: "1000m"
    limits:
      memory: "4Gi"
      cpu: "2000m"

Step 4: Install Relvy

# Install Relvy with your values file (uses default namespace)
helm install relvy relvy/relvy \
  --values values.yaml \
  --namespace default

Verify Deployment

Step 1: Check Pods

# Check all pods are running
kubectl get pods

# You should see:
# relvy-web-xxxxx          1/1     Running
# relvy-celery-xxxxx       1/1     Running
# relvy-celery-beat-xxxxx  1/1     Running
# relvy-redis-xxxxx        1/1     Running

# Check logs if any pod is not running
kubectl logs relvy-web-xxxxx

Step 2: Check Services

# List services
kubectl get services

# You should see:
# relvy-web        ClusterIP   10.x.x.x    <none>        80/TCP
# relvy-redis      ClusterIP   10.x.x.x    <none>        6379/TCP

Step 3: Check Ingress

# Get ingress details
kubectl get ingress relvy-ingress

# Get ingress load balancer address
kubectl get ingress relvy-ingress \
  -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'

# For GKE (IP address)
kubectl get ingress relvy-ingress \
  -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
Save Load Balancer Address - You’ll need this to configure your domain DNS record.

Configure DNS

Now that the Ingress load balancer is created, configure your domain DNS:

Step 1: Get Load Balancer Address

# For AWS
LB_DNS=$(kubectl get ingress relvy-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
echo "Add CNAME record: $LB_DNS"

# For GKE
LB_IP=$(kubectl get ingress relvy-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "Add A record: $LB_IP"

Step 2: Add DNS Record

In your DNS provider (GoDaddy, Route53, etc.), add: For AWS (CNAME):
TypeNameValueTTL
CNAMErelvyk8s-default-relvying-xxxxx.elb.amazonaws.com600
For GKE (A Record):
TypeNameValueTTL
Arelvy35.201.x.x600

Step 3: Wait for DNS Propagation

# Check DNS resolution
nslookup relvy.yourdomain.com

# Should return your load balancer address

Access Relvy Application

Access Web Interface

  1. Open your browser
  2. Navigate to https://relvy.yourdomain.com
  3. You should see the Relvy landing page
Deployment Complete! - Relvy is now running on your Kubernetes cluster. You can start configuring data sources and integrations.

Troubleshooting

Logs

Check logs to debug issues:
# Web server logs
kubectl logs -f deployment/relvy-web -c web

# Celery worker logs
kubectl logs -f deployment/relvy-celery -c celery

# Celery beat logs
kubectl logs -f deployment/relvy-celery-beat -c celery-beat

# All pods with Relvy label
kubectl logs -f -l app.kubernetes.io/name=relvy

Upgrading

To upgrade Relvy to a new version:
# Update Helm repository
helm repo update

# Upgrade Relvy to a new version
helm upgrade relvy relvy/relvy --version=0.4.0 -f my-values.yaml --timeout 1h

# Check upgrade status
kubectl rollout status deployment/relvy-web
kubectl rollout status deployment/relvy-celery

Uninstalling

To uninstall Relvy from your cluster:
# Uninstall Relvy
helm uninstall relvy --namespace default

# Optionally delete secrets
kubectl delete secret relvy-db-secret --namespace default
kubectl delete secret relvy-flask-secret --namespace default
kubectl delete secret relvy-registry-secret --namespace default
Note - Uninstalling Relvy does not delete your database or DNS records. You’ll need to remove those separately if desired.

Next Steps

Your Relvy application is deployed and running! Next steps:
  1. Configure Integrations - Set up Slack and GitHub integrations
  2. Connect Data Sources - Add your observability platforms
  3. Set Up SSO (Optional) - Configure Okta or other SSO providers
Need Help? - Contact Relvy support at support@relvy.ai or join our community Slack for assistance.