BaetylBlog

Baetyl 2.0

By July 8, 2020No Comments

Written by Leding Li, Chair of the Baetyl Technical Steering Committee and Chief Architect at Baidu Cloud IoT

Baetyl, a Stage 1 (at-large) project under the LF Edge umbrella, seamlessly extends cloud computing, data and services to edge devices, enabling developers to build light, secure and scalable edge applications.  Today, Baetyl is thrilled to announce Baetyl 2.0, which features the long-awaited remote management system and support for the Kubernetes ecosystem.

A number of active contributors from the Baetyl community helped develop these new features to Baetyl, which brings Baetyl closer to its fundamental goal of creating a free and open edge computing platform.

Other Baetyl 2.0 features include:

  • A new remote management system called Baetyl-Cloud to support the management of multiple edge nodes.
  • The Edge and Remote Management system all evolve to Cloud Native model and are supported to run on both vanilla Kubernetes and K3S.
  •  A “declarative resource definition” design for edge-cloud synchronization through IoT device shadows.
  • An internal architecture upgrade to support future edge clusters.

We have always believed that a complete edge computing system should not only have the hosting capabilities to support applications and services running on a variety of devices, but also make developers be freed from insecure physical consoles, and that devices should be able to be operated and managed remotely in bulk, which is especially meaningful for devices that are about to be placed in remote, dangerous, or harsh environments. Remote management also combines edge computing together with existing cloud computing, allowing data to cross physical boundaries in the desired way, making application development and deployment more agile.

In order to ensure the cohesion of the code, we created a new repository for Baetyl-Cloud at https://github.com/baetyl/baetyl-cloud/. The first Baetyl-Cloud official release will provide a wide range of management capabilities by its OpenAPI:

  • Edge node management: support for multi-device group management, tag-based application synchronization, node information and application information collection and display.
  • Application deployment management: Supports deploying container applications, function calculations, and AI inference services by tag.
  • Configuration management: Supports management of nodes, functions, secrets, certificates, and container repository.
  • Batch management: Use a pre-prepared configuration to pre-install a large number of devices for out-of-the-box use.

Another important feature in Baetyl 2.0 is the Cloud Native support. We changed the underlying runtime of Baetyl from Docker to Kubernetes, and at the same time changed the way Baetyl main program is run, making it a container instance with administrative privileges running in Kubernetes. This change will bring many benefits to developers, including:

  • Updatable main program. In the original model, the Baetyl system itself needs to be updated manually or using the operating system package manager, which inevitably requires the operator to obtain a console. The new model considers “system updates” as part of Baetyl OTA, which will make edge devices can always keep in touch with the latest security update and bug fixes.
  • Multi-container applications that can be updated separately. In the original model, although each container is a completely independent service, the upgrade needs to be carried out together, and the operator cannot define the runtime dependencies between services. The new model leverages Kubernetes’ rich application definitions and enables each service to be independently deployed and upgraded, which will allow edge devices to have more diverse functions.
  • Future support for edge clusters. In the original model, limited to the capabilities of Docker, a Baetyl instance could only be deployed on a single device. The new model enables Baetyl instance to be distributed on multiple different work nodes by the orchestration capabilities of Kubernetes which can not only improve the total computing power, but also obtain higher availability.

Behind these new functions, we have also redesigned the communication protocol between Baetyl and Baetyl-Cloud, which combines the declarative resource definition style of Kubernetes and the device shadow mechanism of the IoT.

Declarative resource definition implements an idempotent distributed communication method, which ingeniously guarantees the consistency of resources in the entire distributed system. However, this method relies on high-quality network conditions. In edge computing scenarios with high latency, packet loss, and unscheduled network interruptions, a lighter communication mechanism suitable for unstable networks is needed.

For this reason, Baetyl-Cloud will convert the declaration of resources into the status expectation of the device shadow and continue to send notifications to Baetyl devices with MQTT message. Baetyl device decodes and uses the resource declaration and then reports the new device shadow status with MQTT message too. Through this method, we can always synchronize the cloud and the edge correctly under weak network conditions.

The above new features will be available immediately with the official release of Baetyl 2.0. Click here for more information.

Other resources for Baetyl include: