workspace/projects/gamilit/apps/devops/deployment/README.md
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- Configure workspace Git repository with comprehensive .gitignore
- Add Odoo as submodule for ERP reference code
- Include documentation: SETUP.md, GIT-STRUCTURE.md
- Add gitignore templates for projects (backend, frontend, database)
- Structure supports independent repos per project/subproject level

Workspace includes:
- core/ - Reusable patterns, modules, orchestration system
- projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.)
- knowledge-base/ - Reference code and patterns (includes Odoo submodule)
- devtools/ - Development tools and templates
- customers/ - Client implementations template

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 10:44:23 -06:00

135 lines
3.2 KiB
Markdown

# GAMILIT Deployment Scripts
## Overview
This directory contains automated deployment scripts for the GAMILIT Platform.
## Scripts
### 1. deploy-k8s.sh
Automated deployment to Kubernetes cluster.
**Usage:**
```bash
./deploy-k8s.sh [staging|production]
```
**Prerequisites:**
- kubectl installed and configured
- Access to Kubernetes cluster
- Secrets already created in target namespace
**What it does:**
1. Checks prerequisites (kubectl, cluster connection)
2. Creates/verifies namespace
3. Verifies secrets exist
4. Deploys PostgreSQL StatefulSet
5. Deploys backend Deployment, Service, HPA, Ingress
6. Deploys frontend Deployment, Service, Ingress
7. Runs database migrations
8. Performs health checks
9. Shows deployment status
**Example:**
```bash
# Deploy to staging
./deploy-k8s.sh staging
# Deploy to production
./deploy-k8s.sh production
```
## Creating Secrets
Before running deployments, create the required secrets:
```bash
# Database secret
kubectl create secret generic gamilit-db-secret \
--from-literal=username='gamilit_user' \
--from-literal=password='STRONG_PASSWORD' \
--namespace=gamilit-production
# JWT secret
kubectl create secret generic gamilit-jwt-secret \
--from-literal=jwt_secret='$(openssl rand -base64 32)' \
--namespace=gamilit-production
# Redis secret (optional)
kubectl create secret generic gamilit-redis-secret \
--from-literal=redis_url='redis://:password@gamilit-redis:6379' \
--namespace=gamilit-production
```
## Manual Deployment
If you prefer manual deployment:
```bash
# Create namespace
kubectl create namespace gamilit-production
# Deploy in order
kubectl apply -f ../k8s/backend/deployment.yaml -n gamilit-production
kubectl apply -f ../k8s/backend/service.yaml -n gamilit-production
kubectl apply -f ../k8s/backend/hpa.yaml -n gamilit-production
kubectl apply -f ../k8s/backend/ingress.yaml -n gamilit-production
# Check status
kubectl get all -n gamilit-production
kubectl rollout status deployment/gamilit-backend -n gamilit-production
```
## Troubleshooting
### Pods not starting
```bash
# Check pod status
kubectl get pods -n gamilit-production
# Check pod logs
kubectl logs -f deployment/gamilit-backend -n gamilit-production
# Describe pod for events
kubectl describe pod <pod-name> -n gamilit-production
```
### Health checks failing
```bash
# Port forward to backend
kubectl port-forward deployment/gamilit-backend 3006:3006 -n gamilit-production
# Test health endpoint
curl http://localhost:3006/api/health
```
### Database connection errors
```bash
# Check database pod
kubectl get pods -l component=database -n gamilit-production
# Check database logs
kubectl logs statefulset/gamilit-postgres -n gamilit-production
# Test connection from backend pod
kubectl exec -it deployment/gamilit-backend -n gamilit-production -- \
psql -h gamilit-postgres -U gamilit_user -d gamilit_platform
```
## Rollback
```bash
# Rollback to previous deployment
kubectl rollout undo deployment/gamilit-backend -n gamilit-production
# Rollback to specific revision
kubectl rollout undo deployment/gamilit-backend --to-revision=2 -n gamilit-production
# Check rollout history
kubectl rollout history deployment/gamilit-backend -n gamilit-production
```