Scaffold react-platform — GitOps multi-tenant frontend#3
Open
MWest2020 wants to merge 5 commits into
Open
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promotes the canary-validated react-platform scaffold from development to main. Argo refs nog op feature branch — aparte follow-up PR swapt naar HEAD.