- #1129
An empty
spec.placement.clusters
field will now always result in no clusters being selected. Previously an emptyclusters
field could result inspec.placement.clusterSelector
being used. - #1107
status.observedGeneration
is now recorded by the sync controller for federated resources to provide an indication of whether the current state of a resource has been processed. - #1121 Update
kubefedctl federate
shorthand option for--enable-type
to-t
instead of-e
to avoid confusing error message when only one dash is accidentally used e.g.-enable-type
, resulting in a valid parsing of flags but erroneous use of the option. - #1184 Update dependencies to controller-runtime v0.5.0 and Kubernetes 1.17.3
- #1195 Use unstructured runtime.Object for more detailed reflector logging
- #1193 Serve controller default metrics
- #1192 Add pprof profiling support
- #1099 Updates to propagation status are now only made in response to propagation to member clusters or errors in propagation. Previously propagation status was updated every time a federated resource was reconciled which could result in unnecessary resource consumption.
- #1098 Propagated version is now only updated when changed.
- #1087
The ReplicaScheduling controller now correctly updates existing
overrides of
/spec/replicas
. Previously the controller was able to create and remove overrides for thereplicas
field but would fail to update them. - #1076
All
kubefedctl
commands now default--host-cluster-context
to the current context in log messages. - #1086
kubefedctl federate
now removes all metadata fields except labels from the template of federated resources created from a non-federated resource. Previouslymetadata.annotations
andmetadata.finalizers
were not removed which could result in propagation errors. - #1079 The spec field is now required in generated federated types. For types generated previously, a check has been added so that a missing spec field does not cause a nil pointer exception.
- #1058 KubeFedConfig spec.scope is now immutable.
- #1052
Support has been added for varying the
apiVersion
of target resources. This is intended to allow a federated type to manage more than one version of the target type across member clusters.apiVersion
can be set either in the template of a federated resource or via override. - #951 Propagation status for a namespaced federated resource whose containing namespace is not federated now indicates an unhealthy state.
- #1053 API group changed from kubefed.k8s.io to kubefed.io.
- #908 Adds admission webhook validations for KubeFedCluster API.
- #982 To ensure compatibility with controllers in member clusters, metadata.finalizers and metadata.annotations can no longer be set from the template of a federated resource and values for these fields are always retained. The addition of jsonpatch overrides ensures that it is still possible to add or remove entries from these collections.
- #1013 Add support for defaulting KubeFedConfigs using mutating admission webhook.
- #1038 Removed template validation schema from Federated API's to facilitate upgrade scenarios.
- #690 Extends
kubefedctl
by adding theorphaning-deletion
command, which allows toenable
ordisable
leaving managed resources, when their relevant federated resource is deleted. In addition, the command allows to check currentstatus
of the orphaning deletion mode. - #1044 If a target namespace
of
federate
and allorphaning-deletion
commands is not specified, use the namespace from the client kubeconfig context.
- #520 Adds support for jsonpath overrides.
- #965 Adds admission webhook support for namespace-scoped deployments.
- #941 Adds admission webhook validations for KubeFedConfig API.
- #909 Adds admission webhook validations for FederatedTypeConfig API.
- #887 Updates KubefedConfig API based on Kubernetes API conventions.
- #885 Updates FederatedTypeConfig API based on Kubernetes API conventions.
- #886 The ca bundle for a member cluster is now stored as an optional field of KubefedCluster since a ca bundle may not be required for all clusters and is not sensitive information that requires storage in a secret.
- #865
github repo is renamed to kubefed. Following changes are done:
- API group changed from federation.k8s.io to kubefed.k8s.io
- FederatedCluster API is renamed to KubefedCluster
- FederationConfig API is renamed to KubefedConfig
- golang imports changed to use vanity url sigs.k8s.io/kubefed
- docker image is renamed to quay.io/kubernetes-multicluster/kubefed
- helm chart is renamed to kubefed
- All role, rolebindings, service-account begining with federation- prefix renamed to kubefed-
- #875 Insecure member clusters are no longer supported due to KubefedCluster.SecretRef being made a required field.
- #869 The api endpoint of a member cluster is now stored in KubefedCluster instead of a cluster registry Cluster.
- #688 Cluster references in placement are now objects instead of strings to ensure extensibility.
- #832
kubefedctl federate
can take input from a file via--filename
option and stdin via--filename -
option. - #868
The default kubefed system namespace has been changed from
federation-system
tokube-federation-system
. Thekube-
prefix is reserved for system namespaces and including it avoids having the kubefed namespace conflict with a user namespace. - #740 Propagation status is now recorded for all federated resources.
- #844
kubefedctl federate
namespace with its content gets an option to skip API Resources via--skip-api-resources
.
- #722 - Removal of the FederatedTypeConfig for namespaces now disables all namespaced sync controllers. Additionally, the namespace FederatedTypeConfig must always exist prior to starting any namespaced sync controller.
- #612 - Label managed resources in member clusters and only watch resources so labeled to minimize the memory usage of the federated control plane.
- #721 - kubefed2 disable now deletes the FederatedTypeConfig rather than set propagationEnabled, waits for the sync controller to shut down, and optionally removes the federated type CRD.
- #825 - kubefed2 tool is renamed to kubefedctl.
- #741 -
Added conversion of a namespace and its contents to federated
equivalents via
kubefedctl federate ns <namespace> --contents
.
- #776 -
Switch to use
scope
instead oflimitedScope
to specify if it isNamespaced
orCluster
scoped federation deployment. - #797 - Cross-cluster service discovery now works for multi-zone clusters. There is an update to KubefedClusters and ServiceDNSRecord API types wherein the zone field is changed to zones.
- #720 -
kubefed2 enable
now succeeds if federation of the type is already enabled. - #738 -
Cleanup
kubefed2 enable
required arguments and remove unnecessary--registry-namespace
option fromkubefed2 <enable|disable>
. - #737 - Switch to use KubefedConfig resource rather than command line options for kubefed controller configuration management
- #549 - As a result of watching only labled resources, unlabled resources in unselected clusters will no longer be deleted.
- #663
kubefed2 federate
now supports the--enable-type
flag to optionally enable the giventype
for propagation.
- #652 - Switch to sourcing the template for a FederatedNamespace from a field rather than the containing namespace. This ensures uniformity in template handling across all federated types.
- #716 -
Upgrade kubebuilder version to v1.0.8
- Removed generated typed clients for federation apis from tree. Use generic client to operate on federation apis as shown here
- Helm based deployment method will be the only supported deployment method to install kubefed control plane.
- #622 -
Switched the sync controller to using a new finalizer
(
kubefed.k8s.io/sync-controller
instead offederation.kubernetes.io/delete-from-underlying-clusters
) and replaced the use of the kubeorphan
finalizer in favor of an annotation to avoid conflicting with the garbage collector. This change in finalizer usage represents a breaking change since resources reconciled by previous versions of the sync controller will have the old finalizer. The old finalizer would need to be manually removed from a resource for that resource to be garbage collected after deletion. - #698 -
Fix the generated CRD schema of scalable resources to define the
retainReplicas
of typeboolean
rather than the invalid typebool
. - #662 Federating a resource could now function without a federation API.
- #661 Accept group qualified type name for type in federate resource.
- #660
kubefed2 federate
has been updated to support output to yaml via-o yaml
. YAML output would still require a Kubernetes API endpoint to function.