How sebt3/vynil works
Vynil is a Kubernetes distribution package manager: package authors build and validate packages, publish them as OCI images, and users install or manage system, service, and tenant instances through kubectl or controller reconciliation. The operator manages JukeBox package sources and instance resources; the agent provides package, lifecycle, template, and scanning commands. The README also describes signing, air-gapped workflows, and disaster recovery. Sampled excerpts confirm CLI dispatch, controller setup, and parts of the diagnostic server; some subsystem links are therefore left unspecified.
Main entry points: mod.rs Instance lifecycle · main.rs Agent CLI · manager.rs Operator manager · server.rs Diagnostic server
Components 24
Package authoring
- Agent CLI
agent/src/main.rs - Build packages
agent/src/package/build.rs - Package operations
agent/src/package/mod.rs - Package linting
agent/src/package/lint.rs - Package scanning
agent/src/boxes/file_scan.rs
Install and reconcile
- kubectl plugin
kubectl-vynil/src/main.rs - CLI actions
kubectl-vynil/src/actions.rs - Operator manager
operator/src/manager.rs - JukeBox sources
common/src/jukebox.rs - Instance resources
common/src/instanceservice.rs - Instance lifecycle
agent/src/service/mod.rs - System lifecycle
agent/src/system/mod.rs - Tenant lifecycle
agent/src/tenant/mod.rs
Kubernetes platform
- Template rendering
common/src/handlebarshandler.rs - Rhai scripts
common/src/rhaihandler.rs
Diagnostics
- Diagnostic server
server/src/server.rs - Auth and access
server/src/authz.rs - Cluster collectors
server/src/collect/mod.rs - Operator metrics
operator/src/metrics.rs
Other components
- Package authors
- kubectl user
- OCI registry
- Kubernetes API
- Diagnostic client
Connections 24
- Package authors → Agent CLI: invoke commands
- Agent CLI → Build packages: dispatches build
- Agent CLI → Package operations: dispatches package
- Agent CLI → Package linting: dispatches lint
- Agent CLI → Package scanning: dispatches scan
- Build packages → OCI registry: publishes image
- Package operations → OCI registry: reads or updates
- kubectl user → kubectl plugin: invokes commands
- kubectl plugin → CLI actions: dispatches actions
- CLI actions → Kubernetes API: manages resources
- Operator manager → Kubernetes API: watches resources
- Operator manager → JukeBox sources: loads source state
- Operator manager → Instance resources: reconciles instances
- Operator manager → Instance lifecycle: runs agent work
- Instance lifecycle → System lifecycle: supports system work
- Instance lifecycle → Tenant lifecycle: supports tenant work
- Instance lifecycle → Template rendering: renders resources
- Instance lifecycle → Rhai scripts: evaluates scripts
- Instance lifecycle → Kubernetes API: applies resources
- Diagnostic client → Diagnostic server: requests diagnostics
- Diagnostic server → Auth and access: checks access
- Diagnostic server → Cluster collectors: collects cluster data
- Cluster collectors → Kubernetes API: reads cluster state
- Operator metrics → Operator manager: exposes metrics