jvcloud

JVCloud - Helm Chart for JIVAS Deployments

Helm Version License GitHub Release

A Helm chart for easily deploying JIVAS application instances and related services in Kubernetes clusters. This chart provides complete configuration for JIVAS core application, MongoDB database, and optional services like Typesense and WPPConnect.

📋 Features

📝 Prerequisites

Before installing this chart, ensure you have:

  1. Kubernetes Cluster: A working Kubernetes cluster (v1.19+)
  2. Helm: Helm 3 installed on your workstation
  3. Domain Name: A domain name for your JIVAS instances
  4. AWS Resources (if using AWS):
    • ACM Certificate for HTTPS
    • AWS Load Balancer Controller installed in your cluster
    • IAM permissions for ALB creation
  5. Storage Classes: Storage classes available in your cluster (default: gp2)

🚀 Installation

Quick Start

# Add the TrueSelph Helm repository
helm repo add trueselph https://trueselph.github.io/jvcloud
helm repo update

# Install the chart with a release name and custom domain
helm install my-jivas trueselph/jvcloud \
  --namespace jivas-demo \
  --create-namespace \
  --set domain.name=example.com \
  --set aws.certificateArn=arn:aws:acm:region:account:certificate/id

Installation from Source

Clone the repository and install directly:

git clone https://github.com/TrueSelph/jvcloud.git
cd jvcloud

helm install my-jivas ./jvcloud/helm/jvcloud \
  --namespace jivas-demo \
  --create-namespace \
  --set domain.name=example.com \
  --set aws.certificateArn=arn:aws:acm:region:account:certificate/id

⚙️ Configuration

Core Settings

Parameter Description Default Required
domain.name Domain for your JIVAS deployment "" Yes
image.repository JIVAS Docker image repository trueselph/jivas No
image.tag JIVAS Docker image tag `` No
image.pullPolicy Kubernetes image pull policy IfNotPresent No
jivas.version JIVAS version to deploy latest No

MongoDB Configuration

Parameter Description Default Required
mongodb.databaseName Name of the MongoDB database jivas No
mongodb.replicas Number of MongoDB replicas 2 No
mongodb.storage MongoDB storage size 10Gi No
mongodb.storageClassName Storage class for MongoDB gp2 No

Redis Configuration

Parameter Description Default Required
redis.user Redis username default No
redis.port Redis port 6379 No
redis.password Password for Redis (random if empty) "" No

JIVAS Application Settings

Parameter Description Default Required
jivas.environment Environment for JIVAS (production/development) production No
jivas.config.actionsRootPath Path for actions actions No
jivas.config.descriptorRootPath Path for descriptors .jvdata No
jivas.config.filesRootPath Path for files .files No
jivas.config.fileInterface File storage interface (local or s3) local No
jivas.secrets.password Password for JIVAS (random if empty) "" No
jivas.secrets.webhookSecretKey Secret key for webhooks (random if empty) "" No
jivas.secrets.tokenSecret Secret for JWT tokens (random if empty) "" No

S3 Configuration (When fileInterface = “s3”)

Parameter Description Default Required
jivas.config.s3.bucketName S3 bucket name "" When using S3
jivas.config.s3.regionName S3 bucket region "" When using S3
jivas.config.s3.accessKeyId AWS access key ID "" When using S3
jivas.config.s3.secretAccessKey AWS secret access key "" When using S3

AWS Settings

Parameter Description Default Required
aws.certificateArn ARN of the AWS ACM certificate "" Yes for HTTPS
aws.alb.group.enabled Enable ALB grouping true No
aws.alb.group.nameFormat ALB group name format jivas-services No
aws.dns.enabled Enable external-dns integration true No
aws.dns.hostnameFormat Format for hostname annotation . No

Ingress Configuration

Parameter Description Default Required
ingress.enabled Enable ingress resources true No
ingress.className Ingress class name alb No
ingress.services.jivas.enabled Enable main JIVAS ingress true No
ingress.services.jivas.hostFormat Host format for JIVAS API -jivas. No
ingress.services.jvclient.enabled Enable JVClient ingress true No
ingress.services.jvclient.hostFormat Host format for JVClient -jvclient. No
ingress.services.jvstudio.enabled Enable JVStudio ingress true No
ingress.services.jvstudio.hostFormat Host format for JVStudio -jvstudio. No

Resource Requirements

Parameter Description Default Required
jivas.resources.requests.memory Memory request for JIVAS 512Mi No
jivas.resources.requests.cpu CPU request for JIVAS 1000m No
jivas.resources.limits.memory Memory limit for JIVAS 1Gi No
jivas.resources.limits.cpu CPU limit for JIVAS 1500m No

Optional Services

Typesense

Parameter Description Default Required
optionalServices.typesense.enabled Enable Typesense service false No
optionalServices.typesense.port Typesense port 8108 No
optionalServices.typesense.protocol Typesense protocol http No
optionalServices.typesense.connectionTimeoutSeconds Connection timeout 5 No
optionalServices.typesense.storage Storage size for Typesense 5Gi No
optionalServices.typesense.storageClassName Storage class for Typesense gp2 No

WPPConnect

Parameter Description Default Required
optionalServices.wppconnect.enabled Enable WPPConnect service false No
optionalServices.wppconnect.image WPPConnect image registry.v75inc.dev/wppconnect/wppconnect_prod:latest No
optionalServices.wppconnect.storage.tokens Storage size for tokens 0.2Gi No
optionalServices.wppconnect.storage.userData Storage size for user data 1Gi No
optionalServices.wppconnect.storageClassName Storage class for WPPConnect gp2 No
optionalServices.wppconnect.ingress.enabled Enable WPPConnect ingress true No
optionalServices.wppconnect.ingress.hostFormat Host format for WPPConnect -wppconnect. No
optionalServices.wppconnect.secretKey Secret key for WPPConnect (random if empty) "" No

Autoscaling Configuration

Parameter Description Default Required
autoscaling.enabled Enable autoscaling true No
autoscaling.minReplicas Minimum number of replicas 1 No
autoscaling.maxReplicas Maximum number of replicas 5 No
autoscaling.targetCPUUtilizationPercentage Target CPU utilization 70 No
autoscaling.targetMemoryUtilizationPercentage Target memory utilization Not set No

🔍 Usage Examples

Basic Installation

helm install my-jivas trueselph/jvcloud \
  --namespace jivas-demo \
  --create-namespace \
  --set domain.name=example.com \
  --set aws.certificateArn=arn:aws:acm:region:account:certificate/id

Enabling Optional Services

helm install my-jivas trueselph/jvcloud \
  --namespace jivas-demo \
  --create-namespace \
  --set domain.name=example.com \
  --set aws.certificateArn=arn:aws:acm:region:account:certificate/id \
  --set optionalServices.typesense.enabled=true \
  --set optionalServices.wppconnect.enabled=true

Using S3 for File Storage

helm install my-jivas trueselph/jvcloud \
  --namespace jivas-demo \
  --create-namespace \
  --set domain.name=example.com \
  --set aws.certificateArn=arn:aws:acm:region:account:certificate/id \
  --set jivas.config.fileInterface=s3 \
  --set jivas.config.s3.bucketName=my-jivas-bucket \
  --set jivas.config.s3.regionName=us-east-1 \
  --set jivas.config.s3.accessKeyId=AKIAXXXXXXXXXXXXXXXX \
  --set jivas.config.s3.secretAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Using a Values File

Create a custom-values.yaml file:

domain:
  name: example.com

aws:
  certificateArn: arn:aws:acm:region:account:certificate/id

optionalServices:
  typesense:
    enabled: true

Then install with:

helm install my-jivas trueselph/jvcloud \
  --namespace jivas-demo \
  --create-namespace \
  -f custom-values.yaml

🔰 Contributing

Contributing Guidelines 1. **Fork the Repository**: Start by forking the project repository to your GitHub account. 2. **Clone Locally**: Clone the forked repository to your local machine using a git client. ```sh git clone https://github.com/TrueSelph/jvcloud ``` 3. **Create a New Branch**: Always work on a new branch, giving it a descriptive name. ```sh git checkout -b new-feature-x ``` 4. **Make Your Changes**: Develop and test your changes locally. 5. **Commit Your Changes**: Commit with a clear message describing your updates. ```sh git commit -m 'Implemented new feature x.' ``` 6. **Push to GitHub**: Push the changes to your forked repository. ```sh git push origin new-feature-x ``` 7. **Submit a Pull Request**: Create a PR against the original project repository. Clearly describe the changes and their motivations. 8. **Review**: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph

📜 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.