flowchart TD
LB[Load Balancer<br/>Ingress Controller]
FE[Frontend Service<br/>LoadBalancer]
BE[Backend Service<br/>ClusterIP]
LB --> FE
LB --> BE
FE --> FBlue[Frontend Blue Pods]
FE --> FGreen[Frontend Green Pods]
BE --> BBlue[Backend Blue Pods]
BE --> BGreen[Backend Green Pods]
BE --> BCanary[Backend Canary Pods]
FBlue --> Routing
FGreen --> Routing
BBlue --> Routing
BGreen --> Routing
BCanary --> Routing
Routing[Blue-Green / Canary Routing]
Routing --> CS[ConfigMaps & Secrets]
CS --> MongoDB[MongoDB Service]
CS --> PostgreSQL[PostgreSQL Service]
CS --> Redis[Redis Service]
backend-deployment-blue.yaml: Blue version of backendbackend-deployment-green.yaml: Green version of backendfrontend-deployment-blue.yaml: Blue version of frontendfrontend-deployment-green.yaml: Green version of frontendbackend-deployment-stable.yaml: Stable production version (9 replicas)backend-deployment-canary.yaml: New canary version (1 replica)frontend-deployment-stable.yaml: Stable frontend (9 replicas)frontend-deployment-canary.yaml: Canary frontend (1 replica)backend-service-blue-green.yaml:
- backend-service: Main service (switches between blue/green)
- backend-service-blue: Direct access to blue version
- backend-service-green: Direct access to green version
backend-service-canary.yaml:
- backend-service-canary: Routes to both stable and canary
hpa.yamlpdb.yamlnetwork-policy.yamlingress.yamlapi.budgetmanagement.com → Backendapp.budgetmanagement.com → Frontendservicemonitor.yaml/metrics| Resource | Request | Limit |
|---|---|---|
| CPU | 250m | 500m |
| Memory | 256Mi | 512Mi |
| Resource | Request | Limit |
|---|---|---|
| CPU | 100m | 200m |
| Memory | 128Mi | 256Mi |
Assuming both blue and green are running during deployment:
| Component | Pods | CPU Request | Memory Request |
|---|---|---|---|
| Backend Blue | 3 | 750m | 768Mi |
| Backend Green | 3 | 750m | 768Mi |
| Frontend Blue | 3 | 300m | 384Mi |
| Frontend Green | 3 | 300m | 384Mi |
| Total | 12 | 2100m (2.1 cores) | 2304Mi (2.25GB) |
| Component | Pods | CPU Request | Memory Request |
|---|---|---|---|
| Backend Stable | 9 | 2250m | 2304Mi |
| Backend Canary | 1 | 250m | 256Mi |
| Frontend Stable | 9 | 900m | 1152Mi |
| Frontend Canary | 1 | 100m | 128Mi |
| Total | 20 | 3500m (3.5 cores) | 3840Mi (3.75GB) |
flowchart TD
K[kubernetes]
subgraph BlueGreen["Blue-Green Deployments"]
K --> BDB[backend-deployment-blue.yaml<br/>Backend blue version]
K --> BDG[backend-deployment-green.yaml<br/>Backend green version]
K --> FDB[frontend-deployment-blue.yaml<br/>Frontend blue version]
K --> FDG[frontend-deployment-green.yaml<br/>Frontend green version]
end
subgraph Canary["Canary Deployments"]
K --> BDC[backend-deployment-canary.yaml<br/>Backend canary version]
K --> BDS[backend-deployment-canary-stable.yaml<br/>Backend stable version]
K --> FDC[frontend-deployment-canary.yaml<br/>Frontend canary version]
K --> FDS[frontend-deployment-canary-stable.yaml<br/>Frontend stable version]
end
subgraph Services["Services"]
K --> BSBG[backend-service-blue-green.yaml<br/>Blue-green backend services]
K --> BSC[backend-service-canary.yaml<br/>Canary backend service]
K --> BSOrig[backend-service.yaml<br/>Original backend service - deprecated]
K --> FSBG[frontend-service-blue-green.yaml<br/>Blue-green frontend services]
K --> FSC[frontend-service-canary.yaml<br/>Canary frontend service]
K --> FSOrig[frontend-service.yaml<br/>Original frontend service - deprecated]
end
subgraph Platform["Shared Platform Resources"]
K --> CFG[configmap.yaml<br/>Application configuration]
K --> HPA[hpa.yaml<br/>Horizontal Pod Autoscalers]
K --> PDB[pdb.yaml<br/>Pod Disruption Budgets]
K --> NP[network-policy.yaml<br/>Network security policies]
K --> ING[ingress.yaml<br/>Ingress configuration]
K --> SM[servicemonitor.yaml<br/>Prometheus monitoring]
end
# Deploy blue version
kubectl apply -f kubernetes/backend-deployment-blue.yaml
kubectl apply -f kubernetes/frontend-deployment-blue.yaml
kubectl apply -f kubernetes/backend-service-blue-green.yaml
kubectl apply -f kubernetes/frontend-service-blue-green.yaml
# Apply supporting resources
kubectl apply -f kubernetes/configmap.yaml
kubectl apply -f kubernetes/hpa.yaml
kubectl apply -f kubernetes/pdb.yaml
kubectl apply -f kubernetes/network-policy.yaml
# Verify deployment
kubectl get deployments -n production
kubectl get pods -n production
kubectl get services -n production
# Deploy stable and canary versions
kubectl apply -f kubernetes/backend-deployment-canary-stable.yaml
kubectl apply -f kubernetes/backend-deployment-canary.yaml
kubectl apply -f kubernetes/frontend-deployment-canary-stable.yaml
kubectl apply -f kubernetes/frontend-deployment-canary.yaml
kubectl apply -f kubernetes/backend-service-canary.yaml
kubectl apply -f kubernetes/frontend-service-canary.yaml
# Apply supporting resources
kubectl apply -f kubernetes/configmap.yaml
kubectl apply -f kubernetes/hpa.yaml
kubectl apply -f kubernetes/pdb.yaml
kubectl apply -f kubernetes/network-policy.yaml
# Verify deployment
kubectl get deployments -n production
kubectl get pods -n production
kubectl get services -n production
GET /health
GET /ready
GET /
Applications expose Prometheus metrics at:
http://backend-service:3000/metricshttp://frontend-service:3001/metricsFor production:
kubectl get pods -n production -l app=backend
kubectl describe pod <pod-name> -n production
kubectl logs <pod-name> -n production
kubectl get endpoints backend-service -n production
kubectl describe service backend-service -n production
kubectl get hpa -n production
kubectl describe hpa backend-hpa-blue -n production
kubectl get networkpolicies -n production
kubectl describe networkpolicy backend-network-policy -n production
For detailed deployment procedures, see DEPLOYMENT_GUIDE.md