Install K3s on dedicated NVMe storage #7

Merged
josh merged 3 commits from feat/k3s-cluster into main 2026-08-05 09:04:45 -05:00
Owner

Summary

  • provision a dedicated 120 GiB ext4 logical volume on the internal NVMe for /var/lib/rancher/k3s
  • install a pinned single-server K3s release with secrets encryption enabled
  • disable packaged Traefik while retaining ServiceLB for the later GitOps-managed ingress cutover
  • expose the live administrator kubeconfig at ~/.kube/config for the Foundry owner only, with guarded replacement and restricted permissions
  • document deployment, storage, access, and future Raspberry Pi enrollment behavior

Why

This establishes Foundry as the Kubernetes control plane for Kubernetes, Helm, Argo CD, and Crossplane experiments without consuming the constrained root filesystem. Existing Caddy and Docker workloads remain in place while ingress migration is handled separately.

Validation

  • ansible-playbook playbooks/k3s.yml --syntax-check
  • YAML lint on the modified K3s role files
  • K3s playbook check mode against Foundry
  • live deployment followed by an idempotence run with changed=0
  • Foundry node verified Ready on v1.36.2+k3s1
  • kubectl verified as josh without setting KUBECONFIG
  • administrator kubeconfig verified as root:foundry with mode 0640
## Summary - provision a dedicated 120 GiB ext4 logical volume on the internal NVMe for `/var/lib/rancher/k3s` - install a pinned single-server K3s release with secrets encryption enabled - disable packaged Traefik while retaining ServiceLB for the later GitOps-managed ingress cutover - expose the live administrator kubeconfig at `~/.kube/config` for the Foundry owner only, with guarded replacement and restricted permissions - document deployment, storage, access, and future Raspberry Pi enrollment behavior ## Why This establishes Foundry as the Kubernetes control plane for Kubernetes, Helm, Argo CD, and Crossplane experiments without consuming the constrained root filesystem. Existing Caddy and Docker workloads remain in place while ingress migration is handled separately. ## Validation - `ansible-playbook playbooks/k3s.yml --syntax-check` - YAML lint on the modified K3s role files - K3s playbook check mode against Foundry - live deployment followed by an idempotence run with `changed=0` - Foundry node verified `Ready` on `v1.36.2+k3s1` - `kubectl` verified as `josh` without setting `KUBECONFIG` - administrator kubeconfig verified as `root:foundry` with mode `0640`
Install K3s on dedicated NVMe storage
All checks were successful
CI / validate (push) Successful in 12s
fca70408b7
Configure kubectl access for Foundry owner
All checks were successful
CI / validate (push) Successful in 11s
9d63b8409a
Document Foundry and Anvil GitOps boundary
All checks were successful
CI / validate (push) Successful in 12s
f0da63a910
josh changed title from WIP: Install K3s on dedicated NVMe storage to Install K3s on dedicated NVMe storage 2026-08-05 09:04:41 -05:00
josh merged commit 2b9e369c74 into main 2026-08-05 09:04:45 -05:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
josh/foundry!7
No description provided.