Skip to content

Scaffold react-platform — GitOps multi-tenant frontend#3

Open
MWest2020 wants to merge 5 commits into
mainfrom
development
Open

Scaffold react-platform — GitOps multi-tenant frontend#3
MWest2020 wants to merge 5 commits into
mainfrom
development

Conversation

@MWest2020

Copy link
Copy Markdown
Member

Promotes the canary-validated react-platform scaffold from development to main. Argo refs nog op feature branch — aparte follow-up PR swapt naar HEAD.

MWest2020 and others added 5 commits May 1, 2026 12:17
Planning docs for mirroring the Nextcloud-base GitOps shape onto the WOO
PWA. ApplicationSet + layered Helm values replace the mcc create-react
per-tenant manifest generator. Tenant files become 2 lines for the common
case; namespace pairs with the Nextcloud co-tenant; image tag pinned to
semver (no more latest); branding migration sources truth from live
cluster state.

No scaffold yet — proposal/design/tasks only. CHANGELOG and .gitignore
initialised.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…t-platform

DNS is handled by cluster-infra/external-dns with the Cloudflare provider
and policy: sync — tenant Ingress creation/deletion auto-manages records
in commonground.nu / openwoo.app / opencatalogi.nl zones. TLS is
cert-manager via HTTP-01 (Cloudflare proxy intentionally off).

Recorded in design.md (new External dependencies subsection),
proposal.md (Removed from Scope), and tasks.md (7.1 will surface this
in docs/ADDING-TENANT.md so operators know not to touch Cloudflare).

Also broadens .gitignore to cover *.pem, *.key, *_rsa, *.crt, *.p12 per
global secret-handling policy (pre-commit hook requirement).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirrors the Nextcloud-base GitOps shape onto the WOO PWA. Two-line tenant
files, layered Helm values, single ApplicationSet, AppProject sync window,
co-tenancy with Nextcloud namespaces.

Highlights
- Vendored chart at charts/woo-website (upstream b1ac4e89, refactor branch)
  with added templates/networkpolicy.yaml (pod-label-scoped default-deny +
  allow-ingress + allow-egress). Divergences recorded in UPSTREAM.
- values/common.yaml pins image tag to 1.0.0 (never latest); nodepool /
  toleration / ingress / security defaults from create_react.sh moved here.
- env/{accept,prod}.yaml carry replicas + autoscaling + resource ceilings.
  Domain logic lives in the ApplicationSet template, not in env files.
- AppProject react-platform mirrors Nextcloud-base sync windows
  (deny weekday 07-17 Europe/Amsterdam for platform changes).
- ApplicationSet react-tenants generates one Application per
  values/tenants/tenant-*.yaml. Application name keeps today's
  <name>-<env>-reactfront convention; namespace is now <name>-<env>
  (paired with Nextcloud co-tenant).
- scripts/smoke-checks.sh reproduces the ApplicationSet inline-values
  block in bash so offline render testing matches what Argo would
  produce. Synthetic tenant-test-mcc renders 9 resources clean.
- CLAUDE.md, README.md (Dutch), and docs/{ADDING-TENANT,ROLLOUTS,
  MIGRATION}.md cover operations + cut-over runbook.

Discovery note: the existing manifests' strategy: {type: Recreate} is
dead config — the chart Deployment template has no strategy block, so
it was silently ignored. Default RollingUpdate is preserved
(better for static frontend; no behavior change).

Phase 1 (cluster discovery), 8 (canary cut-over), 9 (waves), and 10
(decommission old path) are deferred to live operations and require
explicit operator go in a sync window.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Tenant file for the canary-prod react-base test. Wave 0. Triggers a
deploy in the canary-prod namespace alongside the existing Nextcloud
co-tenant. Replaces the synthetic test-mcc placeholder.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Argo CD ziet React-base nog niet — repo is niet geregistreerd. Deze
commit introduceert de bootstrap-shape zoals Nextcloud-base ook werkt:
één eenmalig handmatig kubectl apply, daarna alles GitOps.

Wijzigingen:
- react-platform/argo/applications/root.yaml: root App-of-Apps
  Application die react-platform/argo/ recursief watcht. Sync't
  AppProject + ApplicationSet (en zichzelf, self-management).
- react-platform/argo/projects/react-platform.yaml: sync-wave -1
  zodat de AppProject vóór de ApplicationSet syncthet.
- react-platform/argo/applicationsets/react-tenants.yaml: tijdelijk
  targetRevision development (TODO post-canary terug naar HEAD na
  merge naar main). Drie locaties.
- react-platform/values/tenants/tenant-canary.yaml: pin pwa.image.tag
  expliciet op latest — common.yaml pin "1.0.0" bestaat (waarschijnlijk)
  niet in GHCR; alle bestaande tenants draaien :latest.
- react-platform/docs/BOOTSTRAP.md: eenmalige bootstrap-stappen
  (argocd repo add + kubectl apply -f root.yaml) plus rollback en
  troubleshooting.

Bootstrap-volgorde:
  1. argocd repo add https://github.com/ConductionNL/React-base.git
  2. kubectl apply -f react-platform/argo/applications/root.yaml
  3. Argo sync't de rest, ApplicationSet pakt tenant-canary.yaml op,
     deploy't naar canary-prod ns naast Nextcloud co-tenant.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@MWest2020
MWest2020 requested review from remko48 and rjzondervan May 4, 2026 07:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant