Invy Helm Chart
This Helm chart deploys the Invy wedding guest list management application on Kubernetes.
Prerequisites
- Kubernetes 1.19+
- Helm 3.0+
- Persistent Volume provisioner support in the underlying infrastructure (for PostgreSQL)
- Ingress controller (Traefik recommended)
- Cert-manager (for TLS certificates)
Components
This chart deploys the following components:
- Frontend: React + Vite application (Nginx)
- Backend: FastAPI application
- Database: PostgreSQL 16
Installation
Add the chart repository (if applicable)
helm repo add invy https://your-helm-repo.com
helm repo update
Install the chart
# Install with default values
helm install invy ./invy-chart -n my-apps --create-namespace
# Install with custom values
helm install invy ./invy-chart -n my-apps --create-namespace -f custom-values.yaml
Configuration
The following table lists the configurable parameters and their default values.
Global Parameters
| Parameter | Description | Default |
|---|---|---|
global.namespace |
Namespace for all resources | my-apps |
global.imagePullSecrets |
Image pull secrets | [] |
Backend Parameters
| Parameter | Description | Default |
|---|---|---|
backend.image.repository |
Backend image repository | harbor.dvirlabs.com/my-apps/invy-backend |
backend.image.tag |
Backend image tag | latest |
backend.replicaCount |
Number of backend replicas | 1 |
backend.service.port |
Backend service port | 8000 |
backend.ingress.enabled |
Enable backend ingress | true |
backend.ingress.hosts[0].host |
Backend ingress hostname | api-invy.dvirlabs.com |
Frontend Parameters
| Parameter | Description | Default |
|---|---|---|
frontend.image.repository |
Frontend image repository | harbor.dvirlabs.com/my-apps/invy-frontend |
frontend.image.tag |
Frontend image tag | latest |
frontend.replicaCount |
Number of frontend replicas | 1 |
frontend.service.port |
Frontend service port | 80 |
frontend.env.VITE_API_URL |
Backend API URL | https://api-invy.dvirlabs.com |
frontend.ingress.enabled |
Enable frontend ingress | true |
frontend.ingress.hosts[0].host |
Frontend ingress hostname | invy.dvirlabs.com |
PostgreSQL Parameters
| Parameter | Description | Default |
|---|---|---|
postgres.user |
PostgreSQL user | invy_user |
postgres.password |
PostgreSQL password | invy_password |
postgres.database |
PostgreSQL database name | invy_db |
postgres.persistence.enabled |
Enable persistence | true |
postgres.persistence.size |
Persistent volume size | 10Gi |
postgres.persistence.storageClass |
Storage class | nfs-client |
Building and Pushing Images
Backend Image
cd backend
docker build -t harbor.dvirlabs.com/my-apps/invy-backend:latest .
docker push harbor.dvirlabs.com/my-apps/invy-backend:latest
Frontend Image
cd frontend
docker build --build-arg VITE_API_URL=https://api-invy.dvirlabs.com -t harbor.dvirlabs.com/my-apps/invy-frontend:latest .
docker push harbor.dvirlabs.com/my-apps/invy-frontend:latest
Upgrading
helm upgrade invy ./invy-chart -n my-apps
Uninstalling
helm uninstall invy -n my-apps
Customization
Create a custom-values.yaml file to override default values:
backend:
image:
tag: "v1.0.0"
ingress:
hosts:
- host: api.mycompany.com
paths:
- path: /
pathType: Prefix
frontend:
image:
tag: "v1.0.0"
env:
VITE_API_URL: "https://api.mycompany.com"
ingress:
hosts:
- host: invy.mycompany.com
paths:
- path: /
pathType: Prefix
postgres:
password: "your-secure-password"
persistence:
storageClass: "your-storage-class"
Then install with:
helm install invy ./invy-chart -n my-apps -f custom-values.yaml
Troubleshooting
Check pod status
kubectl get pods -n my-apps
View pod logs
# Backend logs
kubectl logs -n my-apps -l app.kubernetes.io/component=backend
# Frontend logs
kubectl logs -n my-apps -l app.kubernetes.io/component=frontend
# Database logs
kubectl logs -n my-apps -l app.kubernetes.io/component=database
Access the database
kubectl exec -it -n my-apps invy-db-0 -- psql -U invy_user -d invy_db
Support
For issues and feature requests, please open an issue in the repository.