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.
1.2.3 - 2024-12-13
- Consider PVs with ClaimRef without apiVersion and kind set to also refer to PVCs.
1.2.2 - 2024-10-16
- Filter Pod objects before storing in cache. This lowers memory usage of the HA Controller Pods.
1.2.1 - 2024-03-28
- Fixed detection of Persistent Volume Claims when deciding to fail over Pods.
1.2.0 - 2024-01-05
- Option to assume connection names refer to a Pod instead of a Node.
1.1.4 - 2023-05-22
- Wait for initial cache sync before starting the server.
1.1.3 - 2023-03-01
- Ignore non-running Pods during fail-over events.
1.1.2 - 2023-02-20
- Build with go 1.19
- Bumped dependencies
1.1.1 - 2022-09-20
- No longer attempt to parse numbers from drbdsetup status that are not relevant. This prevents issue when said numbers are outside the expected range.
1.1.0 - 2022-08-08
- Exempt Pods that are attached to other types of storage by default, unless the volumes are known to be safe (such as ConfigMap, DownwardAPI, Secret, and other readonly volumes).
- Fixed a bug that meant the manual Pod exemption from fail over via annotations would be ignored.
1.0.1 - 2022-07-25
- Fixed an issue with generated events that would lead to the controller to panic because of a nil interface.
- Immediately delete volume attachment if node is not ready.
- Fixed a concurrent map write when failing over multiple resources at once.
1.0.0 - 2022-07-21
- Complete rewrite to work as a node agent instead of relying on LINSTOR. The working principle remains the same, but fail-over is no longer (directly) dependent on uninterrupted LINSTOR communications.
- Force demotion of DRBD resources that are suspended in IO and have pods that should terminate. This enables a node to automatically recover from a stuck situation should a network interruption cause DRBD to suspend.
- Add a custom Taint to nodes that have volumes without quorum, preventing replacement pods being scheduled while the storage layer is interrupted.
- Force deletion of Pods if running Node appears not ready (i.e. it cannot confirm deletion of the Pod).
- Query Kubernetes API about available eviction methods instead of falling back to worse methods on errors.
0.3.0 - 2022-02-03
- Include
linstor-wait-until
in docker image. It is used to wait for the LINSTOR API to get ready on pod initialization.
0.2.0 - 2021-08-31
- Build for arm64. #9
- Update golang dependencies to kubernetes 1.22.
- Use
gcr.io/distroless/static
base image and run as non-root user.
0.1.3 - 2021-01-14
- This changelog
- Instruct Kubernetes to send bookmark events for watches. This ensures restarted watches start from a recent enough resource version. #6
- Fixes the resource filter applied to PVC and VA watches. A bug introduced in 0.1.2 caused the HA Controller to filter all resources (Pods, PVCs, VolumeAttachments) based on filters for Pods.
0.1.2 - 2021-01-12
--leader-election-resource-name
option added. Used to set the name of the lease resource #1
- Kubernetes Watches are now re-tried instead of crashing the whole application in case of timeouts #5
0.1.1 - 2020-12-16
- Fixed a crash caused by watching PersistentVolumeClaims instead VolumeAttachments
0.1.0 - 2020-12-15
- Initial implementation of HA Controller (watching Kubernetes and LINSTOR events, deleting Pods and VolumeAttachments)
- Deployment example
- README with motivating example