開発中バージョンのリリースノート

22.0.0.0rc1-57

新機能

  • A driver field has been added to cluster templates, allowing an explicit driver to be selected at cluster template creation time. The driver is resolved using the following priority order:

    1. Driver explicitly provided by the user in the API request.

    2. magnum_driver property of the image referenced by the cluster template.

    3. [drivers] default_driver configuration option in magnum.conf.

    4. First alphabetically sorted driver among all available drivers.

    Administrators can now set a deployment-wide default driver by adding the following to magnum.conf:

    [drivers]
    default_driver = <driver-name>
    

    If default_driver is not set, Magnum falls back to the first alphabetically sorted driver available on the deployment.

  • Administrators can now hide a cluster template to prevent users from creating new clusters with it. Hidden templates are invisible to non-admin users — fetching one returns 404 and using it in a cluster create request returns 403. This is particularly useful for retiring a template that still has active clusters: instead of waiting for all those clusters to be deleted (which would be required before the template can be removed), administrators can simply hide it so no new clusters are created while existing ones continue to operate normally.

  • API microversion 1.13 introduces the cluster_id field in cluster responses. This field maps to the same underlying database column as stack_id and provides a driver-agnostic name for the identifier. Clients requesting microversion 1.13 or later will receive cluster_id in place of stack_id.

  • Added node_labels and node_taints fields to the NodeGroup resource so users can apply Kubernetes node labels and taints to every node in a worker nodegroup. node_labels is a dict of string key/value pairs; node_taints is a list of {key, value, effect} objects where effect is one of NoSchedule, PreferNoSchedule or NoExecute. Both fields are optional and may be supplied on create or updated via PATCH. They are surfaced from REST API microversion 1.14. Magnum stores and validates these fields; applying them to nodes is the responsibility of the driver, and drivers that do not support them ignore the fields.

アップグレード時の注意

  • k8s_fedora_coreos_v1 driver (also known as Heat-based driver) has been dropped following earlier deprecation.

  • Support for legacy admin service-user credentials in the [keystone_authtoken] configuration section has been removed. The deprecated admin_user, admin_password, and admin_tenant_name options were dropped from keystonemiddleware in the 2026.2 release. Operators must ensure that service-user credentials are configured in the [keystone_auth] section using the keystoneauth1 password auth plugin options (auth_url, username, password, project_name, etc.). Magnum will no longer fall back to [keystone_authtoken] for admin authentication and will raise an error if [keystone_auth] is not properly configured.

  • The deprecated auth_uri option in [keystone_authtoken] is no longer recognised by Magnum. This option was removed from keystonemiddleware in the 2026.2 release. Operators should use www_authenticate_uri in [keystone_authtoken] instead. Note that auth_url in [keystone_auth] is now the primary source for the Keystone endpoint used by Magnum's service-user session.

  • TLS session options (certfile, keyfile, cafile, insecure, timeout) are no longer accepted in the [keystone_authtoken] section as deprecated aliases for the [keystone_auth] equivalents. These options must be set directly in [keystone_auth] if required.

  • Keystone trust manager functionality has been dropped (Heat-based driver was the only user - and it has been removed).

廃止予定の機能

  • The stack_id field in cluster API responses is deprecated as of microversion 1.13. Clients should migrate to using cluster_id, which carries the same value and is available from microversion 1.13 onwards. The stack_id field remains available for clients using microversions prior to 1.13.

バグ修正

  • The boot_volume_size label value is passed as a string from the API. The validator now converts it to an integer before comparison.