27 KiB
27 KiB
Changelog
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.
Unreleased
Added
- #905 Change mirror type to url and add byte range parameter.
- #909 Add base http client and transport.
- #910 Add drain and close function.
Changed
- #906 Replace HTTP header strings with httpx constants.
- #916 Refactor OCI client options and add header configuration.
Deprecated
Removed
Fixed
- #911 Enforce use of request contexts and fix response closing.
- #914 Fix OCI client header parsing and improve tests.
Security
v0.3.0
Added
- #877 Add support for www authenticate header.
- #878 Add dial timeout configuration in Containerd mirror configuration.
- #889 Add support for content create events.
Changed
- #881 Add Variable for job name in Grafana Dashboard.
- #852 Remove use of Afero in Containerd config.
- #854 Implement unit tests for cleanup logic.
- #860 Update Go to 1.24.2.
- #864 Rename OCI client to store.
- #871 Implement OCI client and refactor debug web pulling.
- #873 Refactor web to use internal mux router.
- #875 Change debug unit formatting and add totals.
- #880 Refactor store advertisement to list content.
- #888 Refactor OCI events to support content events.
- #890 Refactor Containerd options to use config struct.
- #896 Rename package mux to httpx and refactor http helpers.
- #897 Add descriptor to header conversion.
Fixed
- #869 Fix request logging for redirects and not found pages.
- #872 Allow returning libp2p crypto priv key in linter.
- #894 Update Kind to v0.29.0 and Fix Containerd v2 support.
- #899 Handle situation where digest is missing in reigstry response header.
- #902 Disable data dir when running Spegel in Kubernetes.
v0.2.0
Added
- #832 Add delete hook to cleanup configuration from host when chart is uninstalled.
- #846 Build binaries as part of the release process.
- #848 Add support for a static bootstrapper.
- #850 Persist libp2p key to disk when data directory is set.
Changed
- #812 Upgrade to Go 1.24.1 and switch to use go tool for helm docs.
- #725 Remove use of httputil reverse proxy.
- #820 Switch to using new test context.
- #827 Add p2p options to router for optional configuration.
- #835 Refactor registry config to align with router config.
- #847 Set default values for address arguments.
Removed
- #831 Remove local address check when resolving peers.
Fixed
- #824 Fix improper image string formatting and expand tests.
- #825 Fix gopls modernize warnings.
- #826 Standardize router channel naming.
- #844 Fix p2p option naming to conform with the standard.
- #849 Fix libp2p options so field is exported in configuration.
v0.1.1
Fixed
- #807 Update golangci lint and fix new issues.
- #810 Increase timeout to avoid flakiness in conformance tests.
- #806 Fix verification of Containerd configuration with suffixes.
v0.1.0
Added
- #717 Extend tests for distribution.
- #753 Set GOMAXPROCS and GOMEMLIMIT when limits are set.
- #792 Add dev deploy recipe to simplify local development.
- #791 Add debug view to help validating Spegel.
Changed
- #747 Update Go to 1.23.6.
- #750 Rename append mirrors to prepend existing.
- #373 Apply mirror configuration on all registires by default.
- #762 Set appropriate buckets for response size
- #778 Replace interface{} with any alias.
- #784 Refactor distribution and move to OCI package.
- #787 Refactor OCI image to allow parsing without digest.
- #794 Set default memory request and limit in Helm chart.
Removed
Fixed
- #743 Remove metrics label from bootstrap service in Helm chart.
- #748 Fix topology annotation.
- #785 Fix verification of digests when parsing distribution path.
- #798 Restart Spegel if Containerd event subscription is disconnected.
- #800 Fix so that host is closed even when a bootstrap error occurs.
- #801 Fix helm values naming for additionalMirrorTargets and mirroredRegistries.
v0.0.30
Changed
- #694 Replace IP in multi address with manet.
- #693 Add commonLabels for pods.
- #699 Remove as mismatch error and replace with errors as.
- #701 Rewrite e2e tests in Go.
- #704 Update Containerd client to v2.
Fixed
- #689 Make cluster domain configurable.
- #696 Fix DNS bootstrap self check.
- #702 Refactor and add tests for p2p ready.
- #703 Fix p2p router close panic and add tests.
v0.0.29
Added
Changed
- #683 Change bootstrapper to allow returning multiple peers.
- #684 Allow bootstrappers to return multiaddress only containing IP.
- #680 Switch to using headless service for bootstrapping.
v0.0.28
Added
- #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.
Changed
- #608 Use custom proxy transport and increase idle connections per host.
Fixed
v0.0.27
Fixed
- #603 Fix append to backup always happening.
- #604 Create empty backup directory when mirror directory is empty.
v0.0.26
Removed
- #596 Remove throttling from blobs.
Fixed
- #601 Fix Containerd host mirror ordering.
v0.0.25
Added
- #578 Add possibility to override environment variable NODE_IP.
Changed
- #575 Update to Go v1.23.2.
Fixed
- #581 Skip status response verification for containerd v2
v0.0.24
Added
- #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.
Changed
- #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.
Deprecated
Removed
- #517 Remove deprecated CopyLayer function.
Fixed
- #535 Fix Docker build casing checks.
Security
v0.0.23
Added
- #388 Add support for deploying the Grafana dashboard with the Helm chart.
Changed
- #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.
Fixed
- #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.
v0.0.22
Added
- #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.
Changed
- #439 Update Go version and fix toolchain version.
Fixed
- #452 Fix Containerd Subscribe returning on any error.
Security
- #451 Bump golang.org/x/net from 0.21.0 to 0.23.0.
v0.0.21
Added
- #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.
Changed
- #395 Replace Gin with standard lib HTTP handler.
- #430 Replace XenitAB Kubernetes pkg with internal package.
Fixed
- #431 Fix import error caused by invalid file name.
v0.0.20
Added
- #416 Add image and Helm chart signing with Cosign.
Changed
- #411 Replace XenitAB pkg with internal package.
Fixed
- #412 Fix http bootstrapper arg annotation.
Security
v0.0.19
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.
Added
- #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.
Changed
- #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.
Deprecated
Removed
- #371 Remove state track retry on error.
Fixed
Security
v0.0.18
Added
- #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.
Changed
- #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.
Removed
- #327 Remove ConfigMap from RBAC.
v0.0.17
Added
- #299 Add update strategy configuration to Helm chart.
Changed
Fixed
- #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.
v0.0.16
Fixed
- #276 Fix Golang image digest to use manifest list instead of AMD64.
v0.0.15
Added
- #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.
Changed
- #253 Set klog logger to standardize output format.
Fixed
- #271 Fix Spegel running on IPVS cluster.
v0.0.14
Added
- #237 Verify discard unpacked layers setting.
Fixed
Security
- #249 Bump google.golang.org/grpc from 1.55.0 to 1.56.3
v0.0.13
Added
- #195 Fix daemonset argument namespace to use helper-defined namespace value.
Changed
- #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.
Fixed
- #233 Fix address filtering to remove localhost from host.
Security
- #235 Bump golang.org/x/net from 0.14.0 to 0.17.0.
v0.0.12
Added
- #182 Add lscr.io as default registry.
Fixed
- #181 Fix mirroring images using index files without a media type.
- #191 Fix Containerd config path verification.
Security
- #184 Bump github.com/libp2p/go-libp2p from 0.27.7 to 0.30.0.
v0.0.11
Added
Changed
- #174 Modify error handling in state tracking to avoid exiting.
v0.0.10
Added
- #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.
Changed
- #151 Refactor containerd mirror tests and remove utils package.
Removed
- #160 Remove X-Spegel-Registry header.
- #161 Remove X-Spegel-Mirror header.
- #162 Remove X-Spegel-External header.
Fixed
- #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.
v0.0.9
Changed
- #138 Set image digest in Helm chart.
Fixed
- #141 Fix platform matching and add tests for getting image digests.
v0.0.8
Added
- #125 Add retry mirroring to new peer if current peer fails.
- #127 Add configuration for resolve retry and timeout.
Changed
- #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.
Removed
- #113 Remove image filter configuration.
v0.0.7
Changed
- #82 Filter out localhost from advertised IPs.
- #89 Remove p2p route table check on startup.
- #91 Adjust tolerations and node selector.
v0.0.6
Changed
- #42 Only use bootstrap function for initial peer discovery.
- #66 Move mirror configuration logic to run as an init container.
Fixed
- #71 Fix priority class name.
v0.0.5
Added
- #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.
Changed
- #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.
Fixed
- #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.
v0.0.4
Fixed
- #26 Replace topology keys with optional topology aware hints.
v0.0.3
Added
- #18 Add support to use Spegel instance on another node.
Changed
- #21 Allow external mirror request to resolve to mirror instance.