u/ashishmax31

Stackdome: An opensource Go control plane for deploying application stacks to Kubernetes
▲ 8 r/golang

Stackdome: An opensource Go control plane for deploying application stacks to Kubernetes

I have been working on Stackdome, a self hosted application delivery platform. (Currently in Alpha). Think of it like a railway equivalent that you can run on your own infra or locally.

Repository: https://github.com/Stackdome/Stackdome

With Stackdome, you can deploy an application from GitHub, connect multiple services visually, add a managed database, create preview environments.
The go control-plane packages the whole application as a "Stack" (A new custom resource created by stackdome) and deploys it on k8s. Each deployment happens as a release and can be rolled back.

Basically, the idea is to package the tooling in the CNCF/cloud-native ecosystem into an opinionated platform, so that developers can get a well engineered platform without learning Kubernetes YAMLology or a dozen other projects from the CNCF landscape.

Architecture:
Stackdome has a hub and spoke architecture. Hub is the control-plane and spokes are the k8s clusters (Which run our custom controller which lifecycles our CRs). The hub can place the workloads in clusters. (Currently we support only one cluster, but the architecture is supports multicluster).

- The hub exposes a REST API, stores application and release state in PostgreSQL.
- Establishes controller runtime watches for each of the registered cluster using a cluster manager.
- We also use client-go rate-limted queues in the hub to "reconcile" the desired resources from the backend on to the cluster. See: https://github.com/Stackdome/Stackdome/blob/main/pkg/worker/types.go

You can use this command to setup Stackdome on a bare linux server:

`curl -fsSL https://get.stackdome.com/install.sh | sudo sh`

One cool thing about the installer is that it uses stackdome constructs to install itself.
So we dogfood our own constructs to run stackdome. :))). [See it here]

Or you can use our cloud playground at cloud.stackdome.com

Steps to run it locally: https://github.com/Stackdome/Stackdome/blob/main/DEVELOPMENT.md

u/ashishmax31 — 3 days ago