Code Monkey home page Code Monkey logo

komoplane's Introduction

komoplane

Komodor's Crossplane Tool is a project to experiment with visualizing Crossplane resources. The goal is to help Crossplane users to understand the structure of their control plane resources and speed up troubleshooting.

Screenshot

Installation

The primary way of installing komoplane is by installing the corresponding Helm chart:

helm repo add komodorio https://helm-charts.komodor.io \
  && helm repo update komodorio \
  && helm upgrade --install komoplane komodorio/komoplane

After installing, publish port 8090 from komoplane pod and open it in your web browser.

By default, komoplane works on port 8090, you can change that via extraArgs Helm value.

Running Without Installing

It is possible to run komoplane locally as a binary process. To do so, download standalone binary from Releases. Use KUBECONTEXT env variable to point to different context of your kubeconfig.

Support & Community

We have two main channels for supporting the komoplane users: Slack community for general conversations (#komoplane channel) and GitHub issues for real bugs.

If you want to contribute some code to the project, consider looking at roadmap document with some of the ideas for improvements. Also, you may search for TODO and FIXME marks in the source code for smaller technical issues to solve. The GitHub issues list might also have some items for potential contribution.

Contributing doc contains instructions on how to setup dev environment.

More Kubernetes Tooling

The komoplane is an Open Source project founded by Komodor. There are some more k8s-related tools by Komodor for you:

  • Helm Dashboard - a GUI-based operations with Helm charts
  • validkube - a service to validate Kubernetes manifests for security and best practices
  • Kubernetes Operations Platform - freemium all-in-one platform to operate k8s clusters with builtin monitoring & costs analysis

komoplane's People

Contributors

bobh66 avatar daniel-maganto avatar dependabot[bot] avatar druchoo avatar komodor-bot avatar kumaryogesh17 avatar mickaelalliel avatar puhre avatar undera 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

komoplane's Issues

Managed resource filtering POC

We need to introduce filtering for Managed Resources, based on name, kind, API group and provider config. The scope for this issue is only frontend part of that, the backend will be implemented separately.

The effect of filter should reflect in corresponding API call query parameters, names up to dev.

Keep in mind that other Komoplane sections might also need filtering functionality, makes sense to have some reusable component for it.

XRD without claim names causes JS error

Create an XRD with no claims and the following error happens on xrd view.

Uncaught TypeError: Cannot read properties of undefined (reading 'kind')
    at Fbe (index-59f92d5a.js:382:16742)
    at bO (index-59f92d5a.js:38:19518)
    at M$ (index-59f92d5a.js:40:44027)
    at w$ (index-59f92d5a.js:40:39763)
    at Q4 (index-59f92d5a.js:40:39691)
    at m_ (index-59f92d5a.js:40:39545)
    at WR (index-59f92d5a.js:40:35913)
    at O$ (index-59f92d5a.js:40:34864)
    at R (index-59f92d5a.js:25:1535)
    at MessagePort.k (index-59f92d5a.js:25:1894)
image

Fix graph nodes alignment

When graphs are displayed, the composition nodes are misplaced
Selection_002

It has to do with the way we create and configure the graph. It does not happen always, and the cause for it is unknown. Should be simple issue with React hooks and callbacks.

The requirement is for arrows to go left-to-right always, upon initial load and upon navigation between different views.

Add graph for Composition and XRD

Composition has a reference to composite resource definition, via compositeTypeRef field. The improvement is to enable "Relations" tab for composition view drawer and XRD drawer and display relation there.

The task needs both backend and frontend work. Can be done via separate PRs by different people.

Backend needs to use same trick with full=1 query parameter, to list:

  • for composition, the XRD it refers to
  • for XRD, all compositions that refers to it

Liveness/readiness probes fail when deploying on EKS

When I deploy the helm chart on EKS 1.24 the liveness/readiness probes fail and the pod is restarted every 30 seconds.

I changed the port: http to port: 8090 for both probes and that seems to have solved the problem. I'm not sure if that's the correct fix?

Add help buttons in page headers

In each page header of application, there should be short description of what it means. The description should be taken from Crossplane docs. Also, there should be a link to corresponding place in Crossplane documentation.

Selection_006

The goal is to offer less experienced users the direction to learn Crossplane

Adding k8s APIGroup to components in the graph view

It is great that now the resource Kind is visible in each component in the graph!

It would also be valuable to see the APIGroup on the component, meaning here:
image

Maybe it is better for the APIGroup and Kind to be displayed in the box, under the name, something like:
name: <RESOURCE_NAME>
kind: <RESOURCE_KIND>
apiVersion / apiGroup: <RESOURCE_API_VERSION> / <RESOURCE_API_GROUP>

Consider using a table format

The list views (claims, compositions, managed resources, etc) are not very space-efficient, so once you have more than just a couple of items, you need to scroll, and it's hard to get an overview. Consider instead using a more dense table format, maybe even one that supports sorting/filtering

[feature] Use the "status" indicator element to filter resources on status

Currently, when we display a a Composite Resource in Komoplane, status indicators are present to show the different statuses of the managed resources

E.g. : in the following screenshot, we can see that some resources are "Synched" (green) and some are "Not Ready" (red)

image

It would be make these "status indicators" clickable to be able to filter on status in order to show only "Not Ready" resources for example

Add resource types in relations view

If you have compositions without setting external-name, it's very hard to see what's what without clicking through (which is pretty slow). It could also be showing the crossplane.io/composition-resource-name annotation value.

Screenshot from 2023-08-17 23-39-16

Cannot handle multiple deployed versions of composite resources

If more than one version of an composite resource definition exists, the function Controller.GetComposite risk of failing if the first version fetched is an non-active one.

To be more specific, the code fails here:

                gvk := schema.GroupVersionKind{ // TODO: xrd.Status.Controllers.CompositeResourceClaimTypeRef is more logical here
                        Group:   xrd.Spec.Group,
                        Version: xrd.Spec.Versions[0].Name,
                        Kind:    *kind,
                }

I have a suggestion to remedy this problem and will follow this issue up with a pull request

no Auth Provider found for name "oidc"

Failed to login using oidc auth

INFO[0000] komoplane, version 0.1.5 (9d75e0d9c32729746fcbec3837c7cbb855a3ad0b @ 2024-01-14T18:46:04Z)
FATA[0000] Failed to start: no Auth Provider found for name "oidc"

solution is simply adding

import (
.....
_ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
)

in controller pkg

[helm-chart] Unable to set annotations and labels for various resources

The Helm Chart allows setting annotations and labels for some resources but not all. Specifically, I'd like the ability to set annotations and labels for the Service.

#51 submitted for review to:

  • add default labels to ClusterRole and ClusterRoleBinding
  • add ability to specify annotations for service
  • add ability to specify labels for Ingress, Service & ServiceAccount
  • add missing serviceAccount.annotations to values.yaml

Can the baseURL of the UI be configured?

Can I configure the base URL of the komoplane UI? I am currently using a reverse proxy that's already implemented in my employer's org and want to route traffic to a specific location (ex. myorg.dev.example.com/komoplane).

Display useful message in case of error occured

In case unhandled error happens, we should display nice message, containing:

  • technical error details: error message, stacktrace
  • application version
  • call for user to report the error to the komoplane GH issues
  • suggestion to refresh the page

Something similar to this:
ch07-debugger

Feels like "React error boundary" should be involved

Setting debug in values.yaml causes error on deployment

When the komoplane.debug attribute is set to true in values.yaml the following error occurs on deployment:

Error: INSTALLATION FAILED: Deployment in version "v1" cannot be handled as a Deployment: json: cannot unmarshal number into Go struct field EnvVar.spec.template.spec.containers.env.value of type string

The problem is that the value 1 is being used in the template for the ENV var which gets translated as an integer, instead of '1' which would be translated as a string.

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.