Releases: kubernetes-sigs/cluster-api
v0.3.21
v0.3.20
v0.4.0
v0.4.0, The stability focused release
Welcome to v0.4 / v1alpha4. This release is a major step forward in our API and code stability. There are a number of breaking changes in this release and a large list of bug fixes.
🔦 Highlights
- Our test matrix, for both end-to-end and integration, has been greatly extended in this release.
- KubeadmControlPlane now supports automatic remediation (when setup with MachineHealthCheck), extended mutable spec fields, and the ability to customize the rollout strategy.
- MachineHealthCheck is now more flexible, with new capabilities such as external remediation and skipping remediation on paused machines.
- Externally managed infrastructure: infrastructure provider can give the ability to external systems to reconcile their own InfraCluster objects (e.g. AzureCluster, AWSCluster, etc).
- Clusterctl has been improved, with a new
generate
command to replaceconfig
, an option to view optional template variables and their defaults, and a newalpha rollout
command.
Upgrading from v0.3
Users
To upgrade from a running management cluster based on v0.3.x and v1alpha3 APIs, follow these instruction in the book.
Providers
For all providers or developers implementing Cluster API, please follow the dedicated instructions in the book.
📝 Proposals
- Cluster API Provider Operator (#3833)
- Insulate users from kubeadm API version changes (#4170)
- Add support for infrastructure cluster resources to be managed externally (#4135)
- Windows Support (#3616)
- Replace ExternalRemdiationTemplate with RemediationTemplate in MHC proposal (#4528)
- Update KCP proposal disambiguating healthcheck (#4093)
- Update KCP proposal with scale in (#3857)
- Update spot instances proposal with interruptible label setting (#3817)
⚠️ Breaking Changes
- Update Go to
1.16
- Update Kind to
v0.11.x
(#3815) - Upgrade cert-manager to
v1.1.0
(#4013) - The management cluster minimum Kubernetes version is
v1.19.1
(#3746) - Use separate service accounts for each manager (#4245)
- Remove
kube-rbac-proxy
and expose metrics onlocalhost:8080
(#4640) - MachineDeployment
MaxUnavailable
andMaxSurge
values: drop usage of deprecatedGetValueFromIntOrPercent
in favour ofGetScaledValueFromIntOrPercent
(#4532)
small impact: Only values allowed are of type Int or Strings with an integer and percentage symbol e.g5%
. - MachineHealthCheck: node startup timeout now requires control plane initialized and cluster infrastructure readiness before starting the countdown (#3752)
- MachineDeployment, MachineSet, and MachinePool Machine's template metadata now only exposes labels and annotations (#4363)
impact: The metadata section for templated objects (for example MachineDeployment'sspec.template.metadata
) was exposing non-functional fields like name, generateName, namespace, or ownerReferences; these fields weren't used anywhere in the codebase and have been removed. - Align flag names with upstream Kubernetes components (#3934)
impact:--metrics-addr
==>--metrics-bind-addr
--leader-election ==> --leader-elect
- Run mutating, validating, and conversion webhooks with managers (#3985)
impact: Previously webhooks were running in a different namespace from the manager (capi-webhook-system
). To simplify our deployment model, our published images and binaries now run the webhook server by default.
Clusterctl
- Add
--raw
flag for clusterctl generate provider subcommand (#4768) - Use native zsh completion (#4113)
- When the build is on v1alpha4 should not upgrade to v1alpha3 contract (#4202)
- The infrastructure provider DigitaloOcean was renamed to digitalocean (previously do) (#3809)
- Deprecate
clusterctl config
in favor ofclusterctl generate
(#4584)
Kubeadm Control Plane
- Move
spec.nodeDrainTimeout
tospec.machineTemplate.nodeDrainTimeout
(#4815) - Rename
spec.upgradeAfter
tospec.rolloutAfter
(#4535) - Stop updating and using Kubeadm's
ClusterStatus
with Kubernetes v1.22 (#4643) - Support metadata for machines under
spec.machineTemplate.metadata
and propagate to all templated resources (#4644)
Kubeadm Bootstrapper
- Remove deprecated Machine
spec.bootstrap.data
(#4000) - Default Kubelet cgroupDriver to systemd for Kubernetes >= 1.21 (#4236)
- Generate kubeadm config files under
/run/kubeadm
instead of/tmp
(#3776)
Experimental Features
- Change
MachinePool
experiment API group to cluster.x-k8s.io (#4574) - Remove unused MachinePool
spec.strategy
(#3990)
⚠️ 👩💻 Breaking Changes for developers
- Update Controller Runtime to
v0.9.x
(#4752) - Introduce the
sigs.k8s.io/cluster-api/test
Go Module (#4713)
moderate impact: importing the test e2e framework or the docker infrastructure provider (CAPD) now requires a new go module dependency and areplace
directive for Cluster API in yourgo.mod
. - Move envtest setup under internal/envtest (#4698)
small impact: the package is not functional if used outside of the Cluster API repository. - Remove
helpers.NewFakeClientWithScheme
(#4690)
small impact: The function was previously used with the Controller Runtime fake client which did not initialize objects' ResourceVersion, this has been fixed upstream and now removed. - Accept options in
remote.NewClusterCacheTracker
(#4693)
small impact: This function was accepting positional arguments which have now been replaced by an option-based struct. - Remove
RequeueAfterError
(#3929) - Unexport MachineHealthCheck
patchUnhealthyTargets
method (#4579) - Remove Kubeadm DNS type field from types (#4547, #4516)
impact: This field was always defaulted tocoreDNS
and was immutable. - Remove ClusterConfiguration.UseHyperKubeImage from v1alpha4 (#4545)
- Clean up deprecated variables/functions in v1alpha4 (#4078)
- Remove the example provider (#3992)
- Move version package from
cmd/version
toversion
(#4070) - Add GVK object validation to patch helper (#4212)
minimal impact: This change adds extra validation to the helper library, a patch helper created with a specific GVK can only be used with that GVK throughout its lifetime. - Set user agent and timeout for remote cluster client (#4060)
- Remove deprecated
DeleteNodeAnnotation
annotation (#3955) - Add required coordination/leases RBAC for new default Controller Runtime manager leader election method (#3756)
small impact: RBAC permissions have been updated for all manager. - Add sentinel file to signal successful bootstrapping (#4084)
Test Framework
- Add MachinePool to log collector (#4575)
- Remove deprecated functions (#3741, #3742)
- Resolve
CNI_RESOURCES
without using env vars (#3896) - Wait for all the machine to exist again after remediation (#4415)
- Add result parameter to ApplyClusterTemplateAndWait (#4125)
- Use Kind's default network in CAPD (#4002)
Clusterctl library
- Make clusterctl support for cert-manager more flexible (#4748)
- Add
--raw
flag for clusterctl generate provider subcommand (#4768) - Adapt clusterctl to webhook deployed with managers (#4297)
- Rename clusterctl
client/inventory.GetDefaultProvider<>
toGetProvider<>
(#4696) - Remove clusterctl
--watching-namespace
(#4666) - Remove clusterctl management groups (#4668)
- Remove clusterctl delete
--namespace
flag (#4674) - Block execution when used with v1alpha3 management clusters (#4199)
- Deprecate
Provider.WatchedNamespace
(#4694) - Remove embedded metadata from clusterctl (#4033)
- Remove hard code manifest version and hash (#3918)
✨ New Features
- Add Cluster API Provider Nested (#4792, #4793)
- Add Cluster API Provider GCP (#4001)
- CAPD: Add ipv6 support (#4558)
- Add watch label to allow multiple manager instances (#4119)
- Add externally managed annotation and predicate (#4303)
- Clusterctl: Show required and defaults in
clusterctl generate cluster <name> --list-variables
(#4645) - Clusterctl:
alpha rollout pause/resume/undo/restart
for MachineDeployments (#4054, #4098, #3838) - KubeadmControlPlane: Make NTP settings mutable in webhook validations (#4798)
- KubeadmControlPlane: Add rollout strategy support for KCP (#4073)
- KubeadmControlPlane: Make KCP Spec mutable (#3994)
- KubeadmControlPlane: KCP remediation (#3956)
- KubeadmControlPlane: Mark specific KCP machines with delete annotation for scaling down (#3948)
- MachineDeployment: Support deletePolicy (#3773)
- MachineDeployment: Add support for
OnDelete
rollout strategy (#4346) - MachineDeployment: Add annotation support to
util.CloneTemplate
to pass them down from templates to machines (#4568) - MachineHealthCheck: Allow users to disable NodeStartupTimeout (#4471)
- MachineHealthCheck: Add support to skip Machine remediation, and respect paused Machines (#4168)
- MachineHealthCheck: Add
remediationsAllowed
field to status (#3884) - MachineHealthCheck: Support external remediation (#3882)
- MachineHealthCheck: Adds machine health check conditions to Machine Ready condition (#3705)
- MachineHealthCheck: Support range of values for unhealthy machines in machine health check spec (#4128)
- Label interruptible nodes (#3668)
🐛 Bug Fixes
- Cluster: Include MachinePool objects in descendant count when deleting a Cluster (#4295)
- Machine:
status.phase
should beprovisioned
when there is a ProviderID and no Node yet (#4787) - Machine: Add ability for the nodeToMachines mapper to filter by Cluster's name and namespace (#4513)
- Machine: Node deletion should check the cause of the error (#3966)
- MachineDeployment: ...
v0.4.0-rc.0
🚨 This is a RELEASE CANDIDATE. Use it only for testing purposes, if you find any bugs file an issue.
v0.4.0-beta.1
🚨 This is a BETA RELEASE. Use it only for testing purposes, if you find any bugs file an issue.
v0.3.19
v0.4.0-beta.0
🚨 This is a BETA RELEASE. Use it only for testing purposes, if you find any bugs file an issue.
v0.3.18
Changes since v0.3.17
🐛 Bug Fixes
- CAPD: Fix for Linux security update to not set conntrack sysctls (#4728)
🌱 Others
- Backport of conformance updates for Kubernetes 1.22 (#4766)
- Bump github.com/coredns/corefile-migration from 1.0.11 to 1.0.12 (#4743)
Thanks to all our contributors! 😊
v0.3.17
Changes since v0.3.16
⚠️ Breaking Changes
- KCP: Stop updating and using Kubeadm's ClusterStatus with Kubernetes v1.22 (#4485)
All the tools built on top of CAPI should do the same in preparation for Kubernetes v1.22
🐛 Bug Fixes
- Allow KCP remediation when the etcd member being remediated is missing (#4591)
- Fix clusterctl config cluster regression preventing to run the command before the Kubernetes cluster exists (#4578)
- Fix clusterctl config cluster regression preventing to run the command on empty clusters (#4560)
🌱 Others
- Upgrade kube-rbac-proxy to v0.8.0 (#4639)
- Update KCP remediation to support > 1 replicas (#4595)
- Include metadata for the CAPI v0.3 releases (#4589)
- Update Azure Provider Prerequisites link in quick start (#4539)
Thanks to all our contributors! 😊
v0.3.16
Changes since v0.3.15
🐛 Bug Fixes
- KubeadmControlPlane: Fix a CoreDNS upgrade from v1.20 to v1.21 (#4481)
- KubeadmControlPlane: maxSurge field to be mutable (#4438)
- Make manifests use
cert-manager.io/v1alpha2
(#4411) - Adds a test helper to all mutating webhooks to ensure defaulting passes validation (#4452)
Thanks to all our contributors! 😊