Update Gitea Actions runner to use catthehacker/ubuntu images which
are specifically designed for GitHub Actions/Gitea Actions and include
Docker CLI and common tools pre-installed.
Changes:
- Replace node:20-bullseye labels with catthehacker/ubuntu:act-latest
- Add ubuntu-22.04 label pointing to act-22.04 image
- Configure DOCKER_* environment variables to be passed to jobs
These images are the standard for act (local GitHub Actions runner)
and Gitea Actions, providing better compatibility with workflows
that need Docker access.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Deploy MetalLB v0.14.9 for bare-metal load balancing with L2 mode.
Configuration:
- IP address pool: 10.0.1.10-10.0.1.20
- L2 advertisement on ens18, eth0, enp* interfaces
- Runs on all control plane nodes with automatic failover
- Enables LoadBalancer service type support
This allows each service to have its own dedicated IP address
instead of using NodePort with random high ports.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Configure nfs-subdir-external-provisioner for persistent storage
backed by NFS server at 10.0.0.57:/mnt/NAS/vmstorage.
Features:
- Dynamic provisioning of PersistentVolumes
- Set as default storage class
- Supports ReadWriteMany access mode
- Prepares cluster for diskless PXE boot nodes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove node.kubernetes.io/exclude-from-external-load-balancers label
from control plane nodes to allow MetalLB speakers to announce
LoadBalancer IPs on all nodes. This enables proper L2 advertisement
and automatic failover for services.
Changed:
- Commented out nodeLabels section in all three controlplane configs
- Applied to nodes 10.0.1.3, 10.0.1.4, and 10.0.1.5
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>