# Assessment: Cloud Run to Container Apps

## Checklist

### 1. Service Configuration
- **CPU/Memory**: Cloud Run (1–4 vCPU, 128 MiB–32 GiB) → Container Apps (0.25–4 vCPU, 0.5–8 Gi)
- **Images**: Registry location (GCR or Artifact Registry), image size, base image
- **Port**: Exposed port (Cloud Run default 8080)
- **Environment Variables**: Static values, secret references, service URLs

### 2. Request Handling
- **Concurrency**: Per instance (default 80, max 1000) → Container Apps (1–300)
- **Min/Max Instances**: 0–1000 → Container Apps 0–300 per revision
- **Timeout**: Max 60 min → Container Apps max 30 min (1800s)
- **CPU Allocation**: Request-based vs always → Container Apps always allocated
- **HTTP/2, WebSockets, gRPC**: Document if used

### 3. Networking
- **Ingress**: Public, internal (VPC), or internal + load balancing
- **Custom Domains**: List domains and SSL certificates
- **VPC Connector**: Region, IP range, connected VPC
- **Dependencies**: Cloud SQL, Firestore, Cloud Storage, Pub/Sub, Redis, external APIs

### 4. IAM & Security
- **Service Account**: Default or custom
- **IAM Roles**: Storage, Firestore, Pub/Sub, Secret Manager, Cloud SQL permissions
- Task role policies → Managed Identity + Azure RBAC
- Secret Manager access → Key Vault RBAC (recommended) or access policies for vaults still using access-policy mode

### 5. Observability
- **Logging**: Destinations, structured logs (JSON)
- **Monitoring**: Request metrics, CPU/memory, instance count
- **Tracing**: Cloud Trace → Application Insights

### 6. Event-Driven
- **Eventarc**: Pub/Sub triggers, Cloud Storage triggers
- **Cloud Scheduler**: Schedule (cron), target endpoint

### 7. Cost Analysis
- Cloud Run: Request charges, CPU/memory time
- Data transfer egress charges
- Container Registry storage

## Resource Mapping

| Cloud Run Config | Container Apps Equivalent |
|------------------|--------------------------|
| `--concurrency 80` | `--scale-rule-http-concurrency 80` |
| `--min-instances 0` | `--min-replicas 0` |
| `--max-instances 10` | `--max-replicas 10` |
| `--cpu 1` | `--cpu 1.0` |
| `--memory 512Mi` | `--memory 1Gi` |
| `--port 8080` | `--target-port 8080` |
| `--timeout 300` | ingress timeout 300s |

## Complexity Rating

- **Low**: Single container, public ingress, standard env vars, no VPC
- **Medium**: Internal ingress, Pub/Sub triggers, custom service account, Cloud Scheduler
- **High**: Complex traffic management, VPC networking, multiple Eventarc triggers, long-running requests (>30 min)
