# Brand Master Helm Chart This Helm chart deploys the Brand Master e-commerce application on Kubernetes. ## Components - **Frontend**: React-based UI served by Nginx - **Backend**: FastAPI application - **Database**: PostgreSQL 16 - **Storage**: 15GB PVC for product images ## Prerequisites - Kubernetes 1.19+ - Helm 3.0+ - cert-manager (for TLS certificates) - Storage class configured (nfs-client by default) ## Installation ### 1. Update values.yaml Edit `values.yaml` and configure: - Image repositories (if using private registry) - Domain names for ingress - JWT secret key (IMPORTANT!) - Database credentials - Storage class name ### 2. Install the chart ```bash # Install in the my-apps namespace helm install brand-master ./brand-master-chart -n my-apps --create-namespace # Or with custom values helm install brand-master ./brand-master-chart -n my-apps \ --set backend.jwtSecretKey=your-super-secret-key \ --set postgres.password=secure-password ``` ### 3. Upgrade the chart ```bash helm upgrade brand-master ./brand-master-chart -n my-apps ``` ### 4. Uninstall ```bash helm uninstall brand-master -n my-apps ``` ## Configuration ### Key Configuration Options | Parameter | Description | Default | |-----------|-------------|---------| | `backend.image.repository` | Backend Docker image | `harbor.dvirlabs.com/my-apps/brand-master-backend` | | `backend.image.tag` | Backend image tag | `latest` | | `backend.jwtSecretKey` | JWT secret for authentication | `your-secret-key-change-this-in-production` | | `backend.persistence.enabled` | Enable persistent storage for images | `true` | | `backend.persistence.size` | Size of uploads PVC | `15Gi` | | `frontend.image.repository` | Frontend Docker image | `harbor.dvirlabs.com/my-apps/brand-master-frontend` | | `frontend.image.tag` | Frontend image tag | `latest` | | `postgres.user` | PostgreSQL username | `brand_master_user` | | `postgres.password` | PostgreSQL password | `brand_master_password` | | `postgres.database` | PostgreSQL database name | `brand_master_db` | | `postgres.persistence.size` | Size of database PVC | `10Gi` | ## Building Docker Images ### Backend ```bash cd backend docker build -t harbor.dvirlabs.com/my-apps/brand-master-backend:latest . docker push harbor.dvirlabs.com/my-apps/brand-master-backend:latest ``` ### Frontend ```bash cd frontend docker build -t harbor.dvirlabs.com/my-apps/brand-master-frontend:latest \ --build-arg VITE_API_URL=https://api-brand-master.dvirlabs.com . docker push harbor.dvirlabs.com/my-apps/brand-master-frontend:latest ``` ## Storage The chart creates two PVCs: 1. **Database PVC**: 10GB for PostgreSQL data 2. **Uploads PVC**: 15GB for product images at `/app/uploads` Both use the `nfs-client` storage class by default. Update this in `values.yaml` if needed. ## Ingress The chart creates two ingress resources: - **Frontend**: `brand-master.dvirlabs.com` - **Backend API**: `api-brand-master.dvirlabs.com` TLS is enabled by default using Let's Encrypt via cert-manager. ## Troubleshooting ### Check pod status ```bash kubectl get pods -n my-apps ``` ### View logs ```bash # 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 services locally ```bash # Frontend kubectl port-forward -n my-apps svc/brand-master-frontend 8080:80 # Backend kubectl port-forward -n my-apps svc/brand-master-backend 8000:8000 # Database kubectl port-forward -n my-apps svc/brand-master-db 5432:5432 ``` ### Check PVC status ```bash kubectl get pvc -n my-apps ``` ## Security Notes 1. **Change the JWT secret** in production 2. **Update database credentials** 3. **Use strong passwords** 4. **Configure proper CORS settings** 5. **Review and adjust resource limits** 6. **Enable network policies** if needed 7. **Use image pull secrets** for private registries ## Support For issues or questions, refer to the main repository documentation.