Releases: bluedynamics/cloud-vinyl
Releases · bluedynamics/cloud-vinyl
v0.4.2
Changelog
- c8ee129 Merge pull request #40 from bluedynamics/feat/operator-ip-in-acl
- 0f1b0ff Merge pull request #41 from bluedynamics/feat/shard-by-healthy-plumbing
- 31222df Merge pull request #42 from bluedynamics/feat/ban-support
- eeacba3 docs(plan): operator pod IP in purge ACL (#18)
- a614d9b feat(controller): pass OperatorIP to the VCL generator
- a89f75a feat(generator): add OperatorIP field to Input
- 432f8a7 feat(generator): emit BAN ACL + handler when spec.invalidation.ban.enabled
- 9e6d8e8 feat(generator): emit operator IP in vinyl_purge_allowed
- b191b06 feat(generator): honor spec.director.shard.{by,healthy} in cluster VCL
- ed5b06f fix: address v0.4.2 review findings on BAN + OperatorIP + cluster routing
- 69d94ab test(generator): red tests for OperatorIP in purge ACL
v0.4.1
v0.4.0
Changelog
- 78a5751 Merge pull request #25 from bluedynamics/fix/multi-replica-readiness
- 625b322 Merge pull request #27 from bluedynamics/fix/e2e-chainsaw-tests
- ef986fa Merge pull request #29 from bluedynamics/fix/e2e-networking
- a0f931f Merge pull request #31 from bluedynamics/fix/vcl-push-idempotent
- 945ee05 Merge pull request #33 from bluedynamics/feat/per-backend-directors
- e3c1fd3 docs(generator): clarify DirectorInfo scope + fix value list
- ee7cbf7 docs(plan): per-backend directors + EndpointSlice expansion
- 55ae724 feat(api): add per-backend director override field
- b9e8b82 feat(controller): debounce endpoint-change reconciles
- 4f167ff feat(controller): resolve backends via EndpointSlice
- d66721c feat(controller): watch EndpointSlice and reconcile owning VinylCache
- fbbf551 feat(generator): emit per-backend director in vcl_init
- 15d077e feat(webhook): default per-backend director + align debounce
- 78a5a3a fix(chart): sync CRD with config/crd/bases
- f1742c0 fix(controller): align debounce default + drop debouncer sleep tests
- 7525266 fix(e2e): fix cross-node networking in Kind cluster
- ead7933 fix(e2e): load correct agent and varnish images into Kind
- 50bf401 fix(e2e): use stock varnish:7.6 image instead of custom varnish image
- b0a5674 fix(generator): align director template branches with CRD enum
- f66d216 fix(generator): always import directors vmod
- 908d8da fix: align E2E Chainsaw tests with current operator architecture
- bf65be0 fix: only mark VinylCache Ready when all replicas have VCL
- b7f8281 fix: skip VCL push when any backend has no ready endpoints
- 5cb7385 fix: treat 'Already a VCL named' as success (idempotent push)
- 61caf12 refactor(generator): group backends by spec name with director info
- ea1775b refactor(webhook): extract applyShardDefaults helper
- ec2f202 test(controller): cover port-unusable skip and multi-slice aggregation
- 2ad2a2d test(e2e): bump vcl-validation cleanup timeout to 60s
- 3995581 test(e2e): per-backend director + backend scale-churn resilience
v0.3.2
v0.3.1
Features
- ArgoCD health check (#22) — Helm chart optionally deploys a ConfigMap with Lua health check for VinylCache resources
- Enable with
argocd.resourceCustomizations.enabled: true - ArgoCD auto-discovers via
app.kubernetes.io/part-of: argocdlabel - Maps Ready=True → Healthy, Ready=False → Degraded, no condition → Progressing
- Enable with
v0.3.0
Features
- Invalidation proxy integration (#15, #21)
- PURGE/BAN/xkey broadcast proxy on operator port 8090
- Reconciler updates PodMap and Router on VinylCache changes
- K8sTokenProvider for authenticated BAN requests to agent
- Runs on all operator replicas (not just leader)
How it works
PURGE/BAN request → invalidation Service (:8090)
→ operator pod (proxy)
→ Host header → namespace/cacheName
→ PodMap → pod IPs
→ broadcast to all pods
The proxy code (internal/proxy/) was implemented in v0.1.0 but never wired into the operator. This release adds the integration glue.
Previous releases included
- v0.2.0: Production readiness (bootstrap VCL, readiness probes,
-j none, hash-based VCL naming) - v0.2.1: ConfigMap RBAC fix
- v0.2.2: Service port rename (
cache-http)
v0.2.2
v0.2.1
v0.2.0
Production Readiness Release
This release makes cloud-vinyl production-ready by implementing the critical startup and lifecycle components from the architecture specification.
New Features
- Bootstrap VCL via ConfigMap — operator creates a placeholder VCL returning 503 "Cache initializing". Varnish starts cleanly without depending on the operator for initial VCL.
- VCL-aware readiness probe — agent
/healthreturns 503 until operator pushes real VCL. Pods are not Ready until functional. - Hash-based VCL naming — VCL name is
<namespace>-<name>-<hash[:8]>, preventing "Already a VCL named ..." errors on VCL updates.
Fixes
-j noneflag for non-root varnish operation (architecture §8.3 H4-Fix)- preStop hook with
sleep 5for graceful shutdown during rolling updates (§3.3 K3-Fix)
Startup flow
- Operator creates ConfigMap with bootstrap VCL → StatefulSet
- Varnish starts with bootstrap VCL → serves 503
- Agent
/healthreturns 503 → pod NOT Ready - Operator pushes real VCL with hash-based name
- Agent
/healthreturns 200 → pod Ready → traffic routed
Previous fixes included
- Per-namespace shared agent token (#9)
- Varnish admin CLI auth fix (challenge extraction)
- Service DNS for backends
- Open NetworkPolicy for HTTP traffic
- emptyDir volumes for varnish writable directories
- VARNISH_HTTP_PORT=8080 for stock image compatibility
v0.1.16
Fixes
- fix: create test Service in integration test for endpoint resolution
- refactor: use Service DNS names for backends (simpler than EndpointSlice IPs)
- fix: replace return(miss) with return(restart) in vcl_hit (Varnish 7.x)
- fix: allow all ingress on Varnish HTTP port in NetworkPolicy