P23 — Skinny Packages: - Break conf→bib circular dependency with lazy guarded import - Extract aco.table.base → conf.table_base (shared foundation) - Add try/except ImportError guards on all cross-module imports - Define per-module optional-dependencies in pyproject.toml - Slim base deps to just pydantic; all heavy deps in optional groups - Add gen_config.py --check validation for module/dep sync - Add skinny-install CI matrix job (tests each extra in isolation) P24 — Tree Reorganization: - Move service configs to infra/ (traefik, coredns, grafana, etc.) - Consolidate Dockerfiles under infra/images/ - Move styles/ → assets/css/ + assets/icons/ + assets/nature.py - Update compose.yml, stack.toml, gen_config.py, all backend emitters - Update bootstrap scripts and install_certs.sh P25 — Cloud Provider Abstraction: - Add cloud/ directory with self-hosted, aws, gcp, azure stubs - Add cloud contexts (aws, gcp, azure) to stack.toml - Add conf/storage.py — get_filesystem() dispatches per context - Add aws, gcp, azure optional dependency groups - Document service mapping for each provider All 11955 tests pass. Zero functionality lost.
1.3 KiB
1.3 KiB
GCP Deployment
Service Mapping
| Component | GCP Service | Replaces |
|---|---|---|
| Object Storage | Cloud Storage (GCS) | RustFS |
| Database | Cloud SQL (PostgreSQL) | PostgreSQL container |
| Iceberg Catalog | BigQuery / Dataplex | Nessie / Polaris |
| Query Engine | BigQuery | Trino |
| Compute | Cloud Run / GKE | Docker Compose |
| Ingress | Cloud Load Balancing + DNS | Traefik + CoreDNS |
| CI/CD | Cloud Build / GitHub Actions | Gitea Actions |
| Observability | Cloud Monitoring + Trace | Grafana stack |
Context
[context.gcp]
db_backend = "iceberg"
storage_backend = "gcs"
catalog = "bigquery"
compute = "cloud-run"
Environment Variables
export STACK_CONTEXT=gcp
export GOOGLE_CLOUD_PROJECT=your-project-id
export GCS_BUCKET=your-lakehouse-bucket
# Workload Identity handles auth on Cloud Run
Required IAM Roles
roles/storage.objectAdminon lakehouse bucketroles/bigquery.dataEditorfor catalogroles/cloudsql.clientfor PostgreSQL
Terraform
See terraform/ for resource definitions (placeholder).