Skip to content

TrianaLab/jesse-chart

Repository files navigation

jesse

A Helm chart for Jesse trade bot.

Version: 0.0.11 Type: application AppVersion: 1.4.11 DOI Artifact Hub

Index


Usage

This document provides a comprehensive guide for deploying the Jesse trade bot using the Helm chart provided in this repository.

Prerequisites

  1. Kubernetes cluster: you can use a local cluster like kind for testing purposes.

  2. Helm installed.

Deployment

Step 1 (optional): create a Kind cluster

For testing purposes, you can create a kind cluster:

kind create cluster --name jesse-cluster

Step 2: configure Jesse

Pull the values file:

helm show values oci://ghcr.io/trianalab/jesse-chart/jesse --version 0.0.11 > values.yaml

Add the LICENSE_API_TOKEN within the config field in the values.yaml file according to Jesse's documentation.

Step 3: Install the Helm chart

helm install jesse oci://ghcr.io/trianalab/jesse-chart/jesse --version 0.0.11 --namespace jesse-namespace --create-namespace -f values.yaml

Step 4: Verify the deployment

Wait for the deployment to be ready (it can take up to a minute):

kubectl wait --for=condition=available --namespace jesse-namespace deployment/jesse --timeout=300s

Ensure all the pods, services, and ingress resources are created and running as expected:

kubectl get all --namespace jesse-namespace

Step 5: Expose the service

The service is exposed as a ClusterIP by default. To access it externally, you can use port forwarding or an ingress resource. The Helm chart's NOTES.txt provides details on accessing the service.

Cleanup

To remove the deployment, run the following commands:

helm uninstall jesse --namespace jesse-namespace
kubectl delete namespace jesse-namespace

Additional information

  • For troubleshooting or additional configuration, consult the NOTES.txt generated by the Helm chart or refer to the official Jesse documentation.
  • Advanced users can modify the values.yaml file to fit specific deployment needs.

Configuration

Requirements

Repository Name Version
https://charts.bitnami.com/bitnami postgresql 16.3.4
https://charts.bitnami.com/bitnami redis 20.6.1

Values

Key Type Default Description
affinity object {} affinity expands nodeSelectors, more information can be found here.
autoscaling.enabled bool false autoscaling.enabled is for enabling horizontal autoscaling, more information can be found here
autoscaling.maxReplicas int 10 autoscaling.maxReplicas sets the maximum number of replicas.
autoscaling.minReplicas int 1 autoscaling.minReplicas sets the minimum number of replicas.
autoscaling.targetCPUUtilizationPercentage int 80 autoscaling.targetCPUUtilizationPercentage sets CPU threshold that triggers the autoscaling.
config string "PASSWORD=test\nAPP_PORT=9000\n\nPOSTGRES_HOST=postgresql\nPOSTGRES_NAME=jesse_db\nPOSTGRES_PORT=5432\nPOSTGRES_USERNAME=jesse_user\nPOSTGRES_PASSWORD=pg-password\n\nREDIS_HOST=redis-master\nREDIS_PORT=6379\nREDIS_PASSWORD=redis-password\n\nLICENSE_API_TOKEN=<TOKEN>" config contains all the configuration variables for Jesse, more information can be found here.
fullnameOverride string "" fullnameOverride is to fully override the chart name.
image.command string "" image.command overrides the default command to run in the jesse container.
image.pullPolicy string "IfNotPresent" image.pullPolicy sets the pull policy for images.
image.repository string "salehmir/jesse" image.repository sets the container image more information can be found here.
image.tag string "" image.tag overrides the image tag whose default is the chart appVersion.
imagePullSecrets list [] imagePullSecrets is for the secretes for pulling an image from a private repository more information can be found here.
ingress.annotations object {} ingress.annotations is for setting Kubernetes Annotations to the Ingress, more information can be found here.
ingress.className string "" ingress.className sets the ingress class, more information can be found here.
ingress.enabled bool false ingress.enabled is for setting up the ingress, more information can be found here.
ingress.hosts list [] ingress.hosts is a list of ingress hosts.
ingress.tls list [] ingress.tls is the secret holding the TLS key and secret, more information can be found here.
nameOverride string "" nameOverride is to override the chart name.
nodeSelector object {} nodeSelector constrains a pod to be scheduled on a particular node, more information can be found here.
podAnnotations object {} podAnnotations is for setting Kubernetes Annotations to a Pod, more information can be found here.
podLabels object {} podLabels is for setting Kubernetes Labels to a Pod, more information can be found here.
podSecurityContext object {} podSecurityContext defines privilege and access control settings for a pod, more information can be found here.
postgresql.auth.database string "jesse_db" postgresql.database is the database used by Jesse.
postgresql.auth.password string "pg-password" postgresql.password is the database password used by Jesse.
postgresql.auth.username string "jesse_user" postgresql.username is the database username used by Jesse.
redis.auth.password string "redis-password" redis.auth.password is the redis password used by Jesse.
replicaCount int 1 replicaCount will set the replicaset count more information can be found here.
resources object {} resources sets the amount of resources the container needs, more information can be found here.
securityContext object {} securityContext defines privilege and access control settings for a container, more information can be found here.
service.annotations object {} service.annotations is for setting Kubernetes Annotations to a Service, more information can be found here.
service.nodePort string "nil" service.nodePort sets a specific node port when service.type is set to NodePort, more information can be found here.
service.port int 9000 service.port sets the port, more information can be found here.
service.type string "ClusterIP" service.type sets the service type, more information can be found here.
serviceAccount.annotations object {} serviceAccount.annotations to add to the service account.
serviceAccount.automount bool true serviceAccount.automount automatically mounts ServiceAccount's API credentials.
serviceAccount.create bool true serviceAccount.create specifies whether a service account should be created, more information can be found here.
serviceAccount.name string "" serviceAccount.name is the name of the service account to use. If not set and create is true, a name is generated using the fullname template.
tolerations list [] tolerations allow the scheduler to schedule pods with matching taints, more information can be found here.
volumeMounts list [] volumeMounts is a list of additional volumeMounts on the output Deployment definition.
volumes list [] volumes is a list of additional volumes on the output Deployment definition.

License

This repository is licensed under the GNU Affero General Public License v3.0 (AGPLv3).

By using this project, you agree to comply with the terms of the AGPLv3 license. See the LICENSE file for details.

This project also includes third-party dependencies that are subject to their respective licenses. See the NOTICES.md file for attribution.


Support

If you encounter any issues, feel free to open an issue.


Contributions

Contributions are welcome! Please follow these steps:

  1. Fork this repository.
  2. Make your changes.
  3. Submit a pull request with a detailed description of your changes.

Acknowledgments

This project builds upon the incredible work of:

  • The Jesse team.
  • Bitnami for their Redis and PostgreSQL Helm charts.