Review kubernetes-bootstrap tutorial: fix inaccuracies

- Fix k3s table entry (BlumeOps uses k3s on ringtail)
- Fix broken tailscale serve command (minikube ip returns IP, not port)
- Rewrite NFS section to match actual static PV/PVC binding pattern
- Fix "BluemeOps" typo
- Add last-reviewed frontmatter

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erich Blume 2026-03-25 16:16:33 -07:00
commit 4ae55f9bf4

View file

@ -1,6 +1,7 @@
--- ---
title: Kubernetes Bootstrap title: Kubernetes Bootstrap
modified: 2026-02-07 modified: 2026-03-25
last-reviewed: 2026-03-25
tags: tags:
- tutorials - tutorials
- replication - replication
@ -20,7 +21,7 @@ For homelab use, lightweight distributions work well:
| Distribution | Best For | BlumeOps Uses | | Distribution | Best For | BlumeOps Uses |
|--------------|----------|---------------| |--------------|----------|---------------|
| **Minikube** | Single-node, macOS | Yes | | **Minikube** | Single-node, macOS | Yes |
| **k3s** | Single-node, Linux | - | | **k3s** | Single-node, Linux | Yes (ringtail) |
| **kind** | Local development | - | | **kind** | Local development | - |
| **kubeadm** | Multi-node clusters | - | | **kubeadm** | Multi-node clusters | - |
@ -76,7 +77,7 @@ To access the cluster from other Tailscale devices, expose the API server:
### Option A: Tailscale Serve (Simple) ### Option A: Tailscale Serve (Simple)
```bash ```bash
tailscale serve --bg --tcp 6443 tcp://localhost:$(minikube ip --format '{{.Port}}') tailscale serve --bg --tcp 6443 tcp://$(minikube ip):8443
``` ```
### Option B: Tailscale Kubernetes Operator (Advanced) ### Option B: Tailscale Kubernetes Operator (Advanced)
@ -125,22 +126,44 @@ kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storagec
### NFS for Shared Storage ### NFS for Shared Storage
If you have a NAS: If you have a NAS on your tailnet, create a static PersistentVolume and PersistentVolumeClaim pair:
```yaml ```yaml
apiVersion: v1 apiVersion: v1
kind: PersistentVolume kind: PersistentVolume
metadata: metadata:
name: nfs-share name: media-nfs-pv
spec: spec:
capacity: capacity:
storage: 1Ti storage: 1Ti
accessModes: accessModes:
- ReadWriteMany - ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs: nfs:
server: nas.your-tailnet.ts.net server: nas # Tailscale MagicDNS hostname
path: /volume1/k8s path: /volume1/media
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: media-nfs-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
volumeName: media-nfs-pv
resources:
requests:
storage: 1Ti
``` ```
Key details:
- `storageClassName: ""` ensures static binding (not dynamic provisioning)
- `volumeName` in the PVC binds it to the specific PV
- `Retain` reclaim policy prevents accidental data loss
- Use the NAS's Tailscale hostname, not an IP address
## What You Now Have ## What You Now Have
- A Kubernetes cluster running on your server - A Kubernetes cluster running on your server
@ -152,7 +175,7 @@ spec:
- [[argocd-config|Configure ArgoCD]] - GitOps deployments - [[argocd-config|Configure ArgoCD]] - GitOps deployments
- Install essential addons (ingress controller, cert-manager) - Install essential addons (ingress controller, cert-manager)
## BluemeOps Specifics ## BlumeOps Specifics
BlumeOps' cluster configuration includes: BlumeOps' cluster configuration includes:
- Tailscale operator for automatic ingress - Tailscale operator for automatic ingress