Skip to content

Releases: bluedynamics/cloud-vinyl

v0.4.2

18 Apr 14:39
c1e0333

Choose a tag to compare

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

18 Apr 13:05
6be0c9d

Choose a tag to compare

Changelog

  • 6be0c9d Merge pull request #38 from bluedynamics/fix/probe-and-storage-propagation
  • 1f63721 fix: propagate probe fields and emit spec.storage to varnishd

v0.4.0

15 Apr 08:17
945ee05

Choose a tag to compare

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

08 Apr 14:13
e382bff

Choose a tag to compare

fix: call SetupSignalHandler() exactly once — prevents panic on startup (#23)

v0.3.1

08 Apr 14:02
a038f80

Choose a tag to compare

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: argocd label
    • Maps Ready=True → Healthy, Ready=False → Degraded, no condition → Progressing

v0.3.0

08 Apr 13:38
5b8d340

Choose a tag to compare

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

08 Apr 08:40
969c57c

Choose a tag to compare

fix: rename service port from 'http' to 'cache-http' (#14) — less ambiguous, self-documenting

v0.2.1

08 Apr 08:25
f2b7922

Choose a tag to compare

fix: add configmaps to ClusterRole RBAC permissions (missing from v0.2.0)

v0.2.0

08 Apr 08:12
8ee03ac

Choose a tag to compare

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 /health returns 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 none flag for non-root varnish operation (architecture §8.3 H4-Fix)
  • preStop hook with sleep 5 for graceful shutdown during rolling updates (§3.3 K3-Fix)

Startup flow

  1. Operator creates ConfigMap with bootstrap VCL → StatefulSet
  2. Varnish starts with bootstrap VCL → serves 503
  3. Agent /health returns 503 → pod NOT Ready
  4. Operator pushes real VCL with hash-based name
  5. Agent /health returns 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

07 Apr 22:32
a6ace20

Choose a tag to compare

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