cilium-networking
Cilium as cluster CNI with kube-proxy replacement, Cilium LB-IPAM + L2 Announcement for Service type LoadBalancer (not MetalLB), Gateway notes.
Skill by giovannirco
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/giovannirco-cilium-networking
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/cilium-networking
What's inside
- Skill name
cilium-networking- Description
- Cilium as cluster CNI with kube-proxy replacement, Cilium LB-IPAM + L2 Announcement for Service type LoadBalancer (not MetalLB), Gateway notes. Triggers: /cilium, CNI, LoadBalancer IP, LB-IPAM, L2 announcement, Hubble.
- License
- MIT
- Instructions
- 84 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (1)
- SKILL.md
SKILL.md (first lines)
# Cilium networking
## Defaults this skill encodes
1. **CNI = Cilium** (prefer over default flannel-style bootstrap).
2. **LoadBalancer IPs = Cilium LB-IPAM**, not the MetalLB project.
3. **Advertise VIPs on LAN = Cilium L2 Announcement** on host interfaces.
4. Pin fixed VIPs with annotations `lbipam.cilium.io/ips` + `lbipam.cilium.io/ip-pool`.
## Install
Follow current Cilium docs for your k8s/Talos version. Pin Helm chart.
```bash
helm repo add cilium https://helm.cilium.io/
# helm upgrade --install cilium cilium/cilium -n kube-system --version <PIN>
```
Enable features per docs for your version: kube-proxy replacement, LB IPAM, L2 announcements.
## Pool + L2 (required for LAN VIPs)
```yaml
# CiliumLoadBalancerIPPool — DHCP-excluded CIDR on YOUR LAN
# CiliumL2AnnouncementPolicy — interfaces regex matching node NICs
```
See `docs/platform/networking-decisions.md` for full examples.
## Fixed VIP on a Service
```yaml
metadata:
annotations:
lbipam.cilium.io/ips: "<VIP>"
lbipam.cilium.io/ip-pool: servers-pool
spec:
type: LoadBalancer
```
## Concepts to teach
| Term | Meaning |
|------|---------|
| Pod CIDR | Pod address space (native routing or tunnel) |
| Service CIDR | ClusterIP range |
| LB pool | LAN addresses for type LoadBalancer |
| L2 announce | ARP so LAN hosts reach the VIP |
## Verify
```bash
kubectl -n kube-system get pods -l k8s-app=cilium
kubectl get ciliumloadbalancerippools
kubectl get ciliuml2announcementpolicies
kubectl get svc -A --field-selector spec.type=LoadBalancer
# From another LAN host: ping <VIP>
```
## Footguns
- Exhausting the pool or overlapping DHCP
- Wrong interface regex → no ARP, VIP unreachable
- Accepting bootstrap CNI that replaces Cilium during upgrades
- Calling this MetalLB in GitOps while implementing Cilium (confuses agents)
- **L2 on a NIC without an IP:** connections reset after five idle minutes (the MAC ages out of the switches and frames flood to every node). Add an ARP keepalive DaemonSet on that NIC, or use BGP
- L2 failover after a hard node loss is about 15–20 s with default lease timings; that is expected, not a fault
- VLAN-tagged frames on a Cilium device are dropped unless the VLAN is in `bpf.vlanBypass`
- Multus beside Cilium needs `cni.exclusive: false` **and** `rollOutCiliumPods: true`; otherwise Cilium renames the other CNI's config file and nothing restarts
## BGP instead of L2 (when the gateway can)
- `bgpControlPlane.enabled: true`; `CiliumBGPClusterConfig` + `CiliumBGPPeerConfig` + `CiliumBGPAdvertisement`.
- Timers: hold 3 s, keepalive 1 s. **Graceful restart off** (it keeps a dead node's routes; a hard failure took 23.8 s with it, 2 s without).
- The LB range must not be a network on the gateway. Gateway side: listen range = node network, inbound prefix list = that cluster's LB range, deny-all outbound.
- Measure: curl in a loop, power a node off, read the gap. Record the number.
## Related
- Multus: `skills/multus-secondary-net/`
- Full write-up: `docs/platform/networking-decisions.md`
- L2 vs BGP, measured: `docs/platform/loadbalancer-l2-vs-bgp.md`From giovannirco/agentic-homelab, MIT.
More from giovannirco/agentic-homelab
- 0.587score
omni-netboot
giovannirco
Self-hosted Omni with netboot enrolment: identity rules (domain, account ID, fixed IP), enrolment images, cluster templates in git, lab clusters on VMs, the…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
local-ai-gpu-node
giovannirco
Run and measure local AI on a Talos GPU worker: storage off the node disk, one GPU app at a time, thermal profile per card, power limits from a privileged…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
long-session-goal
giovannirco
Keep a multi-hour agent session on track across context loss: a goal file with a checkable end, a resume routine, a checkpoint routine, a "waiting for the…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
lab-bootstrap
giovannirco
Bootstrap an agentic homelab: Proxmox, agent VM, Talos, Cilium, Argo CD, Cloudflare Tunnel, Technitium split-DNS, external-dns, agent GH App + kube access…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
observability
giovannirco
Choose observability tier by hardware: Grafana Cloud Free + Alloy (light), self-hosted Grafana+Prometheus+Loki single, or full LGTM (Mimir/Loki/Tempo RF=1+).
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
talos-upgrade
giovannirco
Sequential Talos + Kubernetes upgrades: compatibility gates, one minor at a time, CNI bootstrap caution, verify steps.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
home-network-controllers
giovannirco
UniFi, MikroTik, or Omada for lab networking: VLANs, DHCP DNS, DNS redirect footguns, reserve infra IPs, free LB pool.
SkillAFreshness: A★ 1Claude Code +9 - 0.544score
cloudflare-tunnel
giovannirco
Expose lab apps via Cloudflare Tunnel without opening home WAN ports; token hygiene; 301 loop footguns.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
hermes-agent
giovannirco
Hermes Agent on Proxmox VM (multi-profile fleet) or Kubernetes (tenant GitOps): SOUL/skills, GitHub App, MCP (including WAHA), dashboard, s6 entrypoint…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
multus-secondary-net
giovannirco
Multus CNI for secondary pod interfaces (macvlan NADs on LAN), when to use vs ClusterIP/LB VIP, static-IP footguns.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
technitium-split-dns
giovannirco
Bootstrap and operate Technitium for LAN split-horizon DNS: primary zones, forwarders, optional catalog secondary, client DHCP/DNAT, diagnose public CF vs…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
external-dns
giovannirco
Dual external-dns: Cloudflare for public (tunnel targets) and RFC2136 to Technitium for private A records on internal Gateway.
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 5, 2026 (24 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/giovannirco/agentic-homelab
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from giovannirco
- 0.587score
long-session-goal
giovannirco
Keep a multi-hour agent session on track across context loss: a goal file with a checkable end, a resume routine, a checkpoint routine, a "waiting for the…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
local-ai-gpu-node
giovannirco
Run and measure local AI on a Talos GPU worker: storage off the node disk, one GPU app at a time, thermal profile per card, power limits from a privileged…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
omni-netboot
giovannirco
Self-hosted Omni with netboot enrolment: identity rules (domain, account ID, fixed IP), enrolment images, cluster templates in git, lab clusters on VMs, the…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
talos-upgrade
giovannirco
Sequential Talos + Kubernetes upgrades: compatibility gates, one minor at a time, CNI bootstrap caution, verify steps.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
home-network-controllers
giovannirco
UniFi, MikroTik, or Omada for lab networking: VLANs, DHCP DNS, DNS redirect footguns, reserve infra IPs, free LB pool.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
lab-bootstrap
giovannirco
Bootstrap an agentic homelab: Proxmox, agent VM, Talos, Cilium, Argo CD, Cloudflare Tunnel, Technitium split-DNS, external-dns, agent GH App + kube access…
SkillAFreshness: A★ 1Claude Code +9
Cite this page
cilium-networking skill. Agent Mart. https://agentmart.dev/skills/giovannirco-cilium-networking (last updated 2026-10-24)