From 194a14881a106ffb0215414cf0bd77f7580a554a Mon Sep 17 00:00:00 2001 From: changzhen Date: Fri, 20 Jan 2023 14:44:27 +0800 Subject: [PATCH] add v1.4.0 changelog Signed-off-by: changzhen --- docs/CHANGELOG/CHANGELOG-1.4.md | 123 ++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 docs/CHANGELOG/CHANGELOG-1.4.md diff --git a/docs/CHANGELOG/CHANGELOG-1.4.md b/docs/CHANGELOG/CHANGELOG-1.4.md new file mode 100644 index 000000000..34205bd73 --- /dev/null +++ b/docs/CHANGELOG/CHANGELOG-1.4.md @@ -0,0 +1,123 @@ +* [v1.4.0](#v140) + * [Downloads for v1.4.0](#downloads-for-v140) + * [Karmada v1.4 Release Notes](#karmada-v14-release-notes) + * [1.4 What's New](#whats-new) + * [Other Notable Changes](#other-notable-changes) + * [Other](#other) + +# v1.4.0 +## Downloads for v1.4.0 + +Download v1.4.0 in the [v1.4.0 release page](https://github.com/karmada-io/karmada/releases/tag/v1.4.0). + +## Karmada v1.4 Release Notes +### What's New +#### #Declarative Resource Interpreter + +The [Interpreter Framework](https://karmada.io/docs/next/userguide/globalview/customizing-resource-interpreter/) is designed for interpreting the structure of arbitrary resource types. It consists of `built-in` and `customized` interpreters, this release introduced another brand-new customized interpreter. + +With the newly introduced `declarative` [interpreter](https://karmada.io/docs/userguide/globalview/customizing-resource-interpreter), users can quickly customize resource interpreters for both Kubernetes resources and CRD resources by the rules declared in the `ResourceInterpreterCustomization` API specification. Compared with the interpreter customized by the webhook, it gets the rules from the declarative specifications instead of requiring an additional webhook component. + +The new command named `interpret` in the `karmadactl` could be used to test the rules before applying them to the system. +Some examples are provided to help users better understand how this interpreter can be used. + +(Feature contributor: @jameszhangyukun @ikaven1024 @chaunceyjiang @XiShanYongYe-Chang @RainbowMango) + +#### PropagationPolicy/ClusterPropagationPolicy priority +Users are now able to declare the priority for both `PropagationPolicy` and `ClusterPropagationPolicy`, a policy will be applied for the matched resource templates if there are no other policies with higher priority at the point of the resource template be processed. + +The priority could be used by the system administrator to manage and control the policies. Refer to [Configure PropagationPolicy priority](https://karmada.io/docs/userguide/scheduling/resource-propagating#configure-propagationpolicy-priority) for more details. + +(Feature contributor: @Garrybest @jwcesign) + +#### Instrumentation improvement + +This release enhanced observability significantly through metrics and events. +The metrics can be queried by the endpoint(`/metrics`) of each component using an HTTP scrap, and they are served in Prometheus format. And the events are reported to the relevant resource objects respectively. + +Refer to [events](https://karmada.io/docs/reference/instrumentation/event) and [metrics](https://karmada.io/docs/reference/instrumentation/metrics) for more details. + +(Feature contributor: @Poor12) + +### Other Notable Changes + +#### API Changes + +- Introduce priority to PropagationPolicy. ([#2758](https://github.com/karmada-io/karmada/pull/2758), @RainbowMango) +- Introduced `LabelsOverrider` and `AnnotationsOverrider` for overriding labels and annotations.([#2584](https://github.com/karmada-io/karmada/pull/2584), @chaunceyjiang) +- evolute PropagateDeps FeatureGate to Beta and enable it by default. ([#2875](https://github.com/karmada-io/karmada/pull/2875), @XiShanYongYe-Chang) +- evolute Failover/GracefulEviction FeatureGate to Beta and enable it by default. ([#2876](https://github.com/karmada-io/karmada/pull/2876), @jwcesign) +- evolute CustomizedClusterResourceModeling FeatureGate to Beta and enable it by default. ([#2877](https://github.com/karmada-io/karmada/pull/2877), @Poor12) + +#### Bug Fixes +- `karmada-search`: fix concurrent map writes panic while list objects via proxy. ([#2483](https://github.com/karmada-io/karmada/pull/2483), @ikaven1024) +- `karmada-search`: Fixed returned ResourceVersion by proxy not stable issue. ([#2746](https://github.com/karmada-io/karmada/pull/2746), @cmicat) +- `karmada-controller-manager`/`karmada-agent`: Fixed pod information can not be collected issue when building resource summary. ([#2489](https://github.com/karmada-io/karmada/pull/2489), @Poor12) +- `karmada-controller-manager`: use cluster secret ref namespace in unified-auth-controller when generate ClusterRoleBinding. ([#2516](https://github.com/karmada-io/karmada/pull/2516), @XiShanYongYe-Chang) +- `karmada-controller-manager`: fix the error of resources whose name contains colons failing to be created. ([#2549](https://github.com/karmada-io/karmada/pull/2549), @XiShanYongYe-Chang) +- `karmada-controller-manager`: Fixed the panic when cluster ImpersonatorSecretRef is nil.([#2675](https://github.com/karmada-io/karmada/pull/2675), @stingshen) +- `karmada-controller-manager`: Fix serviceaccount continual regeneration by service account controller.([#2578](https://github.com/karmada-io/karmada/pull/2578), @Poor12) +- `karmada-controller-manager`: Disable the preemption matching of pp/cpp priority. ([#2734](https://github.com/karmada-io/karmada/pull/2734), @XiShanYongYe-Chang) +- `karmada-controller-manager`: Fix clusterOverridePolicy and overridePolicy with nil resource selector could not work. ([#2771](https://github.com/karmada-io/karmada/pull/2771), @wuyingjun-lucky) +- `karmada-controlle-managerr`: ignore resource that do not match with policy before apply policy. ([#2786](https://github.com/karmada-io/karmada/pull/2786), @XiShanYongYe-Chang) +- `karmada-agent`: Fixed `ServiceExport` controller can not report `endpointSlices` issue(due to miss `create` permission). ([#2515](https://github.com/karmada-io/karmada/pull/2515), @lonelyCZ) +- `karmadactl`: Fixed `init` can not honor IPV6 address issue when generating kubeconfig file. ([#2450](https://github.com/karmada-io/karmada/pull/2450), @duanmengkk) +- `karmadactl`: Fixed `--karmada-data` directory not initialization issue in `init` command. ([#2548](https://github.com/karmada-io/karmada/pull/2548), @jwcesign) +- `karmadactl`: Fixed `init` commands print incorrect register command issue. ([#2707](https://github.com/karmada-io/karmada/pull/2707), @Songjoy) +- `karmadactl`: Fix namespace already exists. ([#2505](https://github.com/karmada-io/karmada/pull/2505), @cleverhu) +- `karmada-webhook`: Fixed failed to set resource selector default namespace if the relevant OverridePolicy and PropagationPolicy with namespace unset issue. ([#2858](https://github.com/karmada-io/karmada/pull/2858), @carlory) + +#### Security +- `Security`: Add limitReader to `io.ReadAll` which could limit the memory request and avoid DoS attacks. ([#2765](https://github.com/karmada-io/karmada/pull/2765), @Poor12) + +#### Features & Enhancements +- `karmadactl`: Improve karmada init help output. ([#2342](https://github.com/karmada-io/karmada/pull/2342), @my-git9) +- `karmadactl`: karmadactl prohibit input extra arguments for `init` command. ([#2497](https://github.com/karmada-io/karmada/pull/2497), @helen-frank) +- `karmadactl`/`chart`: The `init` no longer creates redundant ServiceAccounts for components except `karmada-agent`. ([#2523](https://github.com/karmada-io/karmada/pull/2523), @carlory) +- `karmadactl`: Fixed options of `deinit` can not be shown issue. ([#2540](https://github.com/karmada-io/karmada/pull/2540), @helen-frank) +- `karmadactl/chart`: if karmada is installed by using karmadactl or helm chart with default configuration, the image version of karmada-kube-controller-manager/karmada-apiserver will be kube-controller-manager:v1.25.2/kube-apiserver:v1.25.2. ([#2539](https://github.com/karmada-io/karmada/pull/2539), @jwcesign) +- `karmadactl`: Introduced `--karmada-apiserver-advertise-address` flag to specify Karmada APIserver's address to the `init` sub-command. ([#2550](https://github.com/karmada-io/karmada/pull/2550), @wuyingjun-lucky) +- `karmadactl`: introduce --enable-cert-rotation option to register command.([#2596](https://github.com/karmada-io/karmada/pull/2596), @lonelyCZ) +- `karmadactl`: uncordon add dryrun ([#2760](https://github.com/karmada-io/karmada/pull/2760), @helen-frank) +- `karmadactl`: karmadactl get add validate cluster exist ([#2787](https://github.com/karmada-io/karmada/pull/2787), @helen-frank) +- `karmadactl`: add liveness probe into the kube-controller-manager component ([#2817](https://github.com/karmada-io/karmada/pull/2817), @carlory) +- `karmadactl`: `init` add `--image-registry` flags ([#2655](https://github.com/karmada-io/karmada/pull/2655), @helen-frank) +- `karmadactl`: add interpreter command for resource interpret customizations. ([#2750](https://github.com/karmada-io/karmada/pull/2750), @ikaven1024) +- `karmadactl`: add execute mod for interpret command. ([#2824](https://github.com/karmada-io/karmada/pull/2824), @ikaven1024) +- `karmada-search`: objects returned by proxy will have `resource.karmada.io/cached-from-cluster` annotation to indicate which member cluster from. ([#2469](https://github.com/karmada-io/karmada/pull/2469), @ikaven1024) +- `karmada-search`: users can get the real resource request metrics while using the proxy. ([#2481](https://github.com/karmada-io/karmada/pull/2481), @ikaven1024) +- `karmada-search`: users now can use `--disable-search` and `--disable-proxy` options to disable search and proxy feature (default both are enabled).([#2650](https://github.com/karmada-io/karmada/pull/2650), @ikaven1024) +- `karmada-controller-manager`: add implicit priority for PropagationPolicy. ([#2267](https://github.com/karmada-io/karmada/pull/2267), @Garrybest) +- `karmada-controller-manager`: Introduced resource label `namespace.karmada.io/skip-auto-propagation: "true"` which can label the namespaces that should be skipped from auto propagation.([#2696](https://github.com/karmada-io/karmada/pull/2696), @jwcesign) +- `karmada-controller-manager`: allow users to update the `.spec.resourceSelectors` filed of `PropagationPolicy/ClusterPropagationPolicy`. ([#2562](https://github.com/karmada-io/karmada/pull/2562), @XiShanYongYe-Chang) +- karmada-controller-manager`: Introduce priority to PropagationPolicy. ([#2767](https://github.com/karmada-io/karmada/pull/2767), @jwcesign) +- `karmada-scheduler-estimator`: leverage scheduler cache to estimate replicas.([#2704](https://github.com/karmada-io/karmada/pull/2704), @Garrybest) +- `karmada-controller-manager`: do not propagate finalizers to member cluster ([#2870](https://github.com/karmada-io/karmada/pull/2870), @stingshen) +- `karmada-scheduler`/`karmada-scheduler-descheduler`: Introduced `--scheduler-estimator-service-prefix` flag for discovery estimators.([#2527](https://github.com/karmada-io/karmada/pull/2527), @carlory) +- `karmada-scheduler`: add scheduling diagnosis.([#2302](https://github.com/karmada-io/karmada/pull/2302), @Garrybest) +- `karmada-agent`: introduce auto certificate rotation function.([#2596](https://github.com/karmada-io/karmada/pull/2596), @lonelyCZ) +- `karmada-webhook`: Prevent modifying and creating `ResourceInterpreterCustomization` using the same interpretation rules. ([#2755](https://github.com/karmada-io/karmada/pull/2755), @chaunceyjiang) +- validate cluster fields: provider, region and zone. ([#2849](https://github.com/karmada-io/karmada/pull/2849), @carlory) + +### Other +#### Dependencies +- Download images from docker hub by default. ([#2795](https://github.com/karmada-io/karmada/pull/2795), @jwcesign) +- Karmada is now built with Golang 1.19.3. ([#2857](https://github.com/karmada-io/karmada/pull/2857), @RainbowMango) + +#### Helm Chart +- `Helm Chart`: add descheduler name suffix of chart deployment manifest ([#2330](https://github.com/karmada-io/karmada/pull/2330), @calvin0327) +- `HelmChart`: Fixed liveness probe misconfiguration which caused kube-controller-manager to always `CrashLoopBackup`. ([#2277](https://github.com/karmada-io/karmada/pull/2277), @calvin0327 ) +- `chart`: Fix use custom certs lead to post-install-job failed and kube-controller-manager crash by missing /etc/karmada/pki/server-ca.key.([#2637](https://github.com/karmada-io/karmada/pull/2637), @631068264) + +#### Instrumentation +- `Instrumentation`: Introduced the `GetDependenciesSucceed` and `GetDependenciesFailed` to the resource template. Introduced the `SyncScheduleResultToDependenciesSucceed` and `SyncScheduleResultToDependenciesFailed` to `resourceBinding` object. ([#2773](https://github.com/karmada-io/karmada/pull/2773), @Poor12 ) +- `Instrumentation`: Introduce `EvictWorkloadFromClusterSucceed`, `EvictWorkloadFromClusterFailed` to the `binding` object and its reference. Refactor the event name of `TaintManagerEviction`. ([#2835](https://github.com/karmada-io/karmada/pull/2835), @Poor12) +- `Instrumentation`: Introduced the `resource_find_matched_policy_duration_seconds`, `resource_apply_policy_duration_seconds`, `policy_apply_attempts_total`, `binding_sync_work_duration_seconds`, `work_sync_workload_duration_seconds` metrics. ([#2868](https://github.com/karmada-io/karmada/pull/2868), @Poor12 ) +- `Instrumentation`: Introduced the `CreateExecutionSpaceSucceed` and `RemoveExecutionSpaceSucceed` events to `Cluster` object. ([#2688](https://github.com/karmada-io/karmada/pull/2688), @Poor12) +- `Instrumentation`: Introduced the `ApplyOverridePolicySucceed` and `ApplyOverridePolicyFailed` events to workload. ([#2764](https://github.com/karmada-io/karmada/pull/2764), @Poor12) +- `Instrumentation`: Introduced the `ReflectStatusToWorkSucceed`, `ReflectStatusToWorkFailed`, `InterpretHealthSucceed` and `InterpretHealthFailed` events to `work` object. ([#2770](https://github.com/karmada-io/karmada/pull/2770), @Poor12) +- `Instrumentation`: Introduced the `SyncImpersonationConfigSucceed` and `SyncImpersonationConfigFailed` to the `cluster` object.([#2796](https://github.com/karmada-io/karmada/pull/2796), @Poor12) +- `Instrumentation`: Apply `AggregateStatusFailed`, `AggregateStatusSucceed`, `SyncWorkSucceed`, and `SyncWorkFailed` to the `federatedResourceQuota` object. ([#2812](https://github.com/karmada-io/karmada/pull/2812), @Poor12) +- `Instrumentation`: introduce `SyncDerivedServiceSucceed` and `SyncDerivedServiceFailed` to the `serviceImport` object. ([#2830](https://github.com/karmada-io/karmada/pull/2830), @Poor12) +- `Instrumentation`: Introduced the `cluster_ready_info`, `cluster_node_number`, `cluster_ready_node_number`, `cluster_memory_allocatable_bytes`, `cluster_cpu_allocatable_number`, `cluster_pod_allocatable_number`, `cluster_memory_allocated_bytes`, `cluster_cpu_allocated_number`, `cluster_pod_allocated_number`, `cluster_sync_status_duration` to record the cluster status in `karmada-controller-manager` and `karmada-agent`. (@Poor12 [#2496](https://github.com/karmada-io/karmada/pull/2496) +- `Instrumentation`: introduced the `framework_extension_point_duration_seconds` and `plugin_execution_duration_seconds` metrics for `karmada-scheduler`.([#2087](https://github.com/karmada-io/karmada/pull/2087), @Poor12)