Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: amargherio/mechanic

v2025.10

15 Oct 19:21
eed6ecb

Choose a tag to compare

With the 2025.10 release, this is the last planned release for 2025, and the penultimate release for mechanic. In line with #114, the final project release will happen in January of 2026, after which security patch releases will be the only updates. At the time the AKS platform functionality is made generally available, mechanic container images will be removed and the project will be archived.

🚀 Features

  • Config hot reloading (#116)

🐛 Bug Fixes

  • Checking optional drain conditions when bypassing NPD (#115)

📚 Documentation

  • Updating README to reference upstream AKS feature request

v2025.7

21 Jul 17:19

Choose a tag to compare

This represents the third release of Mechanic for 2025.

Of note, this release will no longer provide a Windows 2019 container image; GitHub Actions has retired it's Windows 2019 images as of 2025-06-30 (actions/runner-images#12045). If you do need Windows 2019 support (or have Windows 2019 node pools that you need to build images for), you can still manually build a 2019 image and push to your own repository.

🚀 Features

  • Bypassing node problem detector and manually querying IMDS (#99)

🎨 Styling

  • Gofmt -s for the internal logger

⚙️ Miscellaneous Tasks

  • Fixing git-cliff config to link out to calver
  • Reverting win2019 back to 2025.4 release
  • Removing win2019 container build logic

v2025.4

29 Apr 20:13

Choose a tag to compare

🚀 Features

  • Adding support for optional drain conditions (#73)

📚 Documentation

  • Updating README and fixing markdown formatting in CONTRIBUTING

v2025.1

10 Jan 19:28
8360ca8

Choose a tag to compare

The first release in 2025 for mechanic represents some house cleaning and administrative stuff. There were some dependency version bumps to account for new security bulletins and the project transitioned from SemVer to CalVer. SemVer didn't make a lot of sense to me based on what mechanic brings to the table.

⚙️ Miscellaneous Tasks

  • Bumping the image version in yamls for 2025.1

v1.0.0 - Open for business

07 Nov 19:40

Choose a tag to compare

With this release, the targets for a v1.0.0 stable release of mechanic have been hit. At this time, this should handle maintenance events correctly and can be depended on for production workloads.

This release also builds functionality for customizing drain conditions and drain behavior (i.e. not draining on a preempt or another change that would deviate from the default behavior). You'll also be able to track mechanic operations for a given node by using the newly-available trace ID!

The default manifests used as the base for Kustomize now use project-provided images pulled from the GitHub Container Registry associated with this repo.

[1.0.0] - 2024-11-07

🚀 Features

  • Adding support for customized drain conditions (#20)
  • Opentelemtry tracing implementation and updates to logging (#36)

🐛 Bug Fixes

  • Updated build components to handle distroless vs regular images
  • Updating UncordonNode to correctly pull the values from the context
  • Fixed a bad reference to the ContextValues struct when extracting it from the context in a function

🚜 Refactor

  • Updating the container base runtime images to use Azure Linux 3.0

⚙️ Miscellaneous Tasks

  • Project docs updates
  • Working through changes to Goreleaser config
  • Adding multiplatform support for Linux and Windows and building public images
  • Updating tracer package to be correct for mechanic
  • Fixing typo in push trigger
  • Testing artifact download and extract
  • Fixing podman manifest push for multi-arch linux images
  • Windows image builds (#30)
  • Windows 2019 and 2022 YAML updates (#37)
  • Increasing golangci-lint timeout
  • Fixing workflow triggers

There's also a multitude of fixes related to build workflows that aren't included under the Miscellaneous section.

v0.2.0

24 Sep 18:17

Choose a tag to compare

With the release of v0.2.0, mechanic has a completed set of basic functionality and is capable of parsing VMEventScheduled node conditions and for live migrations and conducting cordon and drain operations on impacted nodes.

This is the baseline function and #1 will expand on this capability by adding additional configuration and customization for various events.

At this time, mechanic is potentially ready for use in critical or production systems, although extensive testing and validation of behaviors is strongly encouraged. Use in non-critical/non-prod environments is an appropriate target for this pre-1.0.0 release.

There's no further releases expected between this release and the 1.0.0 stable release. See the CHANGELOG for a full list of changes in this release.

[0.2.0] - 2024-09-24

🚀 Features

  • Emit kubernetes events for node operations
  • Add logic to sync the node state with mechanic internal state on start

🐛 Bug Fixes

  • (test) Fixing test failures related to changes to context values
  • Fixing a missed logger call in config
  • Imds updates to fix document incarnation parsing
  • Updates to DocumentIncarnation type in ScheduledEventResponse
  • Corrected error when casting Resources JSON array to []string from []interface{}
  • Duration was being incorrectly cast as an int - needed float64
  • Fixed cordon labeling logic bug and updating drain to address a segfault in the drain helper calls
  • (refactor) Changing how appstate is used and updated
  • (refactor) Updating log messaging to include state and reduce volume
  • Updated IMDS logic for retries on EOF and EOF handling
  • Resolved duplicate node issue in node tests
  • Updating justfile to fix syntax errors
  • Added a call to get the node object before performing the cordon validation so we don't work on outdated objects

🚜 Refactor

  • Adding in app state handling to reduce unnecessary kubernetes API calls
  • Pulling app state and context values out into correct packages and updating the cordon/uncordon logic
  • Updating IMDS components to return only errors and work to update app state with shouldDrain logic
  • Reworked node update logic and added additional logging/handling with appstate
  • Adding better handling for parsing events in the IMDS response
  • Split logic for checking if uncordon is needed and if there's drainable node conditions
  • Removed appstate sync function to prevent circular imports
  • Moved the node cordon check and node condition check into the node package
  • State locking and sync across update calls
  • Fixing some of the cordon validation logic
  • Changed mutex unlock defer to include logging

⚙️ Miscellaneous Tasks

  • Fixing accidental image changes
  • Updating dependency versions
  • (lint) Fixing golangci-lint failures
  • (release) Scaffolding out kustomize structure for daemonset builds
  • (release) Finishing initial work for kustomize deploy
  • (ci) Fixing linting checks
  • (lint) Fixing lint findings with mutex added to app state
  • (release) Added command to dockerfile for updating image packages prior to build completing

v0.1.2

15 Jul 20:35

Choose a tag to compare

v0.1.2 Pre-release
Pre-release

[0.1.2] - 2024-07-15

🐛 Bug Fixes

  • Added missing logic to label nodes when we cordon them

⚙️ Miscellaneous Tasks

  • Repo maintenance
  • Mistake in dependabot config

For the full project change log across all versions, please see CHANGELOG.md

v0.1.1

12 Jul 14:29

Choose a tag to compare

v0.1.1 Pre-release
Pre-release

[0.1.1] - 2024-07-12

🐛 Bug Fixes

  • Added handling for freeze events since they may not be live migrations all the time
  • Minor fixes in IMDS and related test logging
  • Typo for golangci-lint in the workflow

🧪 Testing

  • Adding tests for imds and node packages

⚙️ Miscellaneous Tasks

  • Adding linting config
  • Updating deploy yamls to move mechanic DS and service account into their own namespace

For the full project change log across all versions, please see CHANGELOG.md

v0.1.0

10 Jul 18:24

Choose a tag to compare

v0.1.0 Pre-release
Pre-release

This is the first notable release for mechanic. At this point, there's no gross functional issues I'm aware of. There may still be some monsters lurking around that haven't been uncovered yet, but it's stable enough to be tested in a non-production environment as a POC.