No description
Find a file
david kiania 6b5947e62a feat(forgejo): replace the cutover script with a DNS-move script
The cutover script no longer describes anything anyone wants to do: the data
migration is complete, the Coolify instance is retired, and repoargo is the
git host. Leaving a script in the repo that stops production and moves data
would be an invitation to run it by mistake.

What remains is only handing the original hostname back, and that inverts the
ordering. DNS goes FIRST now: repo.rahamafresh.com returns 503 today, so
repointing it cannot make anything worse, and doing it before the Ingress
exists means the ACME challenge succeeds first time instead of failing until
DNS catches up -- which is what consumes the failed-authorization rate limit.

Zero downtime, nothing stopped, no data moved. The repoargo Ingress stays in
place deliberately: ten local repositories and five Argo Applications use that
hostname, and removing it would break them all at once. Both names serve the
same instance, with ROOT_URL deciding which is canonical.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HRo4UeD99WWR3H1dfB8FsZ
2026-09-09 00:12:17 +03:00
apps feat: repoargo.rahamafresh.com becomes the git origin 2026-09-08 22:04:07 +03:00
bootstrap fix(argo,bootstrap): server-side apply, and drop the no-op recurse field 2026-09-04 23:49:23 +03:00
cluster feat(cluster): expose the Argo CD UI at argo.rahamafresh.com 2026-09-05 00:42:36 +03:00
docs feat(forgejo): replace the cutover script with a DNS-move script 2026-09-09 00:12:17 +03:00
scripts feat(forgejo): replace the cutover script with a DNS-move script 2026-09-09 00:12:17 +03:00
workloads Revert "feat(forgejo): cut over to repo.rahamafresh.com" 2026-09-08 21:54:57 +03:00
.gitignore chore: GitOps root for the FleetNow k3s cluster 2026-09-04 21:49:32 +03:00
README.md docs: plans for migrating Forgejo and TimescaleDB to jogootano 2026-09-08 21:11:17 +03:00

14_fleetnow_argo — GitOps root for the FleetNow cluster

Cluster configuration for the k3s node at 187.7.20.166 (jogootano), which runs the FleetNow UI and the dashboard_api read-API under Argo CD.

The one rule

Cluster config is committed here, never applied by hand. Argo CD reconciles this repo into the cluster. The only exceptions are the three bootstrap installs (k3s, Argo CD, cert-manager) and apps/root-app.yaml — the seed that teaches Argo to watch this directory. Everything after that is a commit.

Layout

Path Contents
bootstrap/ One-time install scripts, run in order: k3s → Argo CD → cert-manager
cluster/ Cluster-scoped resources: namespaces, Let's Encrypt ClusterIssuer
apps/ Argo Applications. root-app.yaml is the app-of-apps that syncs this dir
docs/ PLAN.md (the FleetNow migration), PLAN_FORGEJO.md and PLAN_TIMESCALE.md (the two follow-on migrations), PROGRESS.md (what has actually been done), RUNBOOK.md (day-2 operations)

Where the app manifests live

Not here. Each app's manifests sit in the app's own repo, and an Application in apps/ points at it:

App Repo Path
fleetnow (UI) kianiadee/fleetnow . (repo root)
fleetapi (read-API) kianiadee/tracksolid_timescale_grafana_prod deploy/

The UI's manifests must live beside index.html because its ConfigMaps are generated from those files, and kustomize cannot read above its own directory.

Secrets

None are stored in this repo, and none should be. The database credentials are created out-of-band with kubectl create secret (see docs/RUNBOOK.md).

Quick start

export KUBECONFIG=~/.kube/fleet-k3s.yaml
ssh -fN -L 6443:127.0.0.1:6443 kianiadee@187.7.20.166   # if the tunnel is down
kubectl get applications -n argocd