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! 😊