user@homelab:~/docs$ cat remote-access.md

Vzdálený přístup (Tailscale, k9s)

SSH na server odkudkoli bez otevřených portů a přehled clusteru v k9s

# obsah

Princip

Tailscale vytvoří soukromou síť (tailnet) jen mezi vlastními zařízeními: server, Mac a iPad. Každé zařízení dostane adresu 100.x.y.z a jméno v doméně <tailnet>.ts.net. Spojení jsou šifrovaná (WireGuard) a navazují se odchozí cestou, takže se na routeru nic neotevírá.

text
Mac / iPad (kdekoli) ──WireGuard──▶ homelab.<tailnet>.ts.net
                     (bez otevřených portů, přímé spojení i přes NAT)
TailscaleCloudflare Access / WARP
SSH z Macu a z Termia na iPadu✅ beze změn⚠️ ProxyCommand nebo WARP
libovolný port (SSH, později Grafana)✅⚠️ složitější
server viditelný z internetu❌ vůbecpřihlašovací stránka
závislostnezávislé na Cloudflarestejný dodavatel jako web

Proto: veřejný web přes Cloudflare, správa přes Tailscale.

Server

shell @ server
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

tailscale up vypíše přihlašovací odkaz. Otevře se v prohlížeči a server se přidá do tailnetu. Instalační skript přidá oficiální apt repozitář, takže se Tailscale aktualizuje se systémem.

shell @ server
tailscale ip -4
tailscale status
  • SSH zůstává OpenSSH s klíči a zakázanými hesly. Funkci tailscale up --ssh (vlastní přihlašování Tailscale) nepoužíváme. Tailscale slouží jen jako šifrovaná cesta.
  • Expirace klíče: v admin konzoli (Machines → homelab → Disable key expiry) je u serveru vypnutá. Jinak by se po 180 dnech odpojil. U klientů zůstává zapnutá.

Mac a iPad

  1. Aplikace Tailscale (Mac App Store / App Store), přihlášení stejným účtem.
  2. macOS se zeptá na přidání VPN konfigurace a síťového rozšíření. Obojí je potřeba povolit. Přes Tailscale jde jen provoz do tailnetu, ostatní provoz beze změny (žádný exit node).
  3. MagicDNS dává zařízením jména, server je homelab.<tailnet>.ts.net.

SSH config na Macu:

ssh config @ mac
Host homelab
    HostName homelab.<tailnet>.ts.net
    User <uživatel>
    IdentityFile ~/.ssh/id_ed25519
    AddKeysToAgent yes
    UseKeychain yes

Jedna konfigurace funguje doma i venku. Doma Tailscale pozná společnou síť a spojí se přímo po Wi-Fi.

Termius na iPadu: host s hostname homelab.<tailnet>.ts.net, stejný uživatel a klíč. Volitelně druhý host s domácí IP adresou pro případ, kdy Tailscale na iPadu neběží.

Ověření

shell @ mac
tailscale ping homelab
ssh homelab
Výstup tailscale pingVýznam
via <lan-ip>:41641doma, přímo po Wi-Fi
via <veřejná-ip>:<port>venku, přímé spojení přes NAT
via DERP(<region>)přes přenosový server Tailscale, funguje, jen pomaleji

Test zvenku: Mac na hotspotu z mobilu, iPad na mobilních datech.

kubectl jen na serveru

Cluster se ovládá na serveru přes SSH (ssh homelab → k …). kubectl na Macu záměrně není nastavený:

  • administrátorský certifikát clusteru zůstává jen na serveru,
  • nehrozí záměna s jinými clustery v kubeconfigu na Macu,
  • na CKAD se stejně pracuje v terminálu na vzdáleném stroji.

k9s

k9s je terminálové „GUI“ pro Kubernetes: přehled podů, logů, událostí a zdrojů. Funguje přes SSH z Macu i z iPadu.

Instalace z oficiálního vydání s ověřením kontrolního součtu:

shell @ server
K9S_VER=$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/derailed/k9s/releases/latest | sed 's#.*/tag/##')
cd /tmp
curl -fsSLO "https://github.com/derailed/k9s/releases/download/${K9S_VER}/k9s_linux_amd64.deb"
curl -fsSLO "https://github.com/derailed/k9s/releases/download/${K9S_VER}/checksums.sha256"
grep ' k9s_linux_amd64.deb$' checksums.sha256 | sha256sum -c -
sudo apt install -y ./k9s_linux_amd64.deb
rm -f k9s_linux_amd64.deb checksums.sha256
  • sha256sum -c musí vypsat OK, jinak se balíček neinstaluje,
  • k9s používá stejný kubeconfig jako kubectl (~/.kube/config),
  • .deb z GitHubu se neaktualizuje přes apt upgrade. Nová verze = zopakovat postup.

Užitečné příkazy v k9s: :pods, :deploy, :events, :kustomizations (Flux), l logy, d describe, 0 všechny namespaces.