Skip to content

Shuttle Repo Structure

Hand-written Go project (no Kubebuilder). No api/, no controllers/, no CRDs, no Kustomize, no PROJECT file.

shuttle/
├── cmd/
│   └── agent/
│       └── main.go              # Manager wiring, runnable registration, signal handling
├── internal/
│   ├── runner/
│   │   ├── desiredstate.go      # Desired State Runnable
│   │   ├── snapshot.go          # Snapshot Runnable
│   │   └── capacity.go          # Capacity Runnable
│   ├── apply/
│   │   ├── namespace.go         # Namespace + isolation resources
│   │   ├── workload.go          # Deployment, Service, ConfigMap, Secret, PDB
│   │   ├── routing.go           # HTTPRoute, future SecurityPolicy
│   │   └── garbage.go           # Garbage collection
│   ├── client/
│   │   └── starbase.go          # HTTP client for Starbase API
│   ├── config/
│   │   └── config.go            # Env var parsing
│   └── types/
│       └── types.go             # Shared structs
├── deploy/
│   ├── rbac.yaml                # ClusterRole, ClusterRoleBinding, ServiceAccount
│   ├── deployment.yaml          # Shuttle Deployment manifest
│   └── servicemonitor.yaml      # ServiceMonitor for vmagent
├── Dockerfile
├── Makefile
├── go.mod
├── go.sum
├── .dockerignore
├── .gitignore
└── README.md

Cross-references

The Runnables under internal/runner/§19.3 · the apply sub-applies under internal/apply/§20.3 · the deploy/rbac.yaml ClusterRole → §22 · scaffolding steps that create this tree → §29.