OrbStack-optimized Skaffold for local Kubernetes dev without port-forward. Use when configuring Skaffold with OrbStack, k8s.orb.local, LoadBalancer, or eliminating port-forward.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
OrbStack-optimized Skaffold for local Kubernetes dev without port-forward. Use when configuring Skaffold with OrbStack, k8s.orb.local, LoadBalancer, or eliminating port-forward.
user-invocable
false
allowed-tools
Bash, Read, Grep, Glob
Skaffold with OrbStack - Port-Forward-Free Development
When to Use This Skill
Use this skill when...
Use a sibling Skaffold/container skill instead when...
Wiring Skaffold against the OrbStack local Kubernetes cluster
Defining file-sync rules for the inner dev loop (skaffold-filesync)
Reaching services via *.k8s.orb.local, LoadBalancer, or Ingress without port-forward
Adding pre-deploy test or post-deploy verify stages (skaffold-testing)
Migrating an existing project off kubectl port-forward onto OrbStack networking
Hardening or shrinking the container image itself (container-development)
Overview
OrbStack provides superior local Kubernetes networking compared to other tools (minikube, kind, Docker Desktop). Services are accessible directly from macOS without port-forward.
Key OrbStack Advantages
Feature
OrbStack
minikube/kind
LoadBalancer auto-provision
✅ Yes
❌ Needs MetalLB
Wildcard DNS (*.k8s.orb.local)
✅ Yes
❌ No
cluster.local from host
✅ Yes
❌ No
Pod IP direct access
✅ Yes
❌ No
Auto HTTPS certificates
✅ Yes
❌ No
Service Access Methods
Method 1: LoadBalancer Services (Simplest)
Change service type from ClusterIP to LoadBalancer:
# Access any service directly
curl http://my-app.default.svc.cluster.local:8080
# Full DNS pattern
curl http://<service>.<namespace>.svc.cluster.local:<port>
Skaffold Configuration for OrbStack
Minimal skaffold.yaml (No Port-Forward Needed)
apiVersion:skaffold/v4beta11kind:Configmetadata:name:my-appbuild:local:push:falseuseBuildkit:trueartifacts:-image:my-appdocker:dockerfile:Dockerfiledeploy:kubeContext:orbstackkubectl:manifests:-k8s/*.yamlstatusCheck:truestatusCheckDeadlineSeconds:180# Port-forward REMOVED - use LoadBalancer/Ingress instead
# skaffold.yaml with port-forwardportForward:-resourceType:serviceresourceName:apiport:8080localPort:8080address:127.0.0.1-resourceType:serviceresourceName:frontendport:3000localPort:3000address:127.0.0.1
skaffold dev # Services at localhost:8080, localhost:3000
After (OrbStack Native)
# k8s/services.yaml - Change service typesapiVersion:v1kind:Servicemetadata:name:apispec:type:LoadBalancer# Changed from ClusterIPports:-port:8080---apiVersion:v1kind:Servicemetadata:name:frontendspec:type:LoadBalancer# Changed from ClusterIPports:-port:3000
# skaffold.yaml - Remove portForward section entirelydeploy:kubeContext:orbstackkubectl:manifests:-k8s/*.yaml# No portForward needed!
skaffold dev # Services at api.default.svc.cluster.local:8080# frontend.default.svc.cluster.local:3000
Common Patterns
Database Access
# k8s/postgresql.yamlapiVersion:v1kind:Servicemetadata:name:postgresqlspec:type:LoadBalancer# Access from local tools (DBeaver, pgAdmin)ports:-port:5432
# k8s/ingress.yaml - Single Ingress for all servicesapiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:app-ingressspec:ingressClassName:nginxrules:-host:api.k8s.orb.localhttp:paths:-path:/pathType:Prefixbackend:service:name:apiport:number:8080-host:web.k8s.orb.localhttp:paths:-path:/pathType:Prefixbackend:service:name:frontendport:number:3000-host:admin.k8s.orb.localhttp:paths:-path:/
Security Considerations
Default: Localhost Only
OrbStack restricts services to localhost by default - safe on untrusted networks.
Expose to LAN (Use with Caution)
Settings → Kubernetes → "Expose services to local network devices"
Only enable when:
Testing from mobile devices on same network
Sharing local environment with team
On trusted network
Troubleshooting
Service Not Accessible
Check service type: kubectl get svc
Verify LoadBalancer has EXTERNAL-IP (not <pending>)
Test DNS: nslookup my-app.default.svc.cluster.local
Ingress Not Working
Verify Ingress controller is running:
kubectl -n ingress-nginx get pods
Check Ingress controller has LoadBalancer IP:
kubectl -n ingress-nginx get svc
Verify Ingress resource:
kubectl describe ingress my-app
DNS Resolution Issues
# Test cluster DNS from macOS
nslookup my-service.default.svc.cluster.local
# If short names fail, use full domain# ❌ my-service.default.svc# ✅ my-service.default.svc.cluster.local
Pod IP Direct Access (Debugging)
# Get pod IP
kubectl get pods -o wide
# Connect directly (OrbStack routes pod network to macOS)
curl http://10.42.0.15:8080
Agentic Optimizations
Context
Command
Start dev (no port-forward)
skaffold dev --kube-context=orbstack
Check service IPs
kubectl get svc -o wide
Verify Ingress
kubectl get ingress
Test DNS resolution
nslookup my-app.default.svc.cluster.local
Check Ingress controller
kubectl -n ingress-nginx get pods
Get pod IPs
kubectl get pods -o wide
Run specific profile
skaffold dev -p services-only --kube-context=orbstack
Describe Ingress
kubectl describe ingress my-app
Quick Setup Checklist
Install Ingress controller (one-time)
Change service types to LoadBalancer
Create Ingress resources for pretty URLs
Remove portForward from skaffold.yaml
Set kubeContext: orbstack in deploy config
Update local .env/config to use .k8s.orb.local URLs
Commands Reference
# Start development (no --port-forward needed)
skaffold dev --kube-context=orbstack
# Run specific profile
skaffold dev -p services-only --kube-context=orbstack
# Check service accessibility
kubectl get svc -o wide
# Verify Ingress
kubectl get ingress