Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature][Design] KCL UI and Backstage Plugin for GitClickOps #613

Open
Peefy opened this issue Jul 20, 2023 · 0 comments
Open

[Feature][Design] KCL UI and Backstage Plugin for GitClickOps #613

Peefy opened this issue Jul 20, 2023 · 0 comments

Comments

@Peefy
Copy link
Contributor

Peefy commented Jul 20, 2023

Background

KCL is currently limited in some aspects as a combination of a range of languages and tools

  • As language and tools for describing intentions and abstractions, it may be able to solve up to 50% of problems and require corresponding choreographers or engines to consume this intention. We can integrate this with configuration synchronization tools in the community, such as kubectl, argocd and KusionStack on the client side and KCL operators at runtime.
  • Domain languages always have a threshold for providing a UI that is easier to spread and use. Note that the UI mentioned here is not limited to a specific form, it can be an IDE interface, dashboard, Notebook, etc.
  • When designing the KCL UI, we can also consider integrating with CNCF projects such as Backstage, as Backstage does provide a high degree of freedom for custom plugin mechanisms and most of the configuration related projects in CNCF are integrated with Backstage.
  • Considering that platform based products are generally slow to form and KCL's own Registry platform (may integrate with CNCF artifact hub) is currently developing, priority should be given to integrating KCL into other platform based products. Simultaneously conceptualizing and building an overall platform infrastructure based on UI design.

What is Backstage and KCL

Backstage is an open platform for building developer portals. It unifies your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.

KCL is an open-source, constraint-based record and functional language that enhances the writing of complex configurations, including those for cloud-native scenarios. With its advanced programming language technology and practices, KCL is dedicated to promoting better modularity, scalability, and stability for configurations. It enables simpler logic writing and offers ease of automation APIs and integration with homegrown systems.

image

Benefits of Backstage KCL UI Plugin

Backstage acts as a "platform of platforms" or marketplace between infra/platform teams and end-users. It sits on top of infrastructure and developer tooling, abstracting infrastructure away. It aims to remove context switching and cognitive overload that drag engineers down.

Goals

  • As the basis and guidance for subsequent design of Registry and Registry backend.
  • Reduce the cognitive burden of KCL users through KCL UI interaction, and quickly get started with use cases in 5 minutes.
  • Using a unified UI to cascade workflows instead of frequent context switching to manually configure various technical products.
  • Seamless interaction with cloud native components such as Kubernetes, ArgoCD, CI/CD, Secret management, Auth etc. through the Backstage visualization plugin with Backstage KCL UI and backend plugins.

Design

KCL UI

Note: The design and implementation of KCL UI can not only be used for Backstage plugins, but can also be used separately to connect the entire workflow of users.

Workflow Overview

  • Code
    • Auth/Identity
    • Application and Deployment Management
      • Workspace
      • Codify/Low Code
      • Test
      • Realtime validation
      • ...
    • Registry Integration
      • Search
      • Template
      • ...
    • VCS Integration
    • AI Code Generation
  • Ship
    • LiveDiff
    • Drift Detection
    • CI/CD Integration
    • ...
  • Run
    • Kubernetes Integration: Cluster and Resource
  • Monitor
    • Monitoring integration e.g., Prometheus, Grafana
  • Other
    • Setting Page
    • Guide Page

Main Page

image

Application Page

  • App Dashboard

image

  • New App Page

image

Status Page

image

Environment Page

image

Pipeline Page

image

Cluster Page

  • KUI Integration

UserInfo Page

image

Design of Config & Schema UI Automatic form Generation Scheme for GitClickOps

We use KCL Schema and the builtin info decorator to complete form generation for the overall design. The workflow is as follows:

image

image

  • OpenAPIv3 Schema

image

    1. OpenAPIv3 Schema + Info Definitions to UI Schema
    1. UI Schema Render UI Form
    1. Summit Form to get the json config
    1. Import the json config to KCL config and use the KCL schema to validate the config.

Backstage KCL UI and Backend Plugin

Using backstage-cli to manage UI plugins and backend plugins and flow Backstage plugin documents.

Dependency

Plugin Repo

https://github.com/kcl-lang/backstage-kcl

Reference

@Peefy Peefy added this to the v0.6.0 Release milestone Jul 20, 2023
@Peefy Peefy self-assigned this Jul 20, 2023
@Peefy Peefy changed the title [Enhancement] KCL Backstage UI Plugin [Feature] KCL Backstage UI Plugin Jul 21, 2023
@Peefy Peefy changed the title [Feature] KCL Backstage UI Plugin [Feature] KCL UI and Backstage Plugin Jul 24, 2023
@Peefy Peefy changed the title [Feature] KCL UI and Backstage Plugin [WIP] [Feature] KCL UI and Backstage Plugin Jul 25, 2023
@Peefy Peefy changed the title [WIP] [Feature] KCL UI and Backstage Plugin [Feature] KCL UI and Backstage Plugin Aug 22, 2023
@Peefy Peefy removed this from the v0.6.0 Release milestone Sep 11, 2023
@Peefy Peefy changed the title [Feature] KCL UI and Backstage Plugin [Feature][Track] KCL UI and Backstage Plugin Oct 9, 2023
@Peefy Peefy added the track label Oct 9, 2023
@Peefy Peefy changed the title [Feature][Track] KCL UI and Backstage Plugin [Feature][Design] KCL UI and Backstage Plugin Nov 15, 2023
@Peefy Peefy changed the title [Feature][Design] KCL UI and Backstage Plugin [Feature][Design] KCL UI and Backstage Plugin for GitClickOps Jan 9, 2024
@zong-zhe zong-zhe assigned zong-zhe and unassigned amyXia1994 Jan 24, 2024
@Peefy Peefy added this to the v0.9.0 Release milestone Feb 22, 2024
@Peefy Peefy removed their assignment Mar 27, 2024
@Peefy Peefy removed this from the v0.9.0 Release milestone May 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Status: Backlog
Development

No branches or pull requests

3 participants