Giter Site home page Giter Site logo

dashboard's Introduction

KubeEdge

Go Report Card LICENSE Releases CII Best Practices

English | 简体中文

KubeEdge is built upon Kubernetes and extends native containerized application orchestration and device management to hosts at the Edge. It consists of cloud part and edge part, provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT which enables edge devices to access through edge nodes.

With KubeEdge it is easy to get and deploy existing complicated machine learning, image recognition, event processing and other high level applications to the Edge. With business logic running at the Edge, much larger volumes of data can be secured & processed locally where the data is produced. With data processed at the Edge, the responsiveness is increased dramatically and data privacy is protected.

KubeEdge is an incubation-level hosted project by the Cloud Native Computing Foundation (CNCF). KubeEdge incubation announcement by CNCF.

Advantages

  • Kubernetes-native support: Managing edge applications and edge devices in the cloud with fully compatible Kubernetes APIs.
  • Cloud-Edge Reliable Collaboration: Ensure reliable messages delivery without loss over unstable cloud-edge network.
  • Edge Autonomy: Ensure edge nodes run autonomously and the applications in edge run normally, when the cloud-edge network is unstable or edge is offline and restarted.
  • Edge Devices Management: Managing edge devices through Kubernetes native APIs implemented by CRD.
  • Extremely Lightweight Edge Agent: Extremely lightweight Edge Agent(EdgeCore) to run on resource constrained edge.

How It Works

KubeEdge consists of cloud part and edge part.

Architecture

In the Cloud

  • CloudHub: a web socket server responsible for watching changes at the cloud side, caching and sending messages to EdgeHub.
  • EdgeController: an extended kubernetes controller which manages edge nodes and pods metadata so that the data can be targeted to a specific edge node.
  • DeviceController: an extended kubernetes controller which manages devices so that the device metadata/status data can be synced between edge and cloud.

On the Edge

  • EdgeHub: a web socket client responsible for interacting with Cloud Service for the edge computing (like Edge Controller as in the KubeEdge Architecture). This includes syncing cloud-side resource updates to the edge, and reporting edge-side host and device status changes to the cloud.
  • Edged: an agent that runs on edge nodes and manages containerized applications.
  • EventBus: a MQTT client to interact with MQTT servers (mosquitto), offering publish and subscribe capabilities to other components.
  • ServiceBus: an HTTP client to interact with HTTP servers (REST), offering HTTP client capabilities to components of cloud to reach HTTP servers running at edge.
  • DeviceTwin: responsible for storing device status and syncing device status to the cloud. It also provides query interfaces for applications.
  • MetaManager: the message processor between edged and edgehub. It is also responsible for storing/retrieving metadata to/from a lightweight database (SQLite).

Kubernetes compatibility

Kubernetes 1.20 Kubernetes 1.21 Kubernetes 1.22 Kubernetes 1.23 Kubernetes 1.24 Kubernetes 1.25 Kubernetes 1.26 Kubernetes 1.27 Kubernetes 1.28 Kubernetes 1.29
KubeEdge 1.12 - - - - - - -
KubeEdge 1.13 + - - - - - -
KubeEdge 1.14 + + - - - - -
KubeEdge 1.15 + + + + - - -
KubeEdge 1.16 + + + + + - -
KubeEdge 1.17 + + + + + + -
KubeEdge HEAD (master) + + + + + + +

Key:

  • KubeEdge and the Kubernetes version are exactly compatible.
  • + KubeEdge has features or API objects that may not be present in the Kubernetes version.
  • - The Kubernetes version has features or API objects that KubeEdge can't use.

Guides

Get start with this doc.

See our documentation on kubeedge.io for more details.

To learn deeply about KubeEdge, try some examples on examples.

Roadmap

Meeting

Regular Community Meeting:

Resources:

Contact

If you need support, start with the troubleshooting guide, and work your way through the process that we've outlined.

If you have questions, feel free to reach out to us in the following ways:

Contributing

If you're interested in being a contributor and want to get involved in developing the KubeEdge code, please see CONTRIBUTING for details on submitting patches and the contribution workflow.

Security

Security Audit

A third party security audit of KubeEdge has been completed in July 2022. Additionally, the KubeEdge community completed an overall system security analysis of KubeEdge. The detailed reports are as follows.

Reporting security vulnerabilities

We encourage security researchers, industry organizations and users to proactively report suspected vulnerabilities to our security team ([email protected]), the team will help diagnose the severity of the issue and determine how to address the issue as soon as possible.

For further details please see Security Policy for our security process and how to report vulnerabilities.

License

KubeEdge is under the Apache 2.0 license. See the LICENSE file for details.

dashboard's People

Contributors

amishakumari544 avatar githubcq avatar kevin-wangzefeng avatar skykubeedge avatar vincentgoat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dashboard's Issues

Umbrella issue for UI dashboard

Prerequisites for using UI DashBoard

Already installed the KubeEdge cluster.

Features and Tasks

After configuring the k8s address, you can use the CRUD functions of KubeEdge. The detailed modules and APIs are as follows.
Feel free to comment if there is anything missing and welcome all contributors.

  • The basic framework

    • Building user interfaces based on React
  • Edge Node

    • GET /api/v1/nodes
    • GET /api/v1/nodes/{node-name}
    • DELETE /api/v1/nodes/{node-name}
    • PUT /api/v1/nodes/{node-name}
  • Deployments/Pods

    • POST /apis/apps/v1/namespaces/{default}/deployments -d{body}
    • PUT /apis/apps/v1/namespaces/{default}/deployments/{deployment-name} -d{body}
    • GET /apis/apps/v1/namespaces/{default}/deployments
    • GET /apis/apps/v1/namespaces/{default}/deployments/{deployment-name}
    • DELETE /apis/apps/v1/namespaces/{default}/deployments/{deployment-name}
    • GET /api/v1/namespaces/{default}/pods
    • DELETE /api/v1/namespaces/{default}/pods/{pod-name}
  • Configmaps

    • POST /api/v1/namespaces/{default}/configmaps -d{body}
    • PUT /api/v1/namespaces/{default}/configmaps/{cm} -d{body}
    • GET /api/v1/namespaces/{default}/configmaps
    • GET /api/v1/namespaces/{default}/configmaps/{cm}
    • DELETE /api/v1/namespaces/{default}/configmaps/{cm}
  • Secrets

    • POST /api/v1/namespaces/default/secrets -d{body}
    • PUT /api/v1/namespaces/default/secrets -d{body}
    • GET /api/v1/namespaces/default/secrets
    • GET /api/v1/namespaces/default/secrets/{name}
    • DELETE /api/v1/namespaces/default/secrets/{name}
  • Services

    • POST /api/v1/namespaces/default/services -d{body}
    • PUT /api/v1/namespaces/default/services -d{body}
    • GET /api/v1/namespaces/default/services
    • GET /api/v1/namespaces/default/services/{name}
    • DELETE /api/v1/namespaces/default/services/{name}
  • Devices

    • POST /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devices -d{body}
    • PUT /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devices -d{body}
    • GET /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devices
    • GET /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devices/{device}
    • DELETE /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devices/{device}
  • DeviceModel

    • POST /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devicemodels -d{body}
    • PUT /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devicemodels -d{body}
    • GET /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devicemodels
    • GET /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devicemodels/{device}
    • DELETE /apis/devices.kubeedge.io/v1alpha2/namespaces/default/devicemodels/{device}
  • Policy

    • POST /api/v1/namespaces/default/serviceaccounts -d{body}
    • PUT /api/v1/namespaces/default/serviceaccounts -d{body}
    • GET /api/v1/namespaces/default/serviceaccounts
    • GET /api/v1/namespaces/default/serviceaccounts/{account}
    • DELETE /api/v1/namespaces/default/serviceaccounts/{account}
    • POST /apis/rbac.authorization.k8s.io/v1/namespaces/default/roles -d{body}
    • PUT /apis/rbac.authorization.k8s.io/v1/namespaces/default/roles -d{body}
    • GET /apis/rbac.authorization.k8s.io/v1/namespaces/default/roles
    • GET /apis/rbac.authorization.k8s.io/v1/namespaces/default/roles/{role}
    • DELETE /apis/rbac.authorization.k8s.io/v1/namespaces/default/roles/{role}
    • POST /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings -d{body}
    • PUT /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings -d{body}
    • GET /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings
    • GET /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/{role}
    • DELETE /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/{role}
    • POST /apis/rbac.authorization.k8s.io/v1/clusterrolebindings -d{body}
    • PUT /apis/rbac.authorization.k8s.io/v1/clusterrolebindings -d{body}
    • GET /apis/rbac.authorization.k8s.io/v1/clusterrolebindings
    • GET /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{role}
    • DELETE /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{role}
    • POST /apis/rbac.authorization.k8s.io/v1/clusterroles -d{body}
    • PUT /apis/rbac.authorization.k8s.io/v1/clusterroles -d{body}
    • GET /apis/rbac.authorization.k8s.io/v1/clusterroles
    • GET /apis/rbac.authorization.k8s.io/v1/clusterroles/{role}
    • DELETE /apis/rbac.authorization.k8s.io/v1/clusterroles/{role}
  • EdgeApplication

    • POST /apis/apps.kubeedge.io/v1alpha1/namespaces/default/edgeapplications -d{body}
    • PUT /apis/apps.kubeedge.io/v1alpha1/namespaces/default/edgeapplications -d{body}
    • GET /apis/apps.kubeedge.io/v1alpha1/namespaces/default/edgeapplications
    • GET /apis/apps.kubeedge.io/v1alpha1/namespaces/default/edgeapplications/{app}
    • DELETE /apis/apps.kubeedge.io/v1alpha1/namespaces/default/edgeapplications/{app}
  • Nodegroup

    • POST /apis/apps.kubeedge.io/v1alpha1/nodegroups -d{body}
    • PUT /apis/apps.kubeedge.io/v1alpha1/nodegroups -d{body}
    • GET /apis/apps.kubeedge.io/v1alpha1/nodegroups
    • GET /apis/apps.kubeedge.io/v1alpha1/nodegroups/{group}
    • DELETE /apis/apps.kubeedge.io/v1alpha1/nodegroups/{app}
  • CRD

    • GET /apis/apiextensions.k8s.io/v1/customresourcedefinitions
  • Rule

    • POST /apis/rules.kubeedge.io/v1/namespaces/default/rules -d{body}
    • PUT /apis/rules.kubeedge.io/v1/namespaces/default/rules -d{body}
    • GET /apis/rules.kubeedge.io/v1/namespaces/default/rules
    • GET /apis/rules.kubeedge.io/v1/namespaces/default/rules/{rule}
    • DELETE /apis/rules.kubeedge.io/v1/namespaces/default/rules/{rule}
  • RuleEndpoint

    • POST /apis/rules.kubeedge.io/v1/namespaces/default/ruleendpoints -d{body}
    • PUT /apis/rules.kubeedge.io/v1/namespaces/default/ruleendpoints -d{body}
    • GET /apis/rules.kubeedge.io/v1/namespaces/default/ruleendpoints
    • GET /apis/rules.kubeedge.io/v1/namespaces/default/ruleendpoints/{ruleendpoint}
    • DELETE /apis/rules.kubeedge.io/v1/namespaces/default/ruleendpoints/{ruleendpoint}

Advance features

  • Deployed by containerized and helm
  • Optimized the home page
  • Added node upgrade function
  • Collect and display metrics data
  • Dashboard on Edge
  • Provide the ComboBox to select the installation package, and the "Quick Installation" function.
  • Batch installation of edge nodes on the control plane via ssh

I found two interfaces reporting 404

What happened?

After I deployed the dashboard, I found that there were two interfaces on the page that reported 404 errors. The interfaces were:/apis/apps. kubeedge. io/v1alpha1/edgeapplications/ Apis/apps. kubedge. io/v1alpha1/nodegroups

What did you expect to happen?

I hope to find a solution to this problem

How can we reproduce it (as minimally and precisely as possible)?

The wrong interface is:
/apis/apps.kubeedge.io/v1alpha1/edgeapplications
/apis/apps.kubeedge.io/v1alpha1/nodegroups

Anything else we need to know?

No response

What browsers are you seeing the problem on?

No response

KubeEdge Dashboard version

latest

KubeEdge version

KubeEdge1.11

Dev environment

No response

dashboard for edge when the cloud edge network is disconnected

What would you like to be added?

dashboard can be deployed at the edge node .

Why is this needed?

When the cloud edge network is disconnected, can we use the metaServer 10550 port (provided by edgecore) at the edge to deploy the dashboard at the edge to better view the resource status.
when connected:
image
when disconnected:
image

add dependabot.yml file

What would you like to be added?

dependabot file

Why is this needed?

To update the required file with the latest version.

Issue template for the contributors

Issue template provides ease for the new folks who want to open an issue.

  • It differentiates the various types of issues such as Code, Bug, Docs, Others
  • It also follows community standards that should be added while opening the issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.