Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add luiscamaral/k8s-cell-platform-skills --skill "l1-cluster-services"
Install specific skill from multi-skill repository
# Description
Manages L1 cluster platform services including MetalLB load balancer, external-dns for DNS automation, and Karpenter for node autoscaling. Use for load balancer configuration, IP address assignment, DNS record management, or cluster autoscaling on Proxmox.
# SKILL.md
name: l1-cluster-services
description: Manages L1 cluster platform services including MetalLB load balancer, external-dns for DNS automation, and Karpenter for node autoscaling. Use for load balancer configuration, IP address assignment, DNS record management, or cluster autoscaling on Proxmox.
allowed-tools: Read, Glob, Grep, Bash(kubectl:*)
L1 Cluster Services Management
Manages cluster-level services that provide capabilities to applications.
Layer Boundaries
L1 Owns:
- MetalLB (LoadBalancer for bare-metal)
- external-dns (DNS automation with Pi-hole)
- Karpenter (Node autoscaling on Proxmox)
L1 Does NOT Own:
- Cilium CNI (L0 - Talos inline manifests)
- Argo CD, Kyverno (L2)
- Application workloads
Key Directory
l1_cluster-platform/
βββ metallb/ # LoadBalancer config
βββ external-dns/ # DNS automation
βββ karpenter/ # Node autoscaling
βββ test-service/ # Integration validation
βββ generated/ # Generated docs
βββ Makefile # Operations
Component Details
MetalLB (v0.15.3)
- Namespace: metallb-system
- IP Pool: 192.168.100.200-250
- Mode: L2 advertisement
# Status
kubectl get pods -n metallb-system
kubectl get ipaddresspools -n metallb-system
kubectl get l2advertisements -n metallb-system
# Check assigned IPs
kubectl get svc -A -o wide | grep LoadBalancer
external-dns (v0.17.0)
- Namespace: external-dns
- Provider: Pi-hole
- Domain: homelab.local
# Status
kubectl get pods -n external-dns
kubectl logs -n external-dns -l app.kubernetes.io/name=external-dns
# Check DNS records created
kubectl get svc -A -o jsonpath='{range .items[?(@.metadata.annotations.external-dns\.alpha\.kubernetes\.io/hostname)]}{.metadata.name}: {.metadata.annotations.external-dns\.alpha\.kubernetes\.io/hostname}{"\n"}{end}'
Karpenter (v0.7.1)
- Namespace: karpenter
- Strategy: Hybrid (2 static + 0-10 dynamic workers)
- Provider: Proxmox
# Status
kubectl get pods -n karpenter
kubectl get nodepools
kubectl get nodeclaims
# Check provisioned nodes
kubectl get nodes --show-labels | grep karpenter
Common Operations
Read-Only (Auto-Execute)
kubectl get pods -n metallb-system
kubectl get pods -n external-dns
kubectl get pods -n karpenter
kubectl get svc -A
Write Operations (Require Approval)
# Apply configurations
kubectl apply -k l1_cluster-platform/metallb/
kubectl apply -k l1_cluster-platform/external-dns/
kubectl apply -k l1_cluster-platform/karpenter/
# Force sync
kubectl rollout restart deployment -n metallb-system
Memory Files
meta/memory/current-state.md- Deployed componentsmeta/memory/component-ownership.md- L1 responsibilities
Reference Documentation
reference/metallb-config.md- MetalLB configuration guidereference/karpenter-scaling.md- Karpenter scaling patterns
Validation
Run scripts/test-loadbalancer.sh to validate L1 integration.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.