GithubHelp home page GithubHelp logo

kubeshop / monokle Goto Github PK

View Code? Open in Web Editor NEW
1.5K 19.0 120.0 664.95 MB

๐Ÿง Monokle Desktop empowers you to better create, understand, and deploy YAML manifests with a visual UI that also provides policy validation and cluster insights.

Home Page: https://monokle.io

License: MIT License

JavaScript 0.54% TypeScript 98.83% HTML 0.05% CSS 0.46% Shell 0.12% Batchfile 0.01%
kubernetes ide helm open-source k8s typescript kustomize devops desktop-tools kubernetes-manifests

monokle's Introduction

Monokle Logo Light Monokle Logo Dark

Website | Documentation | Discord | Blog

๐Ÿง Monokle streamlines the process of creating, analyzing, and deploying Kubernetes configurations by providing a unified visual tool for authoring YAML manifests, validating policies, and managing live clusters.

Latest Release License Discord Nightly Build Snyk

Click on the image or this link to watch the "Intro to Monokle" short video (4 mins)

Core Features

  • ๐Ÿ‘ฉโ€๐Ÿ’ป Single IDE for your configuration files, manifests, resources and cluster management
  • ๐ŸŒค๏ธ Connect to your clusters and see real time state and resources
  • โšก Quickly get a high-level view of your manifests, their contained resources and relationships
  • ๐Ÿ“‡ Leverage Git to manage the lifecycle of your configuration
  • ๐Ÿ‘Œ Validate your manifests in real time against YAML formatting, K8s schemas including CRD installed, and easily follow links
  • โœ… Validate resources using OPA policy rules or define your own
  • ๐Ÿ–Š๏ธ Easily edit and create resources without having to learn or look up yaml syntax and see the changes applied
  • ๐Ÿ”จ Refactor resources with maintained integrity of names and references
  • ๐Ÿ“ท Preview and debug resources generated with kustomize or helm
  • โž• Visualize extended resources defined in CRD
  • ๐Ÿค Compare resource versions against your cluster and apply changes immediately or through pull requests
  • ๐Ÿ“š Create multi-step forms using Monokle's templating system to quickly generate manifests
  • ๐Ÿ’ก And much more, check out the Documentation

Read the Feature Overview document or the introductory blog-post to get a quick intro and overview.

Download & Install

Windows MacOS Linux
Download .exe Download .dmg Download .rpm/.deb/.appImage

Roadmap

Our roadmap is always being updated and improved:

  • A new streamlined interface that works better for git flows and complex configuration scenarios, where cognitive load is high
  • Additional work on the git and gitops flows, including conflict management and pull request creation
  • Better CRD management
  • A CLI
  • Advanced features for cluster management
  • Drift analysis
  • Integration to other open source projects about configuration for K8s
  • Improved templates for K8s resources, CRD, and Helm and Kustomize

Don't hesitate to provide any feedback you might have to help us prioritize and improve our backlog!

Getting involved

monokle's People

Contributors

andreivinaga avatar ayushgml avatar chargio avatar chlete avatar corpydev avatar dependabot[bot] avatar devcatalin avatar dipankardas011 avatar eduardivanov22 avatar egeren avatar erdkse avatar jenil777007 avatar jfermi avatar jmelnych avatar kambydyne avatar karthikraju391 avatar kube-test-and avatar manoukyanmari avatar monojack avatar mortada-codes avatar olensmar avatar rajeevsharma121 avatar snyk-bot avatar sriniva7 avatar stan-gabriel avatar steenkamby avatar tierica9002 avatar topliceanurazvan avatar toxer10 avatar witodelnat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

monokle's Issues

File-actions in file explorer

Common actions:

  • rename, delete
  • exclude/include when parsing
  • reveal file in explorer/finder
  • copy path / copy relative path
  • ?

For rename/delete we need to make sure that any file references to the file are updated/removed (in kustomization.yaml files)

refactor resourcetype-specific code to "ResourceHandlers"..

Instead of having k8s-resource specific code/configuration spread out we could define a ResourceHandler interface that provides this for each resource;

  • retrieving from cluster
  • retrieving for diff
  • add to navigator
  • parsing references
  • providing editors/views
  • providing default content when creating

this would make it easier to add new or modify existing resources - as each resource type would have one handler with all related functionality

Enable log-viewer

Need to fix:

  • don't use Monaco for log-rendering
  • ensure everything we want logged is actually logged
  • ?

main thread state machine for resolving cli commands

To avoid loss of responsiveness in the ui, and to enable ease of plugin development. Build a standardised statemachine to execute cli commands in worker threads, communicating with the renderer thread through ipc events.

Chained calls to sync actions may resolve quickly, but depending on the size of the data, cpu/ram/disk speed, network bandwidth, os latency, they might get really really slow.

The purpose of this task is to decouple cli executions from the ui/redux logic.

Multiple concurrent cli calls must be supported.

Cancelling a call must be supported (if the user click preview on one item, then changes his mind, clicks on another item, we dont want the first irrelevant call continuing).

Cli's we might potentially call:

kubectl
helm
terraform
git / gh (pr's)
minikube
oc (openshift)
curl
cloud provider cli for managed k8s
own scripts bundled with monokle
scripts bundled with plugins

Show links between local and cluster resources in Cluster Compare

which would allow users to see refs/links between objects in cluster and manifests.

  • we would need to distinguish cluster objects from manifest objects in the object navigator somehow - and handle objects that exist both in the cluster and in manifests
  • previewing kustomizations should still be possible (to see how generated objects interact with cluster)

-> this could replace the "Show Cluster Objects" button; a separate "show only cluster objects" option would achieve the same as this button does today!?

monocli

A cli tool to support:

Piping resources to monokle.
Doing our internal resource parsing.

(maybe adding functionality like monocli validate folder/ to run monokles checks on yaml, schema checks, checking for dead refs.)

Extension mechanism for plugins

Plugins should be able to provide:

  • navigator sections
  • global actions to be added to either the left or right toolbar
  • resource-type specific
    • editors / views
    • link-resolvers
    • actions
    • schemas/uiSchemas and specific extensions to the form editor
      ?

Diff all resources against selected cluster

Describe the enhancement you'd like to see
It would be nice to have a Diff button in the Navigator's title bar which would open a Modal containing two navigator-like panels.
Using those panels, we should easily see the differences across all resources from the folder and cluster.

Right menu buttons stop working after clicking graphview

Describe the bug
When feature flag is enabled, the right menu graph button only works once for enabling the view, then the menu stops responding (events not firing). The logs button can be pressed multiple times with no issue.

To Reproduce
Steps to reproduce the behavior:

  1. Enable feature flags for right menu and graphview
  2. click on graph button
  3. click on it again

Expected behavior
Should toggle the right side

Project mgmt functionality

Allow for switching between different projects - each project containing settings for:

  • root folder
  • default cluster
  • preferences
  • k8s version - see #321
  • git-repository - ahead of #720
  • ?

Explorers and editors not showing on startup

Describe the bug
When I launch monokle I only see the left toolbar and top/bottom panes - the rest is blank

To Reproduce
Steps to reproduce the behavior:

  1. Run monokle on my machine

Expected behavior
All UI components should be visible on startup

Desktop (please complete the following information):

  • OS: Latest Windows

New Resource action/wizard

The possibility to create new resources - with support for resource-type specific templates/wizards.

Initial version for all resource kinds should ask for:

  • kind of Resource to create - required
  • name - required
  • Advanced: (optional)
    • version - required, we will set initial value automatically
    • target namespace (select from existing in project - and cluster?) - optional

This would create an unsaved resource - when the user saves we will prompt for a file/folder (which must be under the current root folder)

Extremely slow resource opening

Describe the bug
I have more than 3000 resources. I have to wait up to 10 seconds each time a file is opened.

To Reproduce
Steps to reproduce the behavior:
0. Open DevTools in Monokle, use the shortcut "Ctrl+Shift+I" or the key

  1. Go to Cluster View
  2. Click on Show Cluster Objects
  3. Click on any Pods file in Navigator
  4. Each time the file is opened, reloads yaml.worker.a9f4cd15.worker.js

Desktop:

  • OS: Ubuntu
  • Version 20.04

bug

Recalculate resource refs on editor update

We currently recalculate resource refs when a resource is saved in the source or form editors - we should be able to recalculate while the user is editing - given that we:

  • use a debounce to avoid recalculating for every keypress
  • only recalculate links that could actually be affected by changes in the current resource
  • update the underlying resource and mark it as "dirty" somehow - also in the navigator - so that users can save it later or do batch saves (as suggested by #180

"Create application" wizards - with templates

In the wizard, you would give a unique namespace name, choose from options like nginx or databases, point to a docker file somewhere.

Monokle would create a folder with all the resouces that is ready to be applied to the cluster.

Improve resource-save mechanics

We currently require users to save changes explicitly to a resource before they leave the corresponding editor - we should improve this:

  • update resource.text/content on each debounced change in editors, with corresponding recalculations of links
  • add an isDirty flag to K8Resource
  • show if a resource is dirty in navigator
  • add a save-all action somewhere - to save all dirty resources

Navigation history

to quickly move back and forward between resources that I've worked on - back/forward links !?

Plugin Manager

Once we have #177 in place we should add a Plugin-manager to the UI where users can:

  • search for and add plugins from a central repository
  • add plugins from a local folder
  • enable/disable installed plugins
  • remove installed plugins
  • get notified if updates are available for installed plugins

Batch-save of changed resources

Instead of having to save resources individually it should be possible to aggregate all changes and save all at once

  • Modified resources/files should be marked as changed in their corresponding navigators
  • Actions for "Save all", "Discard all"

CI: Clean-up nightly build drafts

Nightly Builds will create a tag/draft release daily.

We should clean these up and only keep the last 7 for troubleshooting purposes.

Monokle script to run from shell

Is your feature request related to a problem? Please describe.
I want to run monokle from directory containing my kubernetes resource definition files

Describe the solution you'd like
monokle script which run (new/current) instance of monkle
nice-to-have: Installation from monokle (like VSCode: Install 'code' command in PATH)

"Rename Resource" refactoring

When renaming a resource I would like Monokle to automatically update any incoming references to the resource based on the name - so for example changing the name of a configmap i would like any references to that configmap to be automatically updated.

This could be via a dedicated "Rename Resource" action in the navigator - with a corresponding hotkey and action in the editor itself

Improved OS integration

We should leverage some of the possibilities in electron to provide system menu items, etc

"Clone resource" action

I would like to be able to clone an existing resource as a starting point for creating new resources - preferably via a right-click action on an existing resource that would prompt me for a new resource name and file to save it in.

Mark resources that exist in current cluster

When loading / previewing resources it would be nice to easily identify which already exist in my configured cluster - some kind of visual marker!?

Perhaps red = doesn't exist, orange = exists but different, green = exists

Cluster mgmt

Monokle currently only works with one cluster - it should be possible to configure multiple clusters and easily switch between them when previewing/diffing/etc..

a networkview for 'meta-info' about connections between pods

Ee compile all the info we have, and do a network connections section. Where we find the subset of rules that apply somewhere, and describe it, maybe generate a custom name like "namespace a's pods -> namespace b's pods with dev label", so selecting this piece of meta-info would highlight all the pieces of selector config, that made the pods in a and b exist and be allowed to talk to each other.

Object filtering in Navigator

Users should be able to filter objects not only on namespace but also on:

  • labels (existence + values)
  • annotations (existence + values)
  • name
  • resource kind
  • ?

Mockups:
#170 object filtering in navigator 2
#170 object filtering in navigator 1

Figma link:
https://www.figma.com/file/qFKlVXObNmXmk0TXUd3sOL/170-object-filtering-in-navigator-1?node-id=0%3A1

Components used:

  1. https://ant.design/components/dropdown/?theme=dark#components-dropdown-demo-trigger
  2. https://ant.design/components/tree-select/?theme=dark#components-tree-select-demo-checkable

Improve visual readability of Navigator pane.

When looking into Navigator Pane it's hard to see the difference between main sections like Workloads or Storage and their sub-resources like deployment setc. Everything is white and just difference in small-big phont. Hard to navigate.

Hide empty sections in navigator

We currently hide empty subsections when loading/previewing resources - would be nice if empty sections were hidden also - to make navigation easier (see #208)

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.