All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- #576 Add support for range requests for blobs.
- #621 Added Mermaid diagrams documentation to help explain Spegel's inner workings.
- #629 Document how to use multiple Spegel deployments in the same cluster.
- #661 Add allocs to pprof endpoints.
- #608 Use custom proxy transport and increase idle connections per host.
- #603 Fix append to backup always happening.
- #604 Create empty backup directory when mirror directory is empty.
- #596 Remove throttling from blobs.
- #601 Fix Containerd host mirror ordering.
- #578 Add possibility to override environment variable NODE_IP.
- #575 Update to Go v1.23.2.
- #581 Skip status response verification for containerd v2
- #538 Replace mock OCI client with in memory client.
- #552 Add support for VerticalPodAutoscaler in the Helm chart.
- #556 Add configuration for revisionHistoryLimit in the Helm Chart.
- #573 Use buffer pool for proxy copying data.
- #518 Extend tests for image.
- #519 Extend tests for containerd.
- #520 Add tests for metrics.
- #536 Update Go version to 1.22.5.
- #547 Set blob content type to disable detection.
- #553 Re-use resources value for initContainer in the Helm Chart.
- #517 Remove deprecated CopyLayer function.
- #535 Fix Docker build casing checks.
- #388 Add support for deploying the Grafana dashboard with the Helm chart.
- #475 Move resolving ref to digest to manifest handler.
- #477 Refactor distribution ref to simplify registry routing.
- #479 Enable goimports linter and fix errors.
- #480 Enable ireturn linter and fix errors.
- #481 Enable perfsprint linter and fix errors.
- #482 Enable gocritic linter and fix errors.
- #483 Update errcheck linter configuration and fix errors.
- #487 Move mirror metrics code to mirror handler.
- #488 Update existing registry errors and add more detail.
- #495 Modify e2e tests to allow reusing the same kind cluster.
- #498 Update to Go 1.22.
- #499 Add paralleltest linter and set all unit tests to run in parallel.
- #501 Rename mock router to memory router and add tests.
- #507 Change default resolve timeout to 20ms.
- #460 Fix environment variable for http-bootstrap-addr flag.
- #471 Fix handler key in request logging.
- #490 Close immediate channel after writing to it to close wait group in merge logic.
- #491 Fix so that resolve timeout does not cancel mirroring attempts.
- #496 Fix p2p bootstrap to run on failed readiness check.
- #435 Add pprof endpoints to enable profiling.
- #434 Add optional Containerd local content store to increase serve performance.
- #438 Set host path type for Containerd socket.
- #449 Replace zapr with slog and add log level configuration.
- #439 Update Go version and fix toolchain version.
- #452 Fix Containerd Subscribe returning on any error.
- #451 Bump golang.org/x/net from 0.21.0 to 0.23.0.
- #421 Add conformance tests to e2e test.
- #424 Add option to append mirror configuration instead of overwriting.
- #429 Add metrics to measure duration to resolve peers.
- #395 Replace Gin with standard lib HTTP handler.
- #430 Replace XenitAB Kubernetes pkg with internal package.
- #431 Fix import error caused by invalid file name.
- #416 Add image and Helm chart signing with Cosign.
- #411 Replace XenitAB pkg with internal package.
- #412 Fix http bootstrapper arg annotation.
Important
The Spegel repository has been moved from XenitAB to a new GitHub organization. Make sure to update the organization in the image and chart references.
- #335 Add k3s to compatibility guide.
- #359 Extend OCI client tests.
- #365 Add support for throttling blob write speed.
- #386 Add contributing guide.
- #391 Add documentation for EKS specific Containerd configuration.
- #393 Add environment variable configuration support.
- #394 Add
cgr.dev
to default registry mirrors in the Helm chart. - #398 Document DigitalOcean incompatibility.
- #355 Rename OCI function names.
- #356 Refactor OCI client test to simplify testing multiple implementations.
- #357 Replace mock Containerd store with real upstream store.
- #367 Update Go image to 1.21.7.
- #376 Change go directive to 1.21.
- #383 Bump libp2p to v0.33.0, replace deprecated Pretty function
- #397 Replace CopyLayer with GetBlob.
- #400 Update org imports from xenitab to spegel-org.
- #402 Update tests to use spegel-org instead of xenitab.
- #371 Remove state track retry on error.
- #331 Document possible modifications required for k8s-digester.
- #337 Add HTTP bootstrapper.
- #340 Add Talos to compatibility.
- #343 Implement image event and add support for delete events.
- #344 Add support for multi arch images.
- #347 Add support for a custom http transport when proxying requests.
- #352 Add lip2p options to router.
- #319 Move metrics definitions to separate package.
- #322 Refactor type of router resolve.
- #325 Refactor bootstrap to exit on error.
- #326 Clean up routing interface.
- #328 Move remaining packages to pkg.
- #342 Defer Containerd client creation until first accessed.
- #348 Change registry configuration to options.
- #349 Adjust router peer channel buffer size.
- #327 Remove ConfigMap from RBAC.
- #299 Add update strategy configuration to Helm chart.
- #309 Fix label selectors on service monitors and metrics service.
- #279 Fix broken default value for additional mirror registries.
- #284 Fix Spegel support for ipv6.
- #276 Fix Golang image digest to use manifest list instead of AMD64.
- #270 Add tests for local and external service port.
- #262 Enable misspell linter and fix spelling mistakes.
- #263 Enable testifylint linter and fix errors.
- #269 Set Go image version with digest in Dockerfile.
- #253 Set klog logger to standardize output format.
- #271 Fix Spegel running on IPVS cluster.
- #237 Verify discard unpacked layers setting.
- #249 Bump google.golang.org/grpc from 1.55.0 to 1.56.3
- #195 Fix daemonset argument namespace to use helper-defined namespace value.
- #164 Update Go to 1.21.
- #211 Replace factory with adress filter to remove loopback addresses.
- #219 Use release name instead of namespace for name of leader election configmap.
- #215 Support for servicemonitor labels, interval and timeout in helm chart.
- #233 Fix address filtering to remove localhost from host.
- #235 Bump golang.org/x/net from 0.14.0 to 0.17.0.
- #182 Add lscr.io as default registry.
- #181 Fix mirroring images using index files without a media type.
- #191 Fix Containerd config path verification.
- #184 Bump github.com/libp2p/go-libp2p from 0.27.7 to 0.30.0.
- #174 Modify error handling in state tracking to avoid exiting.
- #145 Add new field to override Helm chart namespace.
- #153 Add option to disable resolving latest tags.
- #156 Add validation of mirror configuration on start.
- #151 Refactor containerd mirror tests and remove utils package.
- #160 Remove X-Spegel-Registry header.
- #161 Remove X-Spegel-Mirror header.
- #162 Remove X-Spegel-External header.
- #152 Fix image parsing to allow only passing digest through image reference.
- #158 Fix Containerd verify with check for empty configuration path.
- #163 Remove unneeded namespace in role binding.
- #138 Set image digest in Helm chart.
- #141 Fix platform matching and add tests for getting image digests.
- #125 Add retry mirroring to new peer if current peer fails.
- #127 Add configuration for resolve retry and timeout.
- #107 Refactor image references with generic implementation.
- #114 Move mirror configuration to specific OCI implementation.
- #117 Update Containerd client to 1.7.
- #126 Refactor registry implementation to not require separate handler.
- #132 Extend tests to validate single node and mirror fallback.
- #133 Use routing table size for readiness check.
- #113 Remove image filter configuration.
- #82 Filter out localhost from advertised IPs.
- #89 Remove p2p route table check on startup.
- #91 Adjust tolerations and node selector.
- #42 Only use bootstrap function for initial peer discovery.
- #66 Move mirror configuration logic to run as an init container.
- #71 Fix priority class name.
- #29 Make priority class name configurable and set a default value.
- #49 Add registry.k8s.io to registry mirror list.
- #56 Add gcr.io and k8s.gcr.io registries to default list.
- #32 Update Go to 1.20.
- #33 Remove containerd info call when handling manifest request.
- #48 Replace multierr with stdlib errors join.
- #54 Refactor metrics and add documentation.
- #51 Filter tracked images to only included mirrored registries.
- #52 Return error when image reference is not valid.
- #55 Fix filters by merging them into a single statement.
- #53 Include error from defer in returned error.
- #26 Replace topology keys with optional topology aware hints.
- #18 Add support to use Spegel instance on another node.
- #21 Allow external mirror request to resolve to mirror instance.