Architecture
CRD Relationships
graph TD
CachedImage -->|references| PullPolicy
CachedImageSet -->|references| PullPolicy
CachedImageSet -->|references| DiscoveryPolicy
Package Dependencies
graph LR
cmd/main.go --> internal/controller
internal/controller --> api/v1alpha1
internal/controller --> internal/discovery
internal/controller --> internal/metrics
internal/controller --> internal/pacing
internal/controller --> internal/podbuilder
internal/pacing --> api/v1alpha1
internal/pacing --> internal/podbuilder
internal/podbuilder --> api/v1alpha1
Reconciler → CRD Mapping
| CRD | Controller | Dependencies |
|---|---|---|
| CachedImage | internal/controller/cachedimage_controller.go | podbuilder, pacing, metrics |
| CachedImageSet | internal/controller/cachedimageset_controller.go | podbuilder, pacing, metrics |
| DiscoveryPolicy | internal/controller/discoverypolicy_controller.go | podbuilder, pacing, metrics |
| PullPolicy | (config-only) |
Pull Mechanism
sequenceDiagram
participant CR as CachedImage
participant Ctrl as Controller
participant Pace as Pacing Engine
participant K8s as Kubernetes API
participant Node as Kubelet
CR->>Ctrl: Reconcile triggered
Ctrl->>Pace: Request pull slot
Pace-->>Ctrl: Slot granted
Ctrl->>K8s: Create Pod (nodeName=target)
K8s->>Node: Schedule Pod
Node->>Node: Pull image (kubelet)
Node-->>K8s: Pod succeeds
K8s-->>Ctrl: Watch event
Ctrl->>CR: Update status (Ready)
Last updated on