mirror of https://github.com/ghostfolio/ghostfolio
8 changed files with 234 additions and 0 deletions
@ -0,0 +1,23 @@ |
|||
# Patterns to ignore when building packages. |
|||
# This supports shell glob matching, relative path matching, and |
|||
# negation (prefixed with !). Only one pattern per line. |
|||
.DS_Store |
|||
# Common VCS dirs |
|||
.git/ |
|||
.gitignore |
|||
.bzr/ |
|||
.bzrignore |
|||
.hg/ |
|||
.hgignore |
|||
.svn/ |
|||
# Common backup files |
|||
*.swp |
|||
*.bak |
|||
*.tmp |
|||
*.orig |
|||
*~ |
|||
# Various IDEs |
|||
.project |
|||
.idea/ |
|||
*.tmproj |
|||
.vscode/ |
@ -0,0 +1,33 @@ |
|||
apiVersion: v2 |
|||
name: ghostfolio-k8s |
|||
description: A Helm chart for deploying Ghostfolio on Kubernetes |
|||
|
|||
# This chart is designed for deploying Ghostfolio as an application on Kubernetes. |
|||
|
|||
# Chart Version: |
|||
# Increment this version number each time you make changes to the chart or its templates, |
|||
# including the app version. Follow Semantic Versioning (https://semver.org/). |
|||
version: 0.2.0 |
|||
|
|||
# Application Version: |
|||
# This is the version number of the application being deployed. Increment it for each |
|||
# change to the application. It doesn't follow Semantic Versioning and should reflect |
|||
# the actual version the application is using. Use quotes for compatibility. |
|||
appVersion: "1.0.0" |
|||
|
|||
# Dependencies: |
|||
# Specify dependencies for the chart. These are additional services or components |
|||
# required for Ghostfolio to run. Make sure to check and adjust version numbers |
|||
# accordingly. |
|||
dependencies: |
|||
- name: postgresql |
|||
version: 13.2.27 |
|||
repository: https://charts.bitnami.com/bitnami |
|||
condition: postgresql.enabled |
|||
# Additional comments can be added to explain why this dependency is required. |
|||
|
|||
- name: redis |
|||
version: 18.6.2 |
|||
repository: https://charts.bitnami.com/bitnami |
|||
condition: redis.enabled |
|||
# Provide helpful comments to clarify the purpose of each dependency. |
@ -0,0 +1,68 @@ |
|||
# Ghostfolio on Kubernetes with Helm - Developer's Quick Start Guide |
|||
|
|||
Welcome to the Ghostfolio Kubernetes deployment using Helm! This guide is designed to assist developers with limited Kubernetes (k8s) experience in effortlessly setting up Ghostfolio on any k8s platform. |
|||
|
|||
## Prerequisites |
|||
|
|||
Make sure you have the following dependencies installed: |
|||
|
|||
- [Kubernetes](https://kubernetes.io/) |
|||
- [Helm](https://helm.sh/) |
|||
|
|||
## Configuration |
|||
|
|||
1. Adjust Dependencies: |
|||
|
|||
Edit the `Charts.yaml` file to customize dependencies. |
|||
|
|||
2. Additional Configuration: |
|||
|
|||
Modify the `values.yaml` file to include extra configurations, like `API_KEY_COINGECKO_DEMO` or `API_KEY_COINGECKO_PRO`. |
|||
|
|||
## Deployment Steps |
|||
|
|||
1. Create a New Namespace: |
|||
|
|||
Run the following command to create a dedicated namespace for Ghostfolio: |
|||
|
|||
```bash |
|||
kubectl create namespace ghostfolio |
|||
``` |
|||
|
|||
2. Update Helm Dependencies: |
|||
|
|||
Keep your Helm dependencies up to date by running: |
|||
|
|||
```bash |
|||
helm dependency update |
|||
``` |
|||
|
|||
3. Deploy Ghostfolio with Helm: |
|||
|
|||
Execute the Helm installation command: |
|||
|
|||
```bash |
|||
helm install ghostfolio . --namespace ghostfolio |
|||
``` |
|||
|
|||
4. Verify Service Readiness: |
|||
|
|||
Check if the deployment is ready and the service is running: |
|||
|
|||
```bash |
|||
kubectl get svc,deploy --namespace ghostfolio |
|||
``` |
|||
|
|||
5. Access Ghostfolio in your Browser: |
|||
|
|||
Open your browser and navigate to: |
|||
|
|||
```plaintext |
|||
localhost:32222 |
|||
``` |
|||
|
|||
If using Minikube, expose the service to localhost with: |
|||
|
|||
```bash |
|||
minikube service ghostfolio-ghostfolio -n ghostfolio |
|||
``` |
@ -0,0 +1,45 @@ |
|||
apiVersion: apps/v1 |
|||
kind: Deployment |
|||
metadata: |
|||
name: {{ .Release.Name }}-ghostfolio |
|||
labels: |
|||
app: ghostfolio |
|||
spec: |
|||
replicas: {{ .Values.ghostfolio.replicaCount }} |
|||
selector: |
|||
matchLabels: |
|||
app: ghostfolio |
|||
template: |
|||
metadata: |
|||
labels: |
|||
app: ghostfolio |
|||
spec: |
|||
containers: |
|||
- name: ghostfolio |
|||
image: {{ .Values.ghostfolio.repository }}:{{ .Values.ghostfolio.tag }} |
|||
imagePullPolicy: {{ .Values.ghostfolio.pullPolicy }} |
|||
env: |
|||
{{- range .Values.ghostfolio.env }} |
|||
- name: {{ .name }} |
|||
value: {{ .value }} |
|||
{{- end }} |
|||
ports: |
|||
- containerPort: {{ .Values.ghostfolio.port }} |
|||
readinessProbe: |
|||
httpGet: |
|||
path: /api/v1/health |
|||
port: {{ .Values.ghostfolio.port }} |
|||
initialDelaySeconds: 5 |
|||
periodSeconds: 5 |
|||
timeoutSeconds: 5 |
|||
successThreshold: 1 |
|||
failureThreshold: 3 |
|||
livenessProbe: |
|||
httpGet: |
|||
path: /api/v1/health |
|||
port: {{ .Values.ghostfolio.port }} |
|||
initialDelaySeconds: 5 |
|||
periodSeconds: 5 |
|||
timeoutSeconds: 5 |
|||
successThreshold: 1 |
|||
failureThreshold: 3 |
@ -0,0 +1,13 @@ |
|||
apiVersion: v1 |
|||
kind: Service |
|||
metadata: |
|||
name: {{ .Release.Name }}-ghostfolio |
|||
spec: |
|||
type: {{ .Values.service.type }} |
|||
selector: |
|||
app: ghostfolio |
|||
ports: |
|||
- port: {{ .Values.ghostfolio.port }} |
|||
targetPort: {{ .Values.ghostfolio.port }} |
|||
nodePort: {{ .Values.service.port }} |
|||
protocol: TCP |
@ -0,0 +1,35 @@ |
|||
# Default values for ghostfolio-k8s. |
|||
# This is a YAML-formatted file. |
|||
# Declare variables to be passed into your templates. |
|||
|
|||
service: |
|||
type: NodePort |
|||
port: 32222 |
|||
|
|||
ghostfolio: |
|||
repository: ghostfolio/ghostfolio |
|||
tag: latest |
|||
replicaCount: 1 |
|||
port: 3333 |
|||
pullPolicy: IfNotPresent |
|||
env: |
|||
- name: DATABASE_URL |
|||
value: postgresql://user:ghostfolio@ghostfolio-postgresql/postgres?connect_timeout=300&sslmode=prefer |
|||
- name: ACCESS_TOKEN_SALT |
|||
value: ghostfolio-salty |
|||
- name: JWT_SECRET_KEY |
|||
value: ghostfolio-jwt |
|||
- name: REDIS_HOST |
|||
value: ghostfolio-redis-master |
|||
- name: REDIS_PASSWORD |
|||
value: ghostfolio |
|||
|
|||
postgresql: |
|||
auth: |
|||
username: user |
|||
password: ghostfolio |
|||
|
|||
redis: |
|||
architecture: standalone |
|||
auth: |
|||
password: ghostfolio |
Loading…
Reference in new issue