The community has released the new milestone release v1.6 of KubeVela during the 2022 Apsara Conference. This release is a qualitative change in KubeVela from application delivery to application management. It also creates a precedent in the industry to build an application platform with delivery and management integrated based on a extensible model.
With the advent of the cloud-native era, developers have to use more and more complex APIs to build cloud-native-compliant application architectures from powerful infrastructure and clouds. But it's difficult to use and has a high learning curve for app developers. This also brings great stability risks due to the direct operation of the underlying infrastructure. Kubernetes provides a unified API integration interface for the infrastructure, but it’s a platform for platform developers. The application-centric interface is missing for upper-level application developers. Open Application Model (OAM) has come into being to meet these requirements. It was jointly released by Alibaba and Microsoft in 2019. The two companies brought a lot of practical experience in cloud-native application development and provided a theoretical basis for building an application platform in the cloud-native era.
After OAM was released, it was welcomed and adopted by many enterprises, including Oracle, Tencent, ByteDance, and 4Paradigm. However, for some enterprises, OAM is a theoretical model with no practical platforms that can be used directly. Thus, it is difficult to land. As a result, Alibaba Cloud engineers joined forces with enterprises that adopted OAM in the community and built an out-of-the-box OAM implementation engine based on common practice. Then, KubeVela was born.
Standard and Extensible Application Delivery Engine
KubeVela was officially released in November 2020 and has always adhered to the design principles of flexibility, extensibility, and separation of concerns. The goal is to connect cloud-native technology components and enterprise-level applications to help developers in the enterprise quickly obtain an easy, secure, and reliable software delivery and management experience. Less than a year after becoming open-source, it has provided core features (such as multi-cluster unified orchestration, infrastructure independence, and application delivery workflow). It officially joined CNCF in June 2021 and was widely welcomed by community users.
Today, KubeVela has been adopted by more than 300 domestic and overseas enterprises, including China Merchants Bank, ByteDance, Li Auto, and Shein. The entire OAM and KubeVela community contains dozens of ecological projects, which have accumulated more than 8000 stars and received many contributions from more than 300 developers from dozens of countries worldwide.
Picture 1: Unified Application Delivery of KubeVela
KubeVela helps enterprises build unified application delivery capabilities. With KubeVela's unified architecture, enterprises can simultaneously deliver microservice containers, cloud database, frontend static pages, and their internal custom extensions in one configuration file, completing the orchestration and operational management of diverse workloads. Developers of business applications no longer need to worry about the differences in Kubernetes resource versions or different disk specifications during delivery. KubeVela provides comprehensive version management, grayscale release, CI/CD docking, multi-cluster management, and other functions for the description of a unified application, significantly reducing the threshold for enterprises to use cloud-native technology.
With the development of the community, more enterprises use KubeVela as the core engine of the internal PaaS platform. Based on the unified model and addon extension mechanism at the upper layer of KubeVela, a series of advanced features have been developed, including security, observability, and GitOps. A large number of core contributors have emerged, including China Merchants Bank, Napptive, and JD Cloud. They contribute many new features and addons to the KubeVela ecosystem, gradually extending the boundaries of KubeVela from application delivery to application day-2 management.
New Milestone: United App Delivery and Day-2 Management
This release has four core directions.
Visualize Resource Status: From the first deployment of an application to the subsequent continuous delivery, KubeVela visualizes the delivery process and topology of the entire application resources and automatically generates an observability dashboard containing more than 100 core metrics to help developers locate problems by themselves. More importantly, the resource visualization capability can easily access user-defined resources to meet user-defined observability configuration requirements and realize unified observability at the multi-cluster level.
Make Platform Capabilities More Like Addons: KubeVela has built a flexible, extensible, and self-installed platform capability addon center and more than 50 out-of-the-box addons. These addons include cloud resources, GitOps, observability, FinOps, IoT, and other scenarios. They help business developers flexibly build solutions for different scenarios and reduce the mental burden of users through the practical experience of the community.
Automate the Delivery Process: The KubeVela declarative workflow system has the capability of operating system resources and adds a large number of advanced features (such as condition judgment, parameter transfer, and branch concurrency). Each process can be extended by configuration language programming. More than ten scenario-based workflows (including multi-cluster grayscale release, CI/CD docking, and secure and compliant access) help developers easily complete self-service application orchestration.
Unify Environment Management: You no longer need to prepare a Kubernetes cluster in advance to install KubeVela. KubeVela provides a self-service one-click offline installation tool for developers to install a complete set of control panels locally or on virtual machines. It combines multi-cluster delivery and management capabilities to help developers realize unified management in the whole process and multi-environment of development, testing, and production.
Picture 2: Application Platform with Integrated Delivery and Management
In-Depth Interpretation of New Version Functions
Since KubeVela officially released version 1.0 in April 2021, OAM has been continuously verified by KubeVela and gradually stabilized. KubeVela's previous version iterations can always ensure the forward compatibility of the API, corresponding to OAM version 0.3.1. According to SemVer's international practice of naming versions, the version number released this time is 1.6. Although the version number has only increased by 0.1, this release is the overall presentation of KubeVela's application management capabilities since version 1.2 was released more than a year ago. Next, we will conduct an in-depth interpretation of the core functions one by one.
Prioritize Resource Visualization
Based on the OAM concept, extensibility and abstraction are the two core features of KubeVela. However, abstraction often represents a black box. Once users encounter problems that are difficult to troubleshoot and can't see the progress and status of resource delivery, management will be more difficult. We have solved the problem of resource visualization based on extensibility in this release. KubeVela automatically discovers Kubernetes native resources and helps users build resource topology maps. You can automatically generate a topology map for user-defined extended resources by describing the configuration of a resource association relationship.
This also means resource visualization is prioritized in the KubeVela system. KubeVela can fully describe the topology, view underlying container events and logs, and obtain the overall delivery status for any workload contained in an application. The following picture shows the resource topology of KubeVela.
Picture 3: VelaUX Resource Visualization Process
VelaUX Documentation: https://kubevela.net/docs/reference/addons/velaux
In addition, KubeVela provides a top interactive interface for command-line users, which allows users to easily view the status of delivered resources and fully meet the usage habits of different developers.
Picture 4: Diagram of Vela Top Command Line Operation
Vela Top Command Line Operation Documentation: https://kubevela.net/docs/tutorials/vela-top
Support for Application-Level Observability
Observability is the top priority in application management. This release of KubeVela has also comprehensively improved observability. Specifically, it consists of observability infrastructure construction, application-oriented observability, and observability as code.
KubeVela Observability Documentation: https://kubevela.net/docs/platform-engineers/operations/observability
KubeVela's addon system can help users that do not have observability infrastructure create the entire observability software stack with one click. As shown in the following picture, it includes common observability services (such as Prometheus and Grafana) and metrics and log collection for business scenarios (such as mysql-exporter). After the addon is installed, you can automatically see the built-in dashboards of the platform and quickly build the observability application platform.
Picture 5: Out-of-the-Box Observability Addons
KubeVela allows users that already have observability services to integrate the deployed Prometheus and Grafana services through standard APIs, including the stable, reliable, and unlimited observability services that are self-created or provided by cloud vendors, such as Alibaba Cloud ARMS.
A major feature of KubeVela is that it drives complete application delivery through a top-level application description (YAML). Observability is no exception. The KubeVela controller automatically generates a monitoring dashboard for the application by selecting the O&M features corresponding to logs or metrics.
Picture 6: Application-Oriented Observability
The user portal is an application-oriented dashboard. You can view the component status, version information, and the generated resources in the application. It also contains the dashboard links corresponding to various sub-resources. You can dive into the sub-resources and see detailed information as needed. You can easily understand the full picture of resources from the perspective of applications, whether they are Kubernetes native resources or custom resources.
Observability as Code
The ability to support the application observability underlying layer is completed by Infrastructure as Code (IaC). This also means KubeVela has made the full link IaC from metric collection (including log collection), parsing, enrichment, storage, data source registration and the dashboard visualization.
The following picture shows how to create a Grafana dashboard using IaC. The IaC module allows you to ”create-dashboard”. Similarly, these include creating data sources, importing dashboards, etc. These routine actions are fully built-in in the KubeVela community, and you can use them directly without learning details. If you want to do some customization, you can orchestrate your process through IaC to customize observability for your platform.
Picture 7: Observability as Code
Unified Management of Multi-Environment Pipeline
Development, testing, and production of different environment management are the problems of application management. KubeVela's unified application model can deliver applications and initialize the environment. It naturally supports the management of multi-cluster and can install infrastructure components of different clusters with one click. In version 1.4, we released the VelaD project, which can pull up the complete environment of KubeVela on the local machine without relying on Kubernetes. Developers can quickly build and validate applications locally (or in virtual machines) for an environment consistent with production. The management of different environments has been improved in this release.
This release adds an independent pipeline capability. Compared with the application-level workflows of KubeVela, the independent pipeline has the following features:
It can manage multiple KubeVela applications and create them across multiple environments.
It is not bound to an application and can be used independently. For example, it scales in and out a group of resources, performs process-oriented grayscale release for an application, and performs a group of O&M operations in batches.
It is one-time and does not manage resources. Deleting the pipeline in time will not delete the created resources.
It is homologous to the execution engine of the application pipeline, which inherits the characteristics of KubeVela's lightweight workflow. Compared with the traditional container-based CI pipeline, KubeVela's pipeline does not rely on containers and does not require additional computing resources when performing various resource operations.
As shown in the following picture, when using it, we can obtain the built-in pipeline template, fill in the environment context parameters, and quickly execute. The following example shows multiple KubeVela platform addons opened through the pipeline. The KubeVela application is behind the addons.
Picture 8: KubeVela Pipeline UI Diagram
Integrate and Manage Configurations
Configuration management is one of the cores of application management. KubeVela's configuration management mainly helps users share configurations between applications and integrate configurations with third-party external systems to realize unified configuration management. For example, you can connect to external systems (such as container image repositories and Helm repositories) and third-party cloud services (such as the ARMS observability suite mentioned above).
KubeVela configuration management uses the Secret API of Kubernetes as the carrier of configuration data. The application is used for multi-cluster distribution on demand. Applications can read configurations by mounting secrets commonly used in Kubernetes and connecting to the permission system. In addition, if a business application supports reading configurations from a third-party configuration management platform (such as Nacos), you can specify to export the configuration content to the services when defining configuration templates, thus reusing the configuration distribution capabilities of registries.
You can perform configuration management operations from UI/CLI and perform configuration reading and writing operations in application workflows and pipelines. It combines the data transfer capabilities and motion orchestration capabilities of a pipeline to implement diverse scenarios (such as configuration sharing and automatic configuration injection among applications).
Picture 9: Diagram of Configuration Management
The Ecology and Future of KubeVela
This upgrade of KubeVela adds many application management capabilities to the original application delivery, which is a big step forward for the goal of helping application developers obtain an easy, reliable, and secure software development experience.
Today, KubeVela is a Kubernetes-based controller and a platform with many ecological projects. From the connectivity of the underlying infrastructure, and user-oriented interface at the upper layer, to the extensible ecosystem integration, KubeVela is growing rapidly, fulfilling the beautiful vision of OAM at the beginning of its release - to make the delivery and management of applications simpler, safer, and more reliable!
Picture 10: Tool Ecosystem of KubeVela
In the future, the KubeVela community will continue to enrich out-of-the-box system addons, enrich scenario-oriented application delivery and management solutions, and gradually settle community practices into OAM application standards, building a development, unified, and standardized cloud-native application ecosystem.