openyurtio / yurt-device-controller

This repository contains the device-controller that leverages EdgeX Foundry to manage edge devices
Apache License 2.0
14 stars 15 forks source link

Yurt-device-controller

IMPORTANT: yurt-device-controller has been merged into the openyurt repo, so project is no longer being actively maintained and has been archived.

Archived Project

This project has been archived and is no longer being actively maintained. This means you can view and copy the code, but cannot make changes or propose pull requests.

While you're here, feel free to review the code and learn from it. If you wish to use the code or revive the project, you can fork it to your own GitHub account.


[![Version](https://img.shields.io/badge/YurtDeviceController-v0.2.0-orange)]() [![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/device-controller)](https://goreportcard.com/report/github.com/openyurtio/device-controller) [![codecov](https://codecov.io/gh/openyurtio/yurt-device-controller/branch/main/graph/badge.svg)](https://codecov.io/gh/openyurtio/yurt-device-controller)

This repository contains three CRD/controllers, Device, DeviceService and DeviceProfile:

For details of the design, please see the document.

Architecture

Yurt-device-controller introduces an approach leverages existing edge computing platforms, like EdgeX Foundry, and uses Kubernetes custom resources to abstract edge devices. Inspiring by the Unix philosophy, "Do one thing and do it well", we believe that Kubernetes should focus on managing computing resources while edge devices management can be done by adopting existing edge computing platforms. Therefore, we define several generic custom resource definitions(CRD) that act as the mediator between OpenYurt and the edge platform. Any existing edge platforms can be integrated into the OpenYurt by implementing custom controllers for these CRDs. These CRDS and corresponding controllers allow users to manage edge devices in a declarative way, which provides users with a Kubernetes-native experience and reduces the complexity of managing, operating and maintaining edge platform devices.

yurt-device-controller-architecture

The major Yurt-Device-Controller components consist of:

Getting Start

To use the yurt-device-controller, you need to deploy the OpenYurt cluster in advance and meet the following two conditions:

For a complete example, please check out the tutorial

Contributing

Contributions are welcome, whether by creating new issues or pull requests. See our contributing document to get started.

Contact

License

Yurt-device-controller is under the Apache 2.0 license. See the LICENSE file for details. Certain implementations in Yurt-device-controller rely on the existing code from Kubernetes and OpenKruise the credits go to the original authors.