Skip to content

Releases: amargherio/mechanic

v2025.1

10 Jan 19:28
8360ca8
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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.