OrbStack-optimized Skaffold for local Kubernetes dev without port-forward. Use when configuring Skaffold with OrbStack, k8s.orb.local, LoadBalancer, or eliminating port-forward.
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
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