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\" }"
|