Skip to content

docs: D4 done; the rebuild drill's fixes - #86

Merged
AlpNuhoglu merged 2 commits into
mainfrom
docs/d4-drill
Oct 22, 2026
Merged

AlpNuhoglu merged 2 commits into
mainfrom
docs/d4-drill

Conversation

@AlpNuhoglu

Copy link
Copy Markdown
Owner

Summary

The runbook (docs/deployment.md) was followed on an empty Ubuntu 24.04 VM (Multipass, arm64) standing in for a fresh VPS (cloud-init put the admin key on root, as netcup's installer does). It got from nothing to a running stack: admin user, SSH policy, updates, Tailscale, k3s with Secrets encrypted, the cluster-level manifests, the Secret, and a manual deploy (25 objects, 10/10 pods ready in 22 s, arm64 images), serving the deployed commit through Traefik. Anonymous API access 401; the admission policy refuses NodePort. Not covered: provider firewall, DNS, Let's Encrypt (measured on the real server).

Five fixes

  1. The setup and k3s steps installed files without saying how they reach the server → scp commands.
  2. k3s did not start on a fresh install (finding docs(plan): plan deployment phase 2 — monitoring and readiness for real users #89): config.yaml points the API server at the OIDC file, which was copied only after the first start (failed to load authentication configuration ... no such file). Now installed before; the corrected block came up active on the first try.
  3. secrets-encrypt status errors in its first seconds (runtime core not ready); the checksum note now names the arm64 list too.
  4. Manual deploy: the stale "namespace is created by hand" note is gone; it now waits for the rollout and checks the server itself (--resolve) instead of whatever DNS points at.
  5. A rehearsal cluster without the public name should not get the Let's Encrypt issuers (it opened production orders that could never validate).

Plan: D4 ticked. Also noted: Traefik's permanent redirect is 301 for GET, 308 for other methods.

🤖 Generated with Claude Code

AlpNuhoglu and others added 2 commits October 22, 2026 13:00
Following docs/deployment.md on an empty Ubuntu 24.04 VM got from
nothing to a running stack, and showed five places where a rebuild
stumbles:

- The setup and k3s steps installed files without saying how they
  reach the server; the scp commands are added.
- k3s did not start: config.yaml points the API server at the OIDC
  authentication file, which the document copied only after k3s's
  first start ("failed to load authentication configuration ... no such
  file"). The file is now installed before. With the corrected block
  k3s came up on the first try.
- secrets-encrypt status answers an error in its first seconds
  (runtime core not ready), and the checksum note named only the amd64
  list.
- The manual deploy said the namespace is created by hand (not since
  it moved to the auto-deploy directory), did not wait for the rollout,
  and checked whatever DNS points at rather than the server itself.
- A rehearsal cluster without the public name should not get the Let's
  Encrypt issuers: its cert-manager opened production orders that could
  never validate.

Plan: D4
Refs: Bulgu #89

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The runbook was followed on an Ubuntu 24.04 VM (Multipass, arm64)
standing in for an empty VPS, from the admin user to a manual deploy:
k3s with Secrets encrypted, the cluster-level manifests, the Secret,
and the prod overlay with 10 of 10 pods ready in 22 s, serving the
deployed commit through Traefik. The provider firewall, DNS and Let's
Encrypt were not part of it; they were measured step by step on the
real server.

Five places in the document were wrong or missing and are fixed; the
worst, k3s not starting on a fresh install, is finding #89. Also noted:
Traefik's permanent redirect is 301 for GET and 308 for other methods.

Plan: D4
Refs: Bulgu #89

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AlpNuhoglu
AlpNuhoglu merged commit 07f6ffb into main Oct 22, 2026
26 checks passed
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