Releases: kubernetes-sigs/cluster-api
v0.3.8
Changes since v0.3.7
🐛 Bug Fixes
- ClusterResourceSetBinding is now deleted when the assciated cluster is deleted (#3366)
- KubeadmControlPlane: Deletion reconciliation should not use RequeueAfterError (#3386)
- KubeadmControlPlane: Fix rollout detection logic when ClusterConfiguration is nil (#3356)
- KubeadmControlPlane: rollout maintains even distribution of failure domains (#3405)
📖 Documentation
- Add note about cluster name validation for azure (#3423)
- Escape quotes in AZURE_JSON_B64 (#3414)
- Add CRD relationships diagrams (#3267)
- Update CAEP template with requirements and security model (#3295)
- Improve clusterctl move doc (#3355)
- Update CAPZ quickstart variables to include new AZURE_JSON_B64 secret (#3303)
- Add details about lifecycle/active in the documentation (#3347)
- Improve HealthCheck docs (#3305)
🌱 Others
- Promote CecileRobertMichon as maintainer (#3314)
- Add watch for ClusterResourceSet resources (#3410)
- Add generate yaml subcommand to clusterctl (#3406)
- Add a make target to generate test coverage report (#3310)
- Update to Go 1.13.14 (#3431)
- Add v0.7 to the embedded metadata (#3412)
- CRS should return errors when trying to apply custom resources (#3402)
- Fix shellcheck install script (#3409)
- Fix e2e testing race condition when running ClusterResourceSetBinding (#3394)
- Add deprecation notice for RequeueAfterError (#3387)
- Add exp/util MachinePool helpers (#3392)
- Wrap error so as to not lose context (#3411)
- Remove RequeueAfterError usage from reconcileHealth (#3388)
- Log when and why a machine is marked for remediation (#3385)
- Fix logging comparison between conditions patch (#3382)
- Update controller-runtime to v0.5.9 (#3381)
- Add cmp.Diff to condition patch conflicts (#3377)
- Only look at Group and Kind for GetOwnerCluster (#3374)
- Add version ldflags to docker-build make targets (#3369)
- Fix tilt with envsubst (#3361, #3378)
- Add MachinePool feature gate defaults to CABPK (#3362)
- Add CAPD control plane toleration (#3320)
- Add machine filters tests (#3334)
- Add test for UpdateCoreDNS (#3333)
- Fix typo in components flags feature gates (ClusterResourceSet) (#3341)
- Support a list of maps in tilt-settings (#3346)
Thanks to all our contributors! 😊
v0.3.7
Changes since v0.3.6
📢 Starting with this release, clusterctl
is required to install published components files
Update to the latest released version of clusterctl before to install or upgrade component files, kubectl apply
individual yaml files is not supported or suggested. Starting with this release (v0.3.7), clusterctl
supports extended variable template substitutions, if you encounter any issues related to templating or environment variables update to the latest version or file an issue.
⚠️ Breaking Changes
- clusterctl: log.Log is now exposed correctly as logr.Logger (#3290) — Impact: Clients using the logr methods should have no impact, other clients should switch to this interface instead of the old delegating logger one which exposed internal bits.
- Use cache tracker to get a client for remote clusters (#3154) — Impact: This PR removed
WatchInput.CacheOptions
when creating a new watcher on a remote cluster because it would only be respected once. If you need to set custom variables (e.g. scheme or rest mapper) for the cache, they're now inherited from the Manager's passed in when creating theClusterCacheTracker
.
✨ New Features
- Introduce ClusterResourceSet (#3107, #3013) — ClusterResourceSet (CRS) is a new experimental feature built into Cluster API, it can be enabled by supplying
--feature-gates="ClusterResourceSet=true"
to the manager and webhook deployment flags. - KubeadmControlPlane: Users should now be able to mutate node registration options (#3324) — Note: If you're modifying NodeRegistrationOptions, make sure to supply the same information both under InitConfiguration and JoinConfiguration.
- KubeadmControlPlane: Users should now be able to disable
kube-proxy
management in KCP usingcontrolplane.cluster.x-k8s.io/skip-kube-proxy
annotation (#3319) - KubeadmControlPlane: Users should now be able to disable CoreDNS management using
controlplane.cluster.x-k8s.io/skip-coredns
annotation (#3023) - KubeadmControlPlane: Regenerate
kubeconfig
secrets before the client certificates expire (#3140) - KubeadmControlPlane: Support adopting existing Machines (#2489)
- clusterctl: Support for variable defaulting with envsubst (#3270) — A new set of features have been added to clusterctl default simple templating engine, we now support more than just simple substitutions, see https://cluster-api.sigs.k8s.io/clusterctl/provider-contract.html#variables for more information about variable substitution.
- clusterctl: Support pluggable templating by adding an interface (#3115)
- clusterctl: Add support for -o yaml in
clusterctl config repositories
command (#3041) - MachinePool: Add support for FailureDomains (#3157)
- MachinePool: Add support for
kubectl scale
(#3165) - CABPK: Support disk_setup and mounts in cloud-init (#3066)
- CABPK: Support reading file contents from a Secret (#3083)
- CABPK: Allowing mutability for the PreKubeadmCommands, PostKubeadmCommands and Files (#3086)
- Add
cluster.x-k8s.io/cloned-from-name
andcluster.x-k8s.io/cloned-from-groupkind
annotations to templated resources (#3181) - Add condition types (#3087)
🐛 Bug Fixes
- Machine controller's listDescendents should now fetch MachinePools (#3196)
- KubeadmControlPlane shouldn't rely on hashing to determine if a Machine is outdated (#3234)
- Removes MachineSet Controller owner for existing machine bootstrap or infrastructure references (#3164)
- Controllers should now add finalizers at the first reconciliation (#3214, #3199)
- KubeadmControlPlane should now properly adopt the cluster's secrets (#3236)
- MachineHealthCheck should only look at Machines that match the Cluster associated in
spec.clusterName
(#3232) - MachineSet now prioritizes deleting Machines without NodeRef (#3222)
- Set sideEffects:None for cert-manager MutatingWebhookConfiguration (#3206)
- Cluster network ranges should now support more than one comma separated range (#3172)
- Machine: Make
spec.version
validation consistent with KubeadmControlPlane (#3147) - CAPBK: Fix API conversion and add validating webhook (#3100, #3114)
util.GetOwnerMachine
should exclude the API's version field when comparing objects (#3148)- clusterctl: Should now accept cluster names with dots (#3076)
- clusterctl: Init images skip variables (#3059)
📖 Documentation
- Proposals:
- Update CONTRIBUTING.md with high-level review guidelines (#3191, #3194)
- Add instructions for kind v0.8.x (#3180)
- Document docker version requirements (#3218)
- Improve implementers guide (#3307)
- Fix the field name in cluster-infra-provider diagram (#3284)
- Fix references to spec.kubernetesVersion for the Machine object to spec.Version (#3265)
- Add known bug warning for clusterctl delete (#3246)
- Update quickstart for clusterawsadm v2 (#3116)
- Add AZURE_ENVIRONMENT env var to azure instructions in quick start guide (#3212)
- Add more structure and details to roadmap document (#3192)
- Fix typos for CABPK (#3211)
- Fix typo for "timeout" (#3167)
- Update MachineHealthCheck proposal to use conditions instead of annotations (#3056)
- Update quick start about OpenStack (#3155)
- Added packet where needed across the cluster-api (#3123)
- Update references to proper CAPBK location (#3094)
- Document the immutability of machine templates (#3105)
- Update Azure spot types to use string instead of float (#3063)
- Kubernetes support matrix (#3031)
- Remove extra mention of clusterawsadm in context where it is not needed (#3093)
- Update concepts doc (#3070)
🌱 Others
- Refactor patch helper to handle observedGeneration and Conditions (#3118, #3258)
- Cleanup some internal MachineSet bits (#3089, #3092)
- Add kubeadm control plane manager role aggregation label (#2685)
- Add templates variables for FeatureGates (#3325)
- Add experimental and feature gates directories to Tiltfile (#3069)
- Add an error message if missing substitutions when using Kustomize (#3249)
- Add
status.observedGeneration
to all Cluster API objects (#3104, #3266, #3226) - Add support for PKCS8 private keys in CA certs (#3175)
- Remove use of "master" word from our codebase (#3285)
- Remove use of word "dummy" from our codebase (#3288)
- Opt for a more inclusive "other" category for our emoji (#3131)
- clusterctl: Add Packet to list of default providers (#3121, #3263)
- clusterctl: Add Talos providers to defaults (#3271)
- clusterctl: Add move support for ClusterResourceSets (#3243)
- clusterctl: Support ClusterRole/RoleBindings for webhooks (#3268)
- clusterctl: Switch to log on to stderr (#3124)
- clusterctl: Move internal yaml functions under
util/yaml
(#3133) - KubeadmControlPlane: Remove semantic merge from bootstrap controller (#3312)
- KubeadmControlPlane: Remove hash label from KCP machines (#3302)
- KubeadmControlPlane: Cleanup MatchesKubeadmBootstrapConfig and add unit tests (#3286)
- KubeadmControlPlane: Cleanup machinesNeedingRollout (#3277)
- KubeadmControlPlane: Failing to connect to the workload cluster should be treated as a transient error (#3082)
- KubeadmControlPlane: Use all available endpoints for etcd (#2888)
- MachineHealthCheck: Adds list of targets under status (#3186)
- ClusterResourceSet: Change internal representation of binding between CRS, Cluster and configmaps/secrets from maps to lists (#3013)
- MachineHealthCheck: Integrate shared remote cluster watching (#3129)
- Testing: Adds tests for InitImages (#3233)
- Testing: Add tests for ensureNamespace (#3217)
- Testing: Refactor testenv and remove unused ones (#3159)
- Testing: Remove pr-integation presubmit files (#3162)
- Testing: Update golint-ci, fix warnings (#3120)
- Testing: Remove 1s full cache resync from envtest, use a delegating client (#3130)
- Testing: Add a test external.Clone annotations in template (#3079)
- Testing: Fix test/helpers.NewFakeClientWithScheme (#3171)
- Testing: MachineHealthCheck mapper tests shouldn't create new test environments (#3156)
- Testing: Increase envtest timeout (#3229)
- Testing: Adds a test for ensureNamespaces (plural) (#3224)
- Testing: Use patch in tests instead of update (#3231)
- Testing: Rewrite MHC tests to be consistent with rest of codebase (#3219)
- Testing: Replace fmt.Println with writes to ginko's writer (#3065)
- Testing: Add e2e target to Makefile and update book (#3068)
- Testing: Fixes WaitForMachineStatusCheck to poll for updates (#3071)
- Testing: Enable metrics collection (#3262)
- CAPD: Add support to run webhooks (#3088)
- CAPD: Publish images when building on the main branch or tags (#3177, #3183)
- CAPD: Machines should now report
status.addresses
(#3250) - Builds: Update image for cloudbuild and use buildkit (#3210, #3221, #3223, #3220, #3239, #3238, #3241, #3237, #3235)
- Dependency: Update Go version to 1.13.12 (#3166)
- Dependency: Update Calico version to 3.15 (#3275)
- Dependency: Update controller-runtime to v0.5.8 (#3080, #3228, #3328)
Thanks to all our contributors! 😊
v0.3.7-rc.1
🚨 This is a RELEASE CANDIDATE. Use it only for testing purposes, if you find any bugs file an issue.
v0.3.7-rc.0
🚨 This is a RELEASE CANDIDATE. Use it only for testing purposes, if you find any bugs file an issue.
v0.3.7-beta.0
🚨 This is a BETA release. Use it only for testing purposes, if you find any bugs file an issue.
v0.3.7-alpha.0
🚨 This is an ALPHA release. Use it only for testing purposes, if you find any bugs file an issue.
v0.3.6
Changes since v0.3.5
⚠️ Breaking Changes
- MachineHealthCheck
spec.selector
field cannot be empty (#3032) — Impact: If you have a MachineHealthCheck with an empty selector, users will need to update the selector to contain at least one label. For MachineHealthCheck in particular, an empty selector would match all the machines in a given cluster; given that we don't want to have overlapping health checks, it makes sense to disable it and make it opt-in.
✨ New Features
- Update and unify cluster/resource paused handling (#2877) — Infrastructure provider should move to use these new utilities to watch Clusters to handle the global controller paused functionality.
🐛 Bug Fixes
- Ignore custom static manifests on kubeadm join (#3053)
- Kubeadm bootstrap provider should not fail if bootstrap data already exists (#2971)
- Exclude conversion-data annotation when MD reconciles (#3018)
- Convert MachineSet annotations from v1alpha2 (#3011)
- KubeadmControlPlane should bypass the controller cache when initializing (#3002)
- clusterctl: Support KUBECONFIG env var file paths (#3047)
- clusterctl: Adds tolerations for cert-manager to run on control-plane nodes (#3034)
📖 Documentation
- Add additional context around experiments in CONTRIBUTING guide (#2974)
- Add section on how to develop e2e tests with clusterctl framework (#2839)
- Clarify
spec.providerId
section (#3037) - Fixes for clusterctl developer doc, mostly related to docker provider (#3003)
- Update book section regarding external etcd (#2962)
🏃 Others
- Add remote cluster cache manager (#2880)
- Use GOPROXY environment variable if set when building the docker images (#3061)
- CAPD automatically re-create a machine if there is an error during provisioning (#3004)
- [e2e] Add MachineHealthCheck tests (#3029)
- [e2e] Add machine deployment scaling helper function (#3027)
- [e2e] Add deprecated tag to e2e framework.config (#2979)
- [e2e] Add MachineDeployment upgrade test (#2945)
- [e2e] Add machine helper for status check. (#3028)
- Update KIND to v0.7.0 in integration tests (#3008)
- Remove use of metav1.FinalizerDeleteDependents from tests (#2987)
- Add helper wrapping envtest (#2995)
- clusterctl: print stack trace if verbosity is >= 5 (#3040)
- clusterctl: add CLUSTERCTL_LOG_LEVEL environment variable (#2996)
Thanks to all our contributors! 😊
v0.2.11
v0.3.5
v0.3.4
Changes since v0.3.3
✨ New Features
- Update MHC proposal with new annotation strategy (#2920) — An internal rework of MachineHealthCheck is has been approved and will be ready in a future version. This allows us to better split responsibilities between controllers, and add support for KCP (and other control plane providers) to remediate control plane.
- Support specific kubeconfig context in clusterctl (#2856) — Allows to pass a specific kubeconfig context to be used when using a kubeconfig. CLI and library users can see the complete list of breaking changes here.
- Make clusterctl cert-manager timeout configurable (#2834) — Users can now set a custom timeout used when clusterctl installs cert-manager.
- Add DeleteMachineAnnotation for MachineSet Delete Policy (#2929) — Our
api
package now exposes a new annotation specific to MachineSet-owned Machine objects calledDeleteMachineAnnotation
which replaces the now-deprecatedDeleteNodeAnnotation
.
🐛 Bug Fixes
- KCP should correctly select machines in failure domains during upgrades (#2833)
- KCP should check if it has machines being deleted before proceeding with scale up/down (#2958)
- KCP should now correctly allow custom
imageRepository
fields to be used for CoreDNS (#2832) - KCP should connect to the etcd leader whenever possible for basic operations (#2821)
- KCP should recover when a Machine is manually deleted (#2841)
- KCP should re-queue until the control plane is ready (#2907)
- CABPK should not panic when using external etcd with undefined secrets (#2946)
- Remove invalid ClusterRoleBinding from CertManager (#2931)
- Allow webhooks to be called when using
--dry-run
by reporting no side-effect behaviors (#2868) - MachineSet controller should not use Update as a fallback (#2913)
- Clusterctl shouldn't show invalid URLs when running
config provider
(#2948) - Clusterctl should show
config provider
without setting env vars (#2905) - Clusterctl should return an error if it the given config file doesn't exist (#2899)
- Clusterctl should not return an error if it cannot find default config (#2951)
- Clusterctl should now work correctly with variables containing a
$
sign (#2858) - Clusterctl now validates the minimum Kubernetes version required for a management cluster (#2842)
- Clusterctl now correctly allows users to override user specified values for control plane and worker machine count (#2597)
- Clusterctl should now cache GitHub calls (#2848)
📖 Documentation
- Update roadmap with focus on v1alpha3 (#2882)
- Document the minimum required management cluster Kubernetes version (#2901)
- Update MachineDeployment controller image in docs (#2878)
- Document Docker and KIND prerequisites (#2925)
- Clarify that MachineHealthCheck only works with MachineSet and MachineDeployment Machines (#2875)
- Add initial Spot instances proposal (#2817)
- Add Azure tab for deploy Calico CNI step in Quick Start (#2883)
- Add subscription id to azure Quick Start (#2853)
🏃 Others
- Add a library to parse container image name and other fields (#2869)
- Grant RBAC access to experimental infra api group (#2959)
- Remove issue-proposals in favor of CAEP process (#2940)
- Allow extra arguments to be passed when using Tilt (#2932)
- Remove
cmd/clusterctl/test
folder, now superseded with new e2e-tests (#2933) - Remove annotations on upgradeControlPlane (#2887)
- Add ci-apidiff job (#2923)
- Introduce the new clusterctl-based suite of e2e tests (#2884)
- Increase e2e test timeout (#2942, #2936)
- Re-organize helpers func (#2922)
- Add ClusterProvider and ClusterProxy (#2911)
- Improve and cleanup e2e clusterctl (#2909)
- Ensure that capd tests always clean up the kind cluster (#2917)
- Improve management cluster interface (#2893)
- Add namespace utils to the test framework (#2891)
- Dump all resources when test ends (#2894)
- Add log streaming to clusterctl e2e (#2879)
- Add KCP integration and unit tests (#2802)
- Improve unit test coverage for KCP (#2862)
- Add workload cluster unit tests in KCP (#2806)
Thanks to all our contributors! 😊