Skip to content

Commit

Permalink
upgrade OpenYurt to v1.5
Browse files Browse the repository at this point in the history
  • Loading branch information
rambohe-ch committed Jul 16, 2024
1 parent 3008f5b commit 0ffa637
Show file tree
Hide file tree
Showing 7 changed files with 138 additions and 20 deletions.
118 changes: 118 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,123 @@
# CHANGELOG

## v1.5.0

### What's New

**Support Kubernetes up to V1.28**

“k8s.io/xxx” and all its related dependencies are upgraded to version “v0.28.9”, for ensuring OpenYurt is compatible with Kubernetes v1.28 version. This compatibility has been confirmed by an end-to-end (E2E) test where we started a Kubernetes v1.28 cluster using KinD and deployed the latest components of OpenYurt. At the same time, all the key components of OpenYurt, such as yurt-manager and yurthub, are deployed on the Kubernetes cluster via Helm to ensure that the Helm charts provided by the OpenYurt community can run stably in the production environment.
[#2047](https://github.com/openyurtio/openyurt/pull/2047)
[#2074](https://github.com/openyurtio/openyurt/pull/2074)

**Reduce cloud-edge traffic spike during rapid node additions**

`NodePool` resource is essential for managing groups of nodes within OpenYurt clusters, as it records details of all nodes in the collective through the `NodePool.status.nodes` field. YurtHub relies on this information to identify endpoints within the same NodePool, thereby enabling pool-level service topology functionality. However, when a large NodePool—potentially comprising thousands of nodes—experiences swift expansion, such as the integration of hundreds of edge nodes within a mere minute, the surge in cloud-to-edge network traffic can be significant. In this release, a new type of resource called `NodeBucket` has been introduced. It provides a scalable and streamlined method for managing extensive `NodePool`, significantly reducing the impact on cloud-edge traffic during periods of rapid node growth, and ensuring the stability of the clusters is maintained.
[#1864](https://github.com/openyurtio/openyurt/pull/1864)
[#1874](https://github.com/openyurtio/openyurt/pull/1874)
[#1930](https://github.com/openyurtio/openyurt/pull/1930)

**Upgrade `YurtAppSet` to v1beta1 version **

YurtAppSet v1beta1 is introduced to facilitate the management of multi-region workloads. Users can use YurtAppSet to distribute the same `WorkloadTemplate` (Deployment/Statefulset) to different nodepools by a label selector `NodePoolSelector` or nodepool name slice (`Pools`). Users can also customize the configuration of workloads in different node pools through `WorkloadTweaks`.
In this release, we have combined the functionality from the three old crds (YurtAppSet v1alpha1, YurtAppDaemon and YurtAppOverrider) in yurtappset v1beta1. We recommend to use this in favor of the old ones.
[#1890](https://github.com/openyurtio/openyurt/pull/1890)
[#1931](https://github.com/openyurtio/openyurt/pull/1931)
[#1939](https://github.com/openyurtio/openyurt/pull/1939)
[#1974](https://github.com/openyurtio/openyurt/pull/1974)
[#1997](https://github.com/openyurtio/openyurt/pull/1997)

**Improve transparent management mechanism for control traffic from edge to cloud**

The current transparent management mechanism for cloud-edge control traffic has certain limitations and cannot effectively support direct requests to the default/kubernetes service. In this release, a new transparent management mechanism for cloud-edge control traffic, aimed at enabling pods using InClusterConfig or the default/kubernetes service name to access the kube-apiserver via YurtHub without needing to be aware of the details of the public network connection between the cloud and edge.
[#1975](https://github.com/openyurtio/openyurt/pull/1975)
[#1996](https://github.com/openyurtio/openyurt/pull/1996)

**Separate clients for yurt-manager component**

Yurt-manager is an important component in cloud environment for OpenYurt which holds multiple controllers and webhooks. Those controllers and webhooks shared one client and one set of RBAC (yurt-manager-role/yurt-manager-role-binding/yurt-manager-sa) which grew bigger as we add more function into yurt-manager. This mechanism makes a controller has access it shouldn't has. and it's difficult to find out the request is from which controller from the audit logs. In the latest release, we restrict each controller/webhook to only the permissions it may use and separate RBAC and UA for different controllers and webhooks.
[#2051](https://github.com/openyurtio/openyurt/pull/2051)
[#2069](https://github.com/openyurtio/openyurt/pull/2069)

**Enhancement to Yurthub's Autonomy capabilities**

New autonomy condition have been added to node conditions so that yurthub can report autonomy status of node in real time at each nodeStatusUpdateFrequency. This condition allows for accurate determination of each node's autonomy status. In addition, an error key mechanism has been introduced to log cache failure keys along with their corresponding fault reasons. The error keys are persisted using the AOF (Append-Only File) method, ensuring that the autonomy state is recovered even after a reboot and preventing the system from entering a pseudo-autonomous state. These enhancements also facilitate easier troubleshooting when autonomy issues arise.
[#2015](https://github.com/openyurtio/openyurt/pull/2015)
[#2033](https://github.com/openyurtio/openyurt/pull/2033)
[#2096](https://github.com/openyurtio/openyurt/pull/2096)

### Other Notable changes

- improve ca data for yurthub component by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/1815
- improve FieldIndexer setting in yurt-manager by @2456868764 in https://github.com/openyurtio/openyurt/pull/1834
- fix: yurtadm join ignorePreflightErrors could not set all by @YTGhost in https://github.com/openyurtio/openyurt/pull/1837
- Feature: add name-length of dummy interface too long error by @8rxn in https://github.com/openyurtio/openyurt/pull/1875
- feat: support v3 rest api client for edgex v3 api by @wangxye in https://github.com/openyurtio/openyurt/pull/1850
- feat: support edgex napa version by auto-collector by @LavenderQAQ in https://github.com/openyurtio/openyurt/pull/1852
- feat: improve discardcloudservice filter in yurthub component (#1924) by @huangchenzhao in https://github.com/openyurtio/openyurt/pull/1926
- Add missing verb to the role of node lifecycle controller by @crazytaxii in https://github.com/openyurtio/openyurt/pull/1936
- don't cache csr and sar resource in yurthub by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/1949
- feat: improve hostNetwork mode of NodePool by adding NodeAffinity to pods with specified annotation (#1935) by @huangchenzhao in https://github.com/openyurtio/openyurt/pull/1959
- move list object handling from ObjectFilter into ResponseFilter by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/1991
- The gateway can forward traffic from extra source cidrs by @River-sh in https://github.com/openyurtio/openyurt/pull/1993
- return back watch.Deleted event to clients when watch object is removed in OjbectFilters by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/1995
- add pool service controller. by @zyjhtangtang in https://github.com/openyurtio/openyurt/pull/2010
- aggregated annotations and labels. by @zyjhtangtang in https://github.com/openyurtio/openyurt/pull/2027
- improve pod webhook for adapting hostnetwork mode nodepool by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/2050
- intercept kubelet get node request in order to reduce the traffic by @vie-serendipity in https://github.com/openyurtio/openyurt/pull/2039
- bump controller-gen to v0.13.0 by @Congrool in https://github.com/openyurtio/openyurt/pull/2056
- improve nodepool conversion by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/2080
- feat: add version metrics for yurt-manager and yurthub components by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/2094

### Fixes

- fix cache manager panic in yurthub by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/1950
- fix: upgrade the version of runc to avoid security risk by @qclc in https://github.com/openyurtio/openyurt/pull/1972
- fix only openyurt crd conversion should be handled for upgrading cert by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/2013
- fix the cache leak in yurtappoverrider controller by @MeenuyD in https://github.com/openyurtio/openyurt/pull/1795
- fix(yurt-manager): add clusterrole for nodes/status subresources by @qclc in https://github.com/openyurtio/openyurt/pull/1884
- fix: close dst file by @testwill in https://github.com/openyurtio/openyurt/pull/2046

### Proposals

- Proposal: High Availability of Edge Services by @Rui-Gan in https://github.com/openyurtio/openyurt/pull/1816
- Proposal: yurt express: openyurt data transmission system proposal by @qsfang in https://github.com/openyurtio/openyurt/pull/1840
- proposal: add NodeBucket to reduce cloud-edge traffic spike during rapid node additions. by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/1864
- Proposal: add yurtappset v1beta1 proposal by @luc99hen in https://github.com/openyurtio/openyurt/pull/1890
- proposal: improve transparent management mechanism for control traffic from edge to cloud by @rambohe-ch in https://github.com/openyurtio/openyurt/pull/1975
- Proposal: enhancement of edge autonomy by @vie-serendipity in https://github.com/openyurtio/openyurt/pull/2015
- Proposal: separate yurt-manager clients by @luc99hen in https://github.com/openyurtio/openyurt/pull/2051

### Contributors

**Thank you to everyone who contributed to this release!**

- [@wangxye](https://github.com/wangxye)
- [@huiwq1990](https://github.com/huiwq1990)
- [@testwill](https://github.com/testwill)
- [@fengshunli](https://github.com/fengshunli)
- [@Congrool](https://github.com/Congrool)
- [@zyjhtangtang](https://github.com/zyjhtangtang)
- [@vie-serendipity](https://github.com/vie-serendipity)
- [@dsy3502](https://github.com/dsy3502)
- [@YTGhost](https://github.com/YTGhost)
- [@River-sh](https://github.com/River-sh)
- [@qclc](https://github.com/qclc)
- [@lilongfeng0902](https://github.com/lilongfeng0902)
- [@NewKeyTo](https://github.com/NewKeyTo)
- [@crazytaxii](https://github.com/crazytaxii)
- [@MeenuyD](https://github.com/MeenuyD)
- [@dzcvxe](https://github.com/dzcvxe)
- [@2456868764](https://github.com/2456868764)
- [@8rxn](https://github.com/8rxn)
- [@huangchenzhao](https://github.com/huangchenzhao)
- [@karthik507](https://github.com/karthik507)
- [@MundaneImmortal](https://github.com/MundaneImmortal)
- [@rambohe-ch](https://github.com/rambohe-ch)

And thank you very much to everyone else not listed here who contributed in other ways like filing issues,
giving feedback, helping users in community group, etc.

## v1.4.0

### What's New
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

![](docs/img/OpenYurt.png)

[![Version](https://img.shields.io/badge/OpenYurt-v1.4.0-orange)](CHANGELOG.md)
[![Version](https://img.shields.io/badge/OpenYurt-v1.5.0-orange)](CHANGELOG.md)
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![Go Report Card](https://goreportcard.com/badge/github.com/openyurtio/openyurt)](https://goreportcard.com/report/github.com/openyurtio/openyurt)
[![codecov](https://codecov.io/gh/openyurtio/openyurt/branch/master/graph/badge.svg)](https://codecov.io/gh/openyurtio/openyurt)
Expand All @@ -12,10 +12,10 @@

English | [简体中文](./README.zh.md)

| ![notification](docs/img/bell-outline-badge.svg) What is NEW! |
|---------------------------------------------------------------------------------------------------------|
| Latest Release: Nov 8th, 2023. OpenYurt v1.4.0. Please check the [CHANGELOG](CHANGELOG.md) for details. |
| First Release: May 29th, 2020. OpenYurt v0.1.0-beta.1 |
| ![notification](docs/img/bell-outline-badge.svg) What is NEW! |
|-----------------------------------------------------------------------------------------------------------|
| Latest Release: July 16th, 2024. OpenYurt v1.5.0. Please check the [CHANGELOG](CHANGELOG.md) for details. |
| First Release: May 29th, 2020. OpenYurt v0.1.0-beta.1 |

[OpenYurt](https://openyurt.io) is built based on upstream Kubernetes and now hosted by the Cloud Native Computing Foundation(CNCF) as a [Sandbox Level Project](https://www.cncf.io/sandbox-projects/).

Expand All @@ -40,7 +40,7 @@ multiple physical regions, which are referred to as `Pools` in OpenYurt.
The above figure demonstrates the core OpenYurt architecture. The major components consist of:

- **[YurtHub](https://openyurt.io/docs/next/core-concepts/yurthub)**: YurtHub runs on worker nodes as static pod and serves as a node sidecar to handle requests that comes from components (like Kubelet, Kubeproxy, etc.) on worker nodes to kube-apiserver.
- **[Yurt-Manager](https://github.com/openyurtio/openyurt/tree/master/cmd/yurt-manager)**: include all controllers and webhooks for edge.
- **[Yurt-Manager](https://openyurt.io/docs/core-concepts/yurt-manager/)**: include all controllers and webhooks for edge.
- **[Raven-Agent](https://openyurt.io/docs/next/core-concepts/raven)**: It is focused on edge-edge and edge-cloud communication in OpenYurt, and provides layer 3 network connectivity among pods in different physical regions, as there are in one vanilla Kubernetes cluster.
- **Yurt-Coordinator**: One instance of Yurt-Coordinator is deployed in every edge NodePool, and in conjunction with YurtHub to provide heartbeat delegation, cloud-edge traffic multiplexing abilities, etc.
- **[YurtIoTDock](https://openyurt.io/docs/next/core-concepts/yurt-iot-dock)**: One instance of YurtIoTDock is deployed in every edge NodePool, for bridging EdgeX Foundry platform and uses Kubernetes CRD to manage edge devices.
Expand All @@ -52,8 +52,8 @@ In addition, OpenYurt also includes auxiliary controllers for integration and cu

## Getting started

OpenYurt supports Kubernetes versions up to 1.23. Using higher Kubernetes versions may cause
compatibility issues. OpenYurt installation is divided into two parts:
OpenYurt is currently certified to support up to Kubernetes version 1.28. Compatibility with subsequent versions of Kubernetes is expected, but has not yet been verified.
OpenYurt installation is divided into two parts:

- [Install OpenYurt Control Plane Components](https://openyurt.io/docs/installation/summary#part-1-install-control-plane-components)
- [Join Nodes](https://openyurt.io/docs/installation/summary#part-2-join-nodes)
Expand Down
8 changes: 4 additions & 4 deletions README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

![](docs/img/OpenYurt.png)

[![Version](https://img.shields.io/badge/OpenYurt-v1.4.0-orange)](CHANGELOG.md)
[![Version](https://img.shields.io/badge/OpenYurt-v1.5.0-orange)](CHANGELOG.md)
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![Go Report Card](https://goreportcard.com/badge/github.com/openyurtio/openyurt)](https://goreportcard.com/report/github.com/openyurtio/openyurt)
[![codecov](https://codecov.io/gh/openyurtio/openyurt/branch/master/graph/badge.svg)](https://codecov.io/gh/openyurtio/openyurt)
Expand All @@ -14,7 +14,7 @@

| ![notification](docs/img/bell-outline-badge.svg) What is NEW! |
|--------------------------------------------------------------------------|
| 最新发布:2023-11-08 OpenYurt v1.4.0 请查看 [CHANGELOG](CHANGELOG.md) 来获得更多更新细节. |
| 最新发布:2024-07-16 OpenYurt v1.5.0 请查看 [CHANGELOG](CHANGELOG.md) 来获得更多更新细节. |
| 第一个发布:2020-05-29 OpenYurt v0.1.0-beta.1 |

OpenYurt (官网: https://openyurt.io) 是基于 Upstream Kubernetes 构建的,现在是托管在云原生基金会(CNCF) 下的 [沙箱项目](https://www.cncf.io/sandbox-projects/).
Expand All @@ -38,7 +38,7 @@ OpenYurt 遵循经典的云边一体化架构。
上图展示了 OpenYurt 的核心架构。OpenYurt 的主要组件包括:

- **[YurtHub](https://openyurt.io/zh/docs/next/core-concepts/yurthub/)**:YurtHub 以静态 pod 模式在工作节点上运行,它作为节点的 Sidecar 处理所有来自工作节点上的组件(如 Kubelet, Kubeproxy 等)到 kube-apiserver 的请求。
- **[Yurt-Manager](https://github.com/openyurtio/openyurt/tree/master/cmd/yurt-manager)**:包括所有云边协同场景下的Controllers和Webhooks。
- **[Yurt-Manager](https://openyurt.io/docs/core-concepts/yurt-manager/)**:包括所有云边协同场景下的Controllers和Webhooks。
- **[Raven-Agent](https://openyurt.io/docs/next/core-concepts/raven)**: 它用于处理 OpenYurt 中的云边,边边间的跨公网通信。 主要在不同物理区域的 pod 之间提供第 3 层网络连接,就像在一个 vanilla Kubernetes 集群中一样。
- **Yurt-Coordinator(Optional)**:该组件安装会在每个边缘 NodePool 中会自动部署一个 Yurt-Coordinator 实例,它联合 YurtHub 为节点池提供心跳代理、云边缘流量复用等能力。
- **[YurtIoTDock(Optional)](https://openyurt.io/docs/next/core-concepts/yurt-iot-dock)**: 用户通过创建PlatformAdmin资源在指定节点池中安装YurtIoTDock, 它将连接EdgeX Foundry系统为用户提供云原生的边缘设备管理能力。
Expand All @@ -50,7 +50,7 @@ OpenYurt 遵循经典的云边一体化架构。

## 开始使用

OpenYurt 支持最高版本为 1.23 的 Kubernetes 。使用更高版本的 Kubernetes 可能会导致兼容性问题
OpenYurt 目前已经确认支持至 Kubernetes v1.28 版本。预计对 Kubernetes 的后续版本同样具备兼容性,但尚待验证

OpenYurt 集群安装分成 2 个部分,分别为安装 OpenYurt 管控组件和节点接入。

Expand Down
4 changes: 2 additions & 2 deletions charts/yurt-coordinator/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.4.0
version: 1.5.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.4.0"
appVersion: "1.5.0"
4 changes: 2 additions & 2 deletions charts/yurt-iot-dock/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.4.0
version: 1.5.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.4.0"
appVersion: "1.5.0"
4 changes: 2 additions & 2 deletions charts/yurt-manager/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.4.3
version: 1.5.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.4.0"
appVersion: "1.5.0"
Loading

0 comments on commit 0ffa637

Please sign in to comment.