Table of Contents generated with DocToc
- v1.12.0
- v1.12.0-beta.0
- v1.12.0-alpha.1
Download v1.12.0 in the v1.12.0 release page.
This release introduces PreserveResourcesOnDeletion
field to both PropagationPolicy and ClusterPropagationPolicy API, which provides the ability to rollback migration safely.
The PreserveResourcesOnDeletion
field controls whether resources should be preserved on the member clusters when the resource template is deleted in the Karmada control-plane. If it is set to true, resources will be preserved on the member clusters.
This feature is particularly useful during workload migration scenarios to ensure that rollback can occur quickly without affecting the workloads running on the member clusters.
For a detailed description of this feature, please refer to How to Roll Back Migration Operations and docs(proposal): Migration Rollback Protection.
(Feature contributors: @CharlesQQ @XiShanYongYe-Chang @RainbowMango @a7i @chaosi-zju @wulemao)
This release introduces a new feature for stateful application failover, it provides a generalized way for users to define application state preservation in the context of cluster-to-cluster failovers.
In the previous releases, Karmada’s scheduling logic runs on the assumption that resources that are scheduled and rescheduled are stateless. In some cases, users may desire to conserve a certain state so that applications can resume from where they left off in the previous cluster.
For CRDs dealing with data-processing (such as Flink or Spark), it can be particularly useful to restart applications from a previous checkpoint. That way applications can seamlessly resume processing data while avoiding double processing.
For a detailed description of this feature, please refer to [Feature] Stateful Application Failover Support and docs: Stateful Application Failover Support.
(Feature contributors: @Dyex719 @mszacillo @RainbowMango @XiShanYongYe-Chang)
This release, karmada-operator makes a number of enhancements to support high availability scenarios, including:
- introduces support for a Custom CA Certificate for Karmada Instances;
- adds The ability to retrieve external etcd client credentials from secret;
- adds The ability to specify extra volumes and volume mounts for Karmada components;
- exposes APIServer Service provisioned by karmada-operator;
- the ability to utilize external etcd.
These enhancements allow Karmada-operator to deploy a highly available managed Karmada control plane across multiple management clusters that can span various data centers, thus fulfilling disaster recovery requirements.
By implementing this architecture and configuring the managed control plane instances to use the same CA certificate and underlying etcd instance, you can create a stretched instance that operates across multiple management clusters. This setup allows secure access through a unified, load-balanced API endpoint. Ultimately, this arrangement enhances resilience against data center outages, complies with disaster recovery requirements, and minimizes the risk of service disruptions.
For a detailed description of this feature, see the Proposal: Support Custom CA Certificate for Karmada Control Plane
(Feature contributors: @jabellard, @RainbowMango, @chaosi-zju, @zhzhuang-zju)
This release introduces a new feature for OverridePolicy
that allows users to partially override specific values in JSON and YAML resources, rather than replacing the entire configuration.
This enhancement ensures minimal modifications and improves ease of use, catering to scenarios where users only want to adjust certain values.
The allowed operations are as follows:
add
: appends new key-value pairs at the specified sub path.remove
: removes specific key-value pairs at the specified sub path.replace
: replaces existing values with new values at the specified sub path.
For a detailed description of this feature, see the Proposal: Structured configuration overrider and docs: fieldoverrider docs.
(Feature contributors: @Patrick0308, @sophiefeifeifeiya, @chaunceyjiang)
- Introduced
SecretRef
toKarmada
API as part of the configuration for connecting to an external etcd cluster can be used to reference a secret that contains credentials for connecting to an external etcd cluster. (#5699, @jabellard) - Introduced
extraVolumes
andextraVolumemounts
to theKarmada
API to optionally specify extra volumes and volume mounts for the Karmada API server component. (#5509, @jabellard) - Introduced
ApiServerService
field toKarmada
API as part of the Karmada instance status can be used to reference the API Server service for that instance. This is useful for scenarios where higher level operators need to discover the API Server service of a Karmada instance for tasks like setting up ingress traffic. (#5775, @jabellard) - Introduced
CustomCertificate.ApiServerCACert
field toKarmada
API as part of theKarmada
spec to specify the reference to a secret that contains a custom CA certificate for the Karmada API Server. (#5842, @jabellard) - API change: The ServiceType of the Karmada API server in
Karmada
API now has been restricted toClusterIP
,NodePort
andLoadBalancer
. (#5769, @RainbowMango) - Introduced a new condition
CompleteAPIEnablements
toCluster
API to represent the API collection status. (#5400, @whitewindmills) - Introduced
PreserveResourcesOnDeletion
field to bothPropagationPolicy
andClusterPropagationPolicy
API, which provides the ability to roll back migration safely. (#5575, @RainbowMango) - API Change: Introduced
FieldOverrider
to bothOverridePolicy
andClusterOverridePolicy
, which provides the ability to override structured data nested in manifest like ConfigMap or Secret. (#5581, @RainbowMango) - Introduced
PurgeMode
toGracefulEvictionTask
inResourceBinding
andClusterResourceBinding
API. (#5816, @mszacillo) - Introduced
StatePreservation
toPropagationPolicy
, which will be used to preserve status in case of application failover. (#5885, @RainbowMango)
ExternalEtcd.CAData
,ExternalEtcd.CertData
andExternalEtcd.KeyData
inKarmada
API are deprecated and will be removed in a future version. Use SecretRef for providing client connection credentials. (#5699, @jabellard)- The following flags have been deprecated in release
v1.11.0
and now have been removed:karmada-agent
: (#5548, @whitewindmills)- --bind-address
- --secure-port
karmada-controller-manager
: (#5549, @whitewindmills)- --bind-address
- --secure-port
karmada-scheduler-estimator
: (#5555, @seanlaii)- --bind-address
- --secure-port
karmada-scheduler
: (#5551, @chaosi-zju)- --bind-address
- --secure-port
karmada-descheduler
: (#5552, @chaosi-zju)- --bind-address
- --secure-port
karmada-scheduler
: Fixed unexpected modification of originalResourceSummary
due to lack of deep copy. (#5685, @LivingCcj)karmada-scheduler
: Fixes an issue where resource model grades were incorrectly matched based on resource requests. Now only grades that can provide sufficient resources will be selected. (#5706, @RainbowMango)karmada-scheduler
: skip the filter if the cluster is already in the list of scheduling result even if the API is missed. (#5216, @yanfeng1992)karmada-controller-manager
: Fixed the corner case where the reconciliation of aggregating status might be missed in case of component restart. (#5865, @zach593)karmada-controller-manager
: Ignored StatefulSet Dependencies with PVCs created via the VolumeClaimTemplates. (#5568, @jklaw90)karmada-controller-manager
: Clean up the residual annotations when resources are preempted by pp from cpp. (#5563, @zhzhuang-zju)karmada-controller-manager
: Fixed an issue that policy claim metadata might be lost during the rapid deletion and creation ofPropagationPolicy(s)
/ClusterPropagationPolicy(s)
. (#5319, @zhzhuang-zju)karmadactl
: Fixed the issue where commandscreate
,annotate
,delete
,edit
,label
, andpatch
cannot specify the namespace flag. (#5487, @zhzhuang-zju)karmadactl
: Fixed the issue thatkarmadactl addon
failed to installkarmada-scheduler-estimator
due to unknown flag. (#5523, @chaosi-zju)karmadactl
: Fixedkarmada-metrics-adapter
use the incorrect certificate issue when deployed via karmadactlinit
. (#5840, @KhalilSantana)karmada-operator
: Fixed the issue where the manifests for thekarmada-scheduler
andkarmada-descheduler
components were not parsed correctly. (#5546, @jabellard)karmada-operator
: Fixedsystem:admin
can not proxy to member cluster issue. (#5572, @chaosi-zju)karmada-search
: Modify the logic of checking whether the resource is registered when selecting the plugin. (#5662, @yanfeng1992)karmada-aggregate-apiserver
: limit aggregate apiserver http method to get. User can modify member cluster's object with * in aggregated apiserver url. (#5430, @spiritNO1)
In this release, the Karmada community is committed to enhancing the security of Karmada and improving the robustness of Karmada system operations. By combing components to minimize permissions and reinforcing default configurations for installations, the Karmada system's security has been significantly strengthened to protect against potential threats in an increasingly complex multi-cloud environment.
- Component Permissions Minimization
karmadactl init
: add CRDs archive verification to enhance file system robustness. (#5713, @zhzhuang-zju)karmada-operator
: add CRDs archive verification to enhance file system robustness. (#5703, @zhzhuang-zju)karmadactl init
: Eliminate unnecessary and potentially exploitable information from command output. (#5714, @zhzhuang-zju)
karmada-controller-manager
: introduces theagentcsrapproving
controller to provide the capability for the agent's CSR to be automatically approved. (#5825, @zhzhuang-zju)karmada-controller-manager
: update taint-manager to config eviction task with purgeMode. (#5879, @XiShanYongYe-Chang)karmada-controller-manager
: Build eviction task for application failover when using purgeMode Immediately. (#5881, @mszacillo)karmada-controller-manager
: build PreservedLabelState when triggering eviction in RB/CRB application controller. (#5887, @XiShanYongYe-Chang)karmada-controller-manager
: keep preserveResourcesOnDeletion of the dependent resource consistent with that of the primary resource. (#5717, @XiShanYongYe-Chang)karmada-controller-manager
: set conflictResolution for dependent resources. (#4418, @chaunceyjiang)karmada-controller-manager
: The health status of resources without ResourceInterpreter customization will be treated as healthy by default. (#5530, @a7i)karmada-controller-manager
: Unique controller names and remove ambitions when reporting metrics. (#5799, @chaosi-zju)karmada-controller-manager
: Introduced--concurrent-dependent-resource-syncs
flags to specify the number of dependent resource that are allowed to sync concurrently. (#5809, @CharlesQQ)karmada-controller-manager
: Cleanup works from clusters with eviction task when purge mode is immediately. (#5889, @mszacillo))karmada-controller-manager
: Inject preservedLabelState to the failover to clusters. (#5893, @XiShanYongYe-Chang)karmada-controller-manager
: Introduced feature gateStatefulFailoverInjection
to control whether Karmada collects and injects state information during a failover event for stateful application. (#5897, @RainbowMango)karmada-controller-manager
: The featureFailover
now has been disabled by default, which should be explicitly enabled to avoid unexpected incidents. (#5899, @RainbowMango)karmadactl
: Implementing autocompletion for karmadactl to save a lot of typing. (#5533, @zhzhuang-zju)karmadactl
: Added shorthand letters
to 'operation-scope' flags across commands. (#5483, @ahorine)karmadactl
:karmadactl init
support multiple label selection ability with flagEtcdNodeSelectorLabels
. (#5321, @tiansuo114)karmadactl
:karmadactl init
supports deployment through configuration files. (#5357, @tiansuo114)karmadactl
: new commandkarmadactl unregister
supports unregister a pull mode cluster. (#5626, @wulemao)karmadactl
: setPreserveResourcesOnDeletion
by default in auto-created propagation policy during promotion process. (#5601, #wulemao)karmadactl
: The--force
option ofunjoin
command now try to clean up resources propagated in member clusters. (#4451, @zhzhuang-zju)karmadactl
: RBAC permissions for pull mode clusters registered with theregister
command are minimized when accessing the Karmada control plane. (#5793, @zhzhuang-zju)karmada-operator
: The newSecretRef
field added as part of the configuration for connecting to an external etcd cluster can be used to reference a secret that contains credentials for connecting to an external etcd cluster. (#5699, @jabellard)karmada-operator
: Adds one-click script to install a Karmada instance through thekarmada-operator
. (#5519, @zhzhuang-zju)karmada-operator
: enable LoadBalancer type karmada-apiserver service. (#5773, @chaosi-zju)karmada-scheduler
: implement group score calculation instead of take the highest score of clusters. (#5621, @ipsum-0320)karmada-scheduler
: Thescheduler-estimator-service-namespace
flag is introduced, which can be used to explicitly specify the namespace that should be used to discover scheduler estimator services. For backwards compatibility, when not explicitly set, the default value ofkarmada-system
is retained. (#5478, @jabellard)karmada-descheduler
: Introduced leaderElection options including:--leader-elect-lease-duration
,--leader-elect-renew-deadline
,--leader-elect-retry-period
, the default value not changed compared to previous version. (#5787, @yanfeng1992)karmada-desheduler
: Thescheduler-estimator-service-namespace
flag is introduced, which can be used to explicitly specify the namespace that should be used to discover scheduler estimator services. For backwards compatibility, when not explicitly set, the default value ofkarmada-system
is retained. (#5478, @jabellard)karmada-search
: Implement search proxy cache initialization post-start-hook. (#5846, @XiShanYongYe-Chang)karmada-search
: Support field selector for corev1 resources. (#5801, @SataQiu)karmada-scheduler-estimator
: grpc connection adds the support for custom DNS Domain. (#5472, @zhzhuang-zju)karmada-webhook
: validate fieldOverrider operation. (#5671, @chaunceyjiang)- implement preserveResourcesOnDeletion to support migration rollback. (#5597, @a7i)
- Introduced
FieldOverrider
for overriding values in JSON and YAML. (#5591, @sophiefeifeifeiya) - Support PurgeMode setting in evection tasks. (#5821, @XiShanYongYe-Chang)
- The base image
alpine
now has been promoted fromalpine:3.20.2
toalpine:3.20.3
. - Kubernetes dependencies have been updated to v1.31.2. (#5807, @RainbowMango)
Karmada
now built with Golang v1.22.9. (#5820, @RainbowMango)karmada-apiserver
andkube-controller-manager
is using v1.31.3 by default. (#5851, @chaosi-zju)etcd
: update default version to 3.5.16-0. (#5854, @chaosi-zju)
Helm chart
: Added helm index for v1.10.0 and v1.11.0 release. (#5579, @chaosi-zju)
- Unique controller names and remove ambitions when reporting metrics. (#5799, @chaosi-zju)
Thank you to everyone who contributed to this release!
Users whose commits are in this release (alphabetically by username)
- @a7i
- @ahorine
- @anujagrawal699
- @B1f030
- @chaosi-zju
- @CharlesQQ
- @chaunceyjiang
- @husnialhamdani
- @iawia002
- @ipsum-0320
- @jabellard
- @jklaw90
- @KhalilSantana
- @LavredisG
- @liangyuanpeng
- @LivingCcj
- @MAVRICK-1
- @mohamedawnallah
- @mszacillo
- @RainbowMango
- @SataQiu
- @seanlaii
- @sophiefeifeifeiya
- @tiansuo114
- @wangxf1987
- @whitewindmills
- @wulemao
- @xovoxy
- @yanfeng1992
- @yelshall
- @zach593
- @zhzuang-zju
Download v1.12.0-beta.0 in the v1.12.0-beta.0 release page.
- Introduced
SecretRef
toKarmada
API as part of the configuration for connecting to an external etcd cluster can be used to reference a secret that contains credentials for connecting to an external etcd cluster. (#5699, @jabellard)
karmada-scheduler-estimator
: grpc connection adds the support for custom DNS Domain. (#5472, @zhzhuang-zju)karmada-operator
: The newSecretRef
field added as part of the configuration for connecting to an external etcd cluster can be used to reference a secret that contains credentials for connecting to an external etcd cluster. (#5699, @jabellard)karmada-operator
: Adds one-click script to install a Karmada instance through thekarmada-operator
. (#5519, @zhzhuang-zju)karmada-controller-manager
: keep preserveResourcesOnDeletion of the dependent resource consistent with that of the primary resource. (#5717, @XiShanYongYe-Chang)karmada-controller-manager
: set conflictResolution for dependent resources. (#4418, @chaunceyjiang)karmadactl
:karmadactl init
supports deployment through configuration files. (#5357, @tiansuo114)karmadactl
: new commandkarmadactl unregister
supports unregister a pull mode cluster. (#5626, @wulemao)karmada-scheduler
: implement group score calculation instead of take the highest score of clusters. (#5621, @ipsum-0320)
ExternalEtcd.CAData
,ExternalEtcd.CertData
andExternalEtcd.KeyData
inKarmada
API are deprecated and will be removed in a future version. Use SecretRef for providing client connection credentials. (#5699, @jabellard)
karmada-scheduler
: Fixed unexpected modification of originalResourceSummary
due to lack of deep copy. (#5685, @LivingCcj)karmada-scheduler
: Fixes an issue where resource model grades were incorrectly matched based on resource requests. Now only grades that can provide sufficient resources will be selected. (#5706, @RainbowMango)karmada-search
: Modify the logic of checking whether the resource is registered when selecting the plugin. (#5662, @yanfeng1992)
karmada-operator
: minimize the rbac permissions for karmada-operator. (#5586, @B1F030)
Download v1.12.0-alpha.1 in the v1.12.0-alpha.1 release page.
- Introduced
extraVolumes
andextraVolumemounts
to theKarmada
API to optionally specify extra volumes and volume mounts for the Karmada API server component. (#5509, @jabellard) - Introduced a new condition
CompleteAPIEnablements
to represent api collection status of clusters. (#5400, @whitewindmills) - Introduced
PreserveResourcesOnDeletion
field to both PropagationPolicy and ClusterPropagationPolicy API, which provides the ability to roll back migration safely. (#5575, @RainbowMango) - API Change: Introduced
FieldOverrider
to both OverridePolicy and ClusterOverridePolicy, which provides the ability to override structured data nested in manifest like ConfigMap or Secret. (#5581, @RainbowMango)
- implement preserveResourcesOnDeletion to support migration rollback. (#5597, @a7i)
- Introduced
FieldOverrider
for overriding values in JSON and YAML. (#5591, @sophiefeifeifeiya) karmadactl
: Implementing autocompletion for karmadactl to save a lot of typing. (#5533, @zhzhuang-zju)karmadactl
: Added shorthand letters
to 'operation-scope' flags across commands. (#5483, @ahorine)karmadactl
:karmadactl init
support multiple label selection ability with flagEtcdNodeSelectorLabels
. (#5321, @tiansuo114)karmadactl
: setPreserveResourcesOnDeletion
by default in auto-created propagation policy during promotion process. (#5601, #wulemao)karmada-sheduler
: Thescheduler-estimator-service-namespace
flag is introduced, which can be used to explicitly specify the namespace that should be used to discover scheduler estimator services. For backwards compatibility, when not explicitly set, the default value ofkarmada-system
is retained. (#5478, @jabellard)karmada-desheduler
: Thescheduler-estimator-service-namespace
flag is introduced, which can be used to explicitly specify the namespace that should be used to discover scheduler estimator services. For backwards compatibility, when not explicitly set, the default value ofkarmada-system
is retained. (#5478, @jabellard)karmada-controller-manager
: The health status of resources without ResourceInterpreter customization will be treated as healthy by default. (#5530, @a7i)karmada-webhook
: validate fieldOverrider operation. (#5671, @chaunceyjiang)
- The following flags have been deprecated in release
v1.11.0
and now have been removed:karmada-agent
: (#5548, @whitewindmills)- --bind-address
- --secure-port
karmada-controller-manager
: (#5549, @whitewindmills)- --bind-address
- --secure-port
karmada-scheduler-estimator
: (#5555, @seanlaii)- --bind-address
- --secure-port
karmada-scheduler
: (#5551, @chaosi-zju)- --bind-address
- --secure-port
karmada-descheduler
: (#5552, @chaosi-zju)- --bind-address
- --secure-port
karmada-operator
: Fixed the issue where the manifests for thekarmada-scheduler
andkarmada-descheduler
components were not parsed correctly. (#5546, @jabellard)karmada-operator
: Fixedsystem:admin
can not proxy to member cluster issue. (#5572, @chaosi-zju)karmada-aggregate-apiserver
: limit aggregate apiserver http method to get. User can modify member cluster's object with * in aggregated apiserver url. (#5430, @spiritNO1)karmada-scheduler
: skip the filter if the cluster is already in the list of scheduling result even if the API is missed. (#5216, @yanfeng1992)karmada-controller-manager
: Ignored StatefulSet Dependencies with PVCs created via the VolumeClaimTemplates. (#5568, @jklaw90)karmada-controller-manager
: Clean up the residual annotations when resources are preempted by pp from cpp. (#5563, @zhzhuang-zju)karmada-controller-manager
: Fixed an issue that policy claim metadata might be lost during the rapid deletion and creation of PropagationPolicy(s)/ClusterPropagationPolicy(s). (#5319, @zhzhuang-zju)karmadactl
:Fixed the issue where commandscreate
,annotate
,delete
,edit
,label
, andpatch
cannot specify the namespace flag. (#5487, @zhzhuang-zju)karmadactl
: Fixed the issue that karmadactl addon failed to install karmada-scheduler-estimator due to unknown flag. (#5523, @chaosi-zju)
karmada-apiserver
andkube-controller-manager
is using v1.30.4 by default. (#5515, @liangyuanpeng)- The base image
alpine
now has been promoted fromalpine:3.20.2
toalpine:3.20.3
. - Karmada now using Golang v1.22.7. (#5529, @yelshall)
Helm chart
: Added helm index for v1.10.0 and v1.11.0 release. (#5579, @chaosi-zju)