Skip to content

Releases: kubernetes-sigs/kernel-module-management

v2.2.0

24 Nov 12:48
Compare
Choose a tag to compare

Improvements / Bug fixes

💻 Worker pod now pull images using the cluster's container-runtime.

By using the cluster's infrastructure we ensure that all the cluster-wide configuration applied that are respected by kubelet are also respected by KMM.

🚫 New validation in the validation webhook

The validation webhook will now ensure that all container images explicitly contain a tags/sha.

💾 Setting the firmware path is now configurable.

It is now possible to configure the path on the host in which the Module's firmware files will be written in the controller's ConfigMap.
The default value is /lib/firmware.

🐛 Fixed a bug

Fixed a bug regarding in-cluster-build modules left in invalid state after upgrading the cluster.

Installing

Using OLM (recommended)

Follow the installations instructions at OperatorHub.io for KMM or KMM-Hub.

Using make

git fetch
git checkout v2.2.0

# For KMM
make deploy IMAGE_TAG=v20241121-v2.2.0

# For KMM-Hub
make deploy-hub IMAGE_TAG=v20241121-v2.2.0

Full Changelog: v2.1.1...v2.2.0

v2.1.1

19 Jun 09:21
f3df830
Compare
Choose a tag to compare

Bug fixes

🎮 Smaller footprint in managed mode.

The following controllers are not started in managed mode (KMM_MANAGED=1) anymore:

  • BuildSignReconciler
  • PreflightValidation

In managed mode, we assume compute-intensive tasks are run by the Hub, hence those controllers serve no purpose and will not be started anymore.

➕ Normalize kernel version in labels and image tags

The kernel version can contain some special characters like + that cannot be used neither in a Kubernetes label value nor in a container image tag.
KMM will now convert all those characters to an underscore _ so that this value can be properly used internally as a resource labels or externally as container image tag.
The kernel mapping logic does not change; in literal or regexp fields, you should still target the kernel version as reported by the kubelet (in the Node resource's .status.nodeInfo.kernelVersion field).

Installing

Using OLM (recommended)

Follow the installations instructions at OperatorHub.io for KMM or KMM-Hub.

Using make

git fetch
git checkout v2.1.1

# For KMM
make deploy IMAGE_TAG=v20240618-v2.1.1

# For KMM-Hub
make deploy-hub IMAGE_TAG=v20240618-v2.1.1

Full Changelog: v2.1.0...v2.1.1

v2.1.0

25 Apr 11:36
Compare
Choose a tag to compare

New features & improvements

⏳ Optional delay for the garbage collection of build pods

The new job.gcDelay operator setting allows specifying a duration for which successful build & signing pods should be kept before they are garbage-collected.

🛂 Separate deployment for the webhook server

The webhook server is now running as a separate Deployment.

📜 CRD changes

Module

Added inTreeModulesToRemove to allow specifying a list of in-tree modules to be removed before the main out-of-tree module is loaded.
The old inTreeModuleToRemove field is still present, but deprecated.

PreflightValidation

Added version v1beta2 with a new status subresource that is compliant with OpenAPI guidelines.
Version v1beta1 is still served.

🧹 Miscellaneous

cert-manager is not a required dependency anymore when KMM is instsalled via OLM.
Images are now built with Go 1.22.

Installing

Using OLM (recommended)

Follow the installations instructions at OperatorHub.io for KMM or KMM-Hub.

Using make

git fetch
git checkout v2.1.0

# For KMM
make deploy IMAGE_TAG=v20240425-v2.1.0

# For KMM-Hub
make deploy-hub IMAGE_TAG=v20240425-v2.1.0

Changelog

List of pull requests included in this release
Read more

v2.0.2

06 Mar 15:45
2b97c9e
Compare
Choose a tag to compare

New features & improvements

🛂 Webhook for namespace deletion

A validating webhook will now verify that namespaces do not contain any Module resource before they can be deleted.
This avoids entering situations where the namespace is being deleted and KMM cannot create unloading Pods to honor Module deletion.

📜 CRD changes

  • Module: make moduleName an optional field
  • ManagedClusterModule: make spokeNamespace a required field

🧹 Miscellaneous

Bug fixes.

Installing

Using OLM (recommended)

Follow the installations instructions at OperatorHub.io for KMM or KMM-Hub.

Using make

git fetch
git checkout v2.0.2

# For KMM
make deploy IMAGE_TAG=v20240306-v2.0.2

# For KMM-Hub
make deploy-hub IMAGE_TAG=v20240306-v2.0.2

Changelog

List of pull requests included in this release

Full Changelog: v2.0.1...v2.0.2

v2.0.1

31 Jan 16:12
a468303
Compare
Choose a tag to compare

New features & improvements

🔗 Symlink support

The worker pod now extracts symbolic links from the kmod image. This means that Dockerfiles can now create symlinks from /opt/lib/modules/${kernelVersion}/host to /lib/modules/${kernelVersion} prior to running depmod to have it figure out dependencies on in-tree kmods from the host's filesystem.

🔧 New selector for the controller

The KMM operator will now run on nodes labeled with kmm.node.kubernetes.io/control-plane: ''.
This should be especially helpful in clusters without master nodes, such as HyperShift, GKE, AKS or EKS.

🧹 Miscellaneous

Bug fixes.

Installing

Using OLM (recommended)

Follow the installations instructions at OperatorHub.io for KMM or KMM-Hub.

Using make

git fetch
git checkout release-2.0

# For KMM
make deploy IMAGE_TAG=v20240131-v2.0.1

# For KMM-Hub
make deploy-hub IMAGE_TAG=v20240131-v2.0.1

Changelog

List of pull requests included in this release

New Contributors

Full Changelog: v2.0.0...v2.0.1

v2.0.0

04 Dec 14:27
19c0c72
Compare
Choose a tag to compare

New features & improvements

👷🏻 Worker Pods

The operator now creates short-lived, standalone worker Pods to load kmods instead of long-running DaemonSets.
This change improves the reliability of kmod unloads and significantly reduces resource utilization on both worker nodes and the control plane.

ℹ️ Events

The KMM operator now emits events:

  • on build & signing job creation, completion or failure (attached to the Module);
  • on kmod load or unload (attached to the Node).

💾 Binary firmwares

The firmware_class.path kernel parameter, which configures an alternate firmware lookup path, can now be set on all nodes before the kmod is loaded.
This feature is disabled by default and must be enabled in the operator configuration.

Installing

Using OLM (recommended)

Follow the installations instructions at OperatorHub.io for KMM or KMM-Hub.

Using make

git fetch
git checkout release-2.0

# For KMM
make deploy IMAGE_TAG=v20231130-v2.0.0

# For KMM-Hub
make deploy-hub IMAGE_TAG=v20231130-v2.0.0

Changelog

List of pull requests included in this release
Read more

v1.1.0

06 Jun 10:32
7752da2
Compare
Choose a tag to compare

KMM 1.1 includes the following improvements:

  • the new version field of the Module CRD gives users better control on the kmod upgrade process through node labels;
  • soft dependencies can now be specified using the new modulesLoadingOrder field of the Module CRD;
  • a validating webhook now performs thorough checks on Module and ManagedClusterModule resources when they are created or updated;
  • the new inTreeModuleToRemove field of the Module CRD allows users to unload an in-tree kmod;
  • the MOD_NAME and MOD_NAMESPACE variables are now substituted in the containerImage field and are available as default build arguments for build jobs.

Installing

KMM 1.1 depends on cert-manager.
Both installation methods outlined below install it automatically.

Using make

git fetch
git checkout release-1.1

# For KMM
make deploy IMAGE_TAG=v20230606-v1.1.0

# For KMM-Hub
make deploy-hub IMAGE_TAG=v20230606-v1.1.0

Using operator-sdk

When using this method, KMM and KMM-Hub have to be installed in separate namespaces.

# For KMM
operator-sdk run bundle gcr.io/k8s-staging-kmm/kernel-module-management-operator-bundle:v20230606-v1.1.0

# For KMM-Hub
operator-sdk run bundle gcr.io/k8s-staging-kmm/kernel-module-management-operator-hub-bundle:v20230606-v1.1.0

Changelog

List of pull requests included in this release
Read more

v1.0.0

09 Feb 10:47
5d7ef28
Compare
Choose a tag to compare

This is the initial release of Kernel Module Management.

Full Changelog: https://github.com/kubernetes-sigs/kernel-module-management/commits/v1.0.0

Bundles

These bundles can be installed with the operator-sdk run bundle <image> command.

Bundle Image
KMM gcr.io/k8s-staging-kmm/kernel-module-management-operator-bundle:v20230129-5d7ef28
KMM-Hub gcr.io/k8s-staging-kmm/kernel-module-management-operator-hub-bundle:v20230129-5d7ef28

Images

Component Image
KMM gcr.io/k8s-staging-kmm/kernel-module-management-operator:v20230129-5d7ef28
KMM-Hub gcr.io/k8s-staging-kmm/kernel-module-management-operator-hub:v20230129-5d7ef28
Signing image gcr.io/k8s-staging-kmm/kernel-module-management-signimage:v20230129-5d7ef28