summaryrefslogtreecommitdiff
path: root/f3s/tracing-demo/Justfile
blob: 79d2cddf2095636a134ba9b8236fba33f36328a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Tracing Demo Application deployment automation
# Three-tier Python application demonstrating distributed tracing

NAMESPACE := "services"
RELEASE_NAME := "tracing-demo"
CHART_PATH := "./helm-chart"

# Build all Docker images (use docker-image-Justfile for build/push to registry)
build:
    just -f docker-image-Justfile build

# Push images to private registry
push:
    just -f docker-image-Justfile push

# Build and push images
build-push: build push

# Trigger ArgoCD sync
sync:
    @echo "Triggering ArgoCD sync..."
    @kubectl annotate application {{RELEASE_NAME}} -n cicd argocd.argoproj.io/refresh=normal --overwrite
    @sleep 2
    @kubectl get application {{RELEASE_NAME}} -n cicd -o jsonpath='Sync: {.status.sync.status}, Health: {.status.health.status}' && echo ""

# Show ArgoCD application details
argocd-status:
    argocd app get {{RELEASE_NAME}} --core

# Check deployment status
status:
    @echo "=== Pods ==="
    @kubectl get pods -n {{NAMESPACE}} | grep tracing-demo
    @echo ""
    @echo "=== Services ==="
    @kubectl get svc -n {{NAMESPACE}} | grep -E '(frontend|middleware|backend)-service'
    @echo ""
    @echo "=== Ingress ==="
    @kubectl get ingress -n {{NAMESPACE}} tracing-demo-ingress
    @echo ""
    @echo "=== ArgoCD Status ==="
    @kubectl get application {{RELEASE_NAME}} -n cicd -o jsonpath='Sync: {.status.sync.status}, Health: {.status.health.status}' 2>/dev/null && echo "" || echo "Not found"

# Restart all pods
restart:
    @echo "Restarting frontend..."
    @kubectl rollout restart -n {{NAMESPACE}} deployment/tracing-demo-frontend
    @echo "Restarting middleware..."
    @kubectl rollout restart -n {{NAMESPACE}} deployment/tracing-demo-middleware
    @echo "Restarting backend..."
    @kubectl rollout restart -n {{NAMESPACE}} deployment/tracing-demo-backend

# View logs from all services
logs:
    @echo "=== Frontend logs ==="
    kubectl logs -n {{NAMESPACE}} -l app=tracing-demo-frontend --tail=20
    @echo ""
    @echo "=== Middleware logs ==="
    kubectl logs -n {{NAMESPACE}} -l app=tracing-demo-middleware --tail=20
    @echo ""
    @echo "=== Backend logs ==="
    kubectl logs -n {{NAMESPACE}} -l app=tracing-demo-backend --tail=20

# Follow logs from frontend
logs-frontend:
    kubectl logs -n {{NAMESPACE}} -l app=tracing-demo-frontend -f

# Follow logs from middleware
logs-middleware:
    kubectl logs -n {{NAMESPACE}} -l app=tracing-demo-middleware -f

# Follow logs from backend
logs-backend:
    kubectl logs -n {{NAMESPACE}} -l app=tracing-demo-backend -f

# Test the application
test:
    @echo "Testing frontend health endpoint..."
    curl http://tracing-demo.f3s.buetow.org/
    @echo ""
    @echo "Testing API process endpoint..."
    curl http://tracing-demo.f3s.buetow.org/api/process

# Load test - generate multiple traces
load-test:
    @echo "Generating 50 requests with 0.5s delay..."
    @for i in {1..50}; do \
        curl -s http://tracing-demo.f3s.buetow.org/api/process >/dev/null && echo "Request $$i complete"; \
        sleep 0.5; \
    done
    @echo "Load test complete!"

# Port forward to services for local testing
port-forward-frontend:
    kubectl port-forward -n {{NAMESPACE}} svc/frontend-service 5000:5000

port-forward-middleware:
    kubectl port-forward -n {{NAMESPACE}} svc/middleware-service 5001:5001

port-forward-backend:
    kubectl port-forward -n {{NAMESPACE}} svc/backend-service 5002:5002

# Check if traces are being generated
check-traces:
    @echo "Check Grafana Tempo for traces with:"
    @echo "  { resource.service.namespace = \"tracing-demo\" }"