Giter VIP home page Giter VIP logo

kubero-dev / kubero Goto Github PK

View Code? Open in Web Editor NEW
2.1K 22.0 73.0 9.23 MB

A free and self-hosted Heroku PaaS alternative for Kubernetes that implements GitOps

Home Page: https://demo.kubero.dev

License: GNU General Public License v3.0

TypeScript 53.27% Dockerfile 0.12% JavaScript 0.30% HTML 0.06% Vue 46.23% SCSS 0.03%
kubernetes hosting application-development ci-cd operator developer-tools heroku infrastructure productivity gitops internal-developer-platform self-hosted paas cloud hacktoberfest nodejs self-hosting

kubero's Introduction



License GitHub release (latest by date) Discord GitHub (Pre-)Release Date Demo


Kubero [pronounced: Kube Hero] is a fully self-hosted Internal Developer Platform (IDP) that brings the workflows of Heroku to your Kubernetes cluster. It enables you to deploy your applications with a few clicks. It has a built-in CI/CD pipeline and supports multiple staging environments.

More Screenshots and a full video on YouTube

How it Works (DEMO)

  1. Create a pipeline with the phases you need (review, test, stage, production)
  2. Connect the pipeline to your git repository (Github, Bitbucket, Gitlab, Gitea, Gogs)
  3. Configure your apps with cronjobs and addons

Kubero initiates two containers: one for cloning your repository and another for building your app. Once the build is complete, Kubero will launch the final container and make it accessible via the configured domain.

Features

  • Create unlimited CI/CD pipelines with up to 4 separate staging environments for all your applications
  • Automatically build, start, and cleanup review-apps after opening/closing a pull request
  • Automatic redeployment of the app based on a push to a branch or tag
  • Create scheduled tasks as cronjobs
  • Deploy well known apps with templates (Wordpress, Grafana, ...)
  • Easy deployment of your docker containers on Kubernetes without helm charts
  • Deploy add-ons for your application (PostgreSQL, Redis, and more ...)
  • Easy access of application logs in the UI
  • Easy and safe restart of the application in the UI
  • Triggered or periodic vulnerability scans of your running apps
  • Comes with an API and CLI to integrate with your existing tools and CI/CD
  • Built-in container console
  • SSO with Github and Oauth2

Supported GIT repositories (hosted and self-hosted)

  • Gitea / Forgejo
  • Gogs
  • Github
  • Gitlab
  • Bitbucket

Tested languages/frameworks

Basically everything that can be packaged in a single container can be deployed by Kubero.

  • GoLang (including Hugo, gin-gonic)
  • Python (including Flask)
  • JavaScript/NodeJS
  • PHP (including Laravel)
  • Ruby (including Rails)
  • Static HTML
  • Rust (including Rocket)
  • ...

You find the preconfigured buildpacks and examples here: https://github.com/kubero-dev/buildpacks

Add-ons

Addon Maintainer Built in*
MySQL Bitnami
PostgreSQL Bitnami
Redis Bitnami
MongoDB Bitnami
Elasticsearch Bitnami
Kafka Bitnami
CouchDB Apache
Haraka Mail Server Kubero
Memcache Bitnami
RabbitMQ Bitnami
Cludflare Tunnels Adianth
Minio Minio
Percona MongoDB Cluster Percona
Crunchy Postgres Cluster Crunchy Data
Redis Cluster Opstree
CockroachDB CockroachDB

* Ships with the Kubero Operator

Planned Add-ons

Longterm future Add-ons

60+ Application templates (similar to Heroku Buttons)

Check out the full list here or submit your own app! Read here how to do it.

Basic Concept

Kubero is Kubernetes native and runs with two containers on any Kubernetes instance.

Quickstart

1) Download and unpack the Kubero CLI (MacOS, Linux, Windows)

Binaries (MacOS, Linux)

curl -fsSL get.kubero.dev | bash

Brew (MacOS, Linux)

brew tap kubero-dev/kubero
brew install kubero-cli

2) Run kubero install to install all components on a new or your existing cluster

You can bring your own cluster or create one with the kubero install on one of the following providers:

  • GKE
  • Scaleway
  • DigitalOcean
  • Linode
  • Kind (local)

Documentation

https://docs.kubero.dev/

Roadmap

https://github.com/orgs/kubero-dev/projects/1/views/3

Community

kubero Discord server Banner

Contributing

All contributions are welcome!

  • Open an issue
  • Add a feature or open a feature request
  • Discuss ideas in the discussions
  • Fix typos
  • Contribute code
  • Write articles

Supporting this project

Starring this project is a huge motivation. ⭐ Thank you!

Stargazers over time

kubero's People

Contributors

ahmethakanbesel avatar aju100 avatar cskiwi avatar dependabot[bot] avatar etcook avatar gboutte avatar james-martinez avatar josegonzalez avatar kingdevnl avatar liohmoeller avatar mms-gianni avatar nicolaiort avatar pucilpet avatar thomiceli avatar xorl 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  avatar  avatar  avatar

kubero's Issues

Gitea integration has a Bug

Investigating

Version < v1.3.0

[1] listRepos: gitea
[1] Response {
[1]   size: 0,
[1]   timeout: 0,
[1]   data: null,
[1]   error: FetchError: invalid json response body at http://localhost:3000/api/v1undefined reason: Unexpected token < in JSON at position 0
[1]       at /kubero/node_modules/node-fetch/lib/index.js:273:32
[1]       at processTicksAndRejections (node:internal/process/task_queues:96:5)
[1]       at async/kubero-dev/kubero/node_modules/gitea-js/dist/index.js:145:44 {
[1]     type: 'invalid-json'
[1]   },
[1]   [Symbol(Body internals)]: {
[1]     body: PassThrough {
[1]       _readableState: [ReadableState],
[1]       _events: [Object: null prototype],
[1]       _eventsCount: 4,
[1]       _maxListeners: undefined,
[1]       _writableState: [WritableState],
[1]       allowHalfOpen: true,
[1]       [Symbol(kCapture)]: false,
[1]       [Symbol(kCallback)]: null
[1]     },
[1]     disturbed: true,
[1]     error: null
[1]   },
[1]   [Symbol(Response internals)]: {
[1]     url: 'http://localhost:3000/api/v1undefined',
[1]     status: 404,
[1]     statusText: 'Not Found',
[1]     headers: Headers { [Symbol(map)]: [Object: null prototype] },
[1]     counter: 0
[1]   }
[1] }

Build ARM Image for the Operator

How to check :

kubectl get pods --all-namespaces | grep kubero-operator-controller-manage

Results in following error:

kubero-operator-system   kubero-operator-controller-manager-XXXXXXXXX   0/2     ErrImagePull        0          3m8s

Improve Addons Site

The links on the addon name are useless.

There should be also a docs link directly to kubero logs.

Add hugo builder to buildpacks

Would love to have Hugo as a buildpack for Kubero.

you already have the buildpack, just need to add it to the API for pulldown :)

GitOps problems when using extra volumes

If you are using external volumes you may see pods stuck in the init fetch container after an automatic git push deployment or restart.

This is because the extra volume can not be mounted twice. The PVC (Persistant Volume Claim) is created as RWO ( ReadWriteOnce )

Not sure how to fix this yet. Changing the deployment strategy ( which would not be so cool, since it may lead to service disruptions during deployment) or changing extra volumes to RWM (ReadWriteMany)

Web pods always is set to 1 in UI

When setting up an app in the UI, I turn web pods to 0 and worker pods to 1 but web pods still return 1 when the app generates the Kuberoapp .
Screenshot 2022-12-19 at 9 35 03 AM
Screenshot 2022-12-19 at 9 41 10 AM

Are applications deployed highly available?

Although as far as I understand from docs they are not, but it will be great if we could implement deploy as highly available system, which basically tries to create 3 copies of application with pod affinity to deploy on different nodes ensuring high availability

Liveness and Readiness probes

Currently I am setting up a nodejs app and not listening on any ports. My deployments don't go into a ready state and restart because the liveness and readiness timeouts. Can liveness and readiness probes be configured or turned off ?

Startup fails when Bitbucket credentials are missing

Will fix this today

09:27:42 - Starting compilation in watch mode...
[0]
[1] socket.io started
[1] load kubectl config from file
[1] Gitlab API: undefined
[1] Gitlab token: glpat-.......
[1]  BITBUCKET CLOUD API LATEST UPDATES:  https://developer.atlassian.com/cloud/bitbucket
[1] /Users/carafagi/workdir/kubero-dev/kubero/node_modules/bitbucket/lib/index.umd.js:15
var r}function W(e){var r,t;return!1!==U(e)&&("function"==typeof(r=e.constructor)&&(!1!==U(t=r.prototype)&&!1!==t.hasOwnProperty("isPrototypeOf")))}function F(){var e=arguments.length>0&&void 0!==argum

Improve TLS integration (SSL)

We need a check box for every app to enable TLS support with cert-manager headers.

Operator and CLI are prepared already.

Version missmatch with HPA (Horizontal Pod Autoscaling)

Affects only Version v1.5.0

The Operator does not check vor installed resource version :

"failed to get candidate release: unable to recognize \"\": no matches for kind \"HorizontalPodAutoscaler\" in version \"autoscaling/v2beta1\"

In some cases it is autoscaling/v2

to check which resource you have use kubectl api-resources

{"level":"error","ts":1671789873.250903,"logger":"helm.controller","msg":"Failed to sync release","namespace":"customcommand-stage","name":"tls","apiVersion":"application.kubero.dev/v1alpha1","kind":"KuberoApp","release":"tls","error":"failed to get candidate release: unable to recognize \"\": no matches for kind \"HorizontalPodAutoscaler\" in version \"autoscaling/v2beta1\"","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:114\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:311\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:227"}

Add persistent volumes

Heroku still does not provide a persistent storage for their pods.

But many apps require it to run. So why don't add it?

Github - pull correct branch names

currently, the UI for GH repo's shows a static set of repos, it should show the correct ones.

For any repo, it shows the following branches:

dumm-pr2
dumm-pr
main
noProc

It will default to main

Restarting app fails

Kubero Version : v1.3.1
Kubero Operator Version : v0.0.74

restart app: test
restart app: test
ERROR: deployments.apps "test-kuberoapp-web" is forbidden: User "system:serviceaccount:kubero:kubero-sample" cannot patch resource "deployments" in API group "apps" in the namespace "test-production"
ERROR: HttpError: HTTP request failed
ERROR: deployments.apps "test-kuberoapp-worker" is forbidden: User "system:serviceaccount:kubero:kubero-sample" cannot patch resource "deployments" in API group "apps" in the namespace "test-production"
ERROR: HttpError: HTTP request failed

add darkmode

We need a dark mode. The default is to choose by client hour. If selected it should be stored in a cookie.

Deployment strategy toggle button

For someone who is not familiar with the project, this deployment strategy toggle might prove to be a bit confusing.

toggle button

At first I thought that this means that docker deployments are turned off when that is not the case.

Maybe a radio button or something else would make more sense here to distinguish between docker/git deployments?

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.