patoarvizu / freqtrade-helm-chart Goto Github PK
View Code? Open in Web Editor NEWHelm chart for running freqtrade on Kubernetes
License: Apache License 2.0
Helm chart for running freqtrade on Kubernetes
License: Apache License 2.0
Installing this chart on k8s v1.23.5 and despite the fact I can see it deployed on the helm list there is no pods/pvc/svc created. Any idea as to why that is?
Hi,
I'm attempting to execute your helm chart on kubernetes cluster v1.22.4.
There were a few issues with the Igress template "api-version" and the 'persistentVolumeClaim' declaration inside the deployment template.
I've made the following modifications to the deployment template, according to the official documentations:
{{- if .Values.bot.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: freqtrade
spec:
selector:
matchLabels:
app: freqtrade
template:
metadata:
labels:
app: freqtrade
spec:
containers:
- name: freqtrade
image: {{ .Values.image.base }}:{{ .Values.image.tag }}
command:
- freqtrade
args:
- trade
- --config
- /freqtrade/config/config.json
- --strategy
- {{ .Values.bot.strategy_name }}
- --db-url
- sqlite:////sqlite/tradesv3.sqlite
volumeMounts:
- mountPath: /freqtrade/config
name: config
- mountPath: /freqtrade/user_data/strategies
name: strategies
- mountPath: /sqlite
name: sqlite
ports:
- name: api
containerPort: 8080
volumes:
- name: config
configMap:
name: freqtrade-config
- name: strategies
configMap:
name: freqtrade-strategies
- name: sqlite
persistentVolumeClaim:
claimName: freqtrade-sqlite
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: freqtrade-sqlite
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.bot.pvc_size }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: freqtrade-pv
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /sqlite
{{- end }}
When I run the helm chart I can see that the PersistentVolume is created:
kubectl get pv freqtrade-pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
freqtrade-pv 1Gi RWO Retain Bound default/freqtrade-sqlite manual 5m10s
And the PersistentVolumeClaim is also created:
kubectl get pvc freqtrade-sqlite
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
freqtrade-sqlite Bound freqtrade-pv 1Gi RWO manual 6m24s
but the pod doesn't start to run with the error:
2021-11-23 04:31:48,036 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2021-11-23 04:31:48,036 - freqtrade.exchange.exchange - INFO - Using CCXT 1.61.24
2021-11-23 04:31:48,036 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 3100}
2021-11-23 04:31:48,040 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 3100}
2021-11-23 04:31:48,044 - freqtrade.exchange.exchange - INFO - Using Exchange "FTX"
2021-11-23 04:31:54,876 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Ftx'...
2021-11-23 04:31:54,888 - freqtrade.commands.trade_commands - ERROR - (sqlite3.OperationalError) unable to open database file
(Background on this error at: https://sqlalche.me/e/14/e3q8)
2021-11-23 04:31:54,888 - freqtrade.commands.trade_commands - ERROR - Fatal exception!
I've checked the worker node where the pod is deployed and it created a '/sqlite' folder with root ownership.
When I attempt to create an empty sqlite DB file, using the 'sqlite3 file.db "VACUUM;"' command and placing
it in the node's '/sqlite' folder I get an error:
freqtrade.commands.trade_commands - ERROR - (sqlite3.OperationalError) attempt to write a readonly database
I attempted to give ownership to the folder to the local user / ftuser I get the following error:
trade.commands.trade_commands - ERROR - (sqlite3.OperationalError) unable to open database file
What am I doing wrong?
Can you please assist?
I've followed these steps to run the helm charts in test environment:
# Install helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Install k3d
wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash
# Install helmfile
wget https://github.com/roboll/helmfile/releases/download/v0.142.0/helmfile_linux_amd64
chmod +x helmfile_linux_amd64
mv helmfile_linux_amd64 ~/.local/bin/helmfile
# Install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Create ad hoc config file
kubectl config view --raw > ~/.k3d/k3s-default-config
export KUBECONFIG=~/.k3d/k3s-default-config
# Open test folder
cd freqtrade-helm-chart/test-local/
# Launch deployment
make cluster
make sync
# Wait until all pods are Running or Completed.
kubectl -n freqtrade get pods
This is the result:
❯ kubectl -n freqtrade get pods
NAME READY STATUS RESTARTS AGE
results-reader-59cc94ddb6-lwg9k 1/1 Running 0 4m56s
freqtrade-789ccb4dc9-vwtb5 1/1 Running 0 4m56s
backtesting-1638873955-kqzcm 0/1 Init:0/1 0 4m56s
However, I cannot access http://localhost:8080 or http://0.0.0.0:8080.
Is there any extra step to expose the app that has not been specified? Thanks!
Hey Im a beginner to the topic of helm and have to make this program run on either AWS EKS or even an EC2 Instance is fine. My doubts are how to run the chart and how much CPU and RAM utilization does this consume.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.