Skip to content

Shared multi-cloud SRDP deployment layer #38

Description

@yannick-vinkesteijn

Feature description

A shared, provider agnostic layer that installs the SRDP app and is reused across clouds, so each cloud only supplies its own infra values. Split out from #34.

Use case

The Scaleway blueprint bundled the app install under deploy/scaleway/deploy/srdp/. That ties the app deployment to one cloud and hardcodes infra values (S3 URL, Secret Manager region). We want to write the app install once and reuse it across providers instead of copying it per cloud.

Removed overlay for reference (pinned commit, before the strip): https://github.com/srdp-hub/srdp/tree/6571735939e43fbf8d44b97a9fb4d25283f6234f/deploy/scaleway/deploy/srdp

Proposed solution

Two nested layers:

deploy/
  docker/                Compose stack (local), already here
  kubernetes/
    srdp-chart/          the chart (the contract), already here
    clusters/<env>/      Flux delivery overlay: values + HelmRelease, cloud agnostic (new)
  scaleway/              Scaleway infra (Terraform), its Flux points at deploy/kubernetes/clusters/<env>
  azure/ (future)        different infra, same deploy/kubernetes/clusters

Convention: deploy/<runtime> is self-contained (like deploy/docker for Compose). The k8s app deployment lives under deploy/kubernetes next to the chart, not in a separate top-level folder. Cloud folders only provision infra and point Flux at it.

Contract that keeps the app layer cloud agnostic: each provider's Terraform writes its outputs (DB host, S3 URL, project, region, secret refs) into a ConfigMap. Flux injects them into the shared values with postBuild.substituteFrom. No cloud specific values live in the app layer.

Chart as contract: deployment values only set infra knobs (hosts, domains, tiers, buckets). Do not restate core config (db names, ports, ETL env vars) that already lives in the chart. Relates to the DuckLake env contract backlog item.

Tasks:

  • Create deploy/kubernetes/clusters/<env> shared overlay (base + per env)
  • Define the Terraform outputs to ConfigMap to substituteFrom handoff
  • Re-add the SRDP install with the review fixes: Dagster ["-m", "etl.definitions"], LAKEHOUSE_S3_URL via substitution not hardcoded, immutable image tags for prod
  • Point Scaleway's Flux at deploy/kubernetes/clusters/<env>
  • Document the layering as the blueprint convention in deploy/README.md

Alternatives considered

Keep the app install per provider: duplicated config that drifts. Restructure it inside #34: blows up that PR's scope and forces the handoff contract under merge pressure.

Component: Deploy: Kubernetes, Deploy: Other

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions