Open waveywaves opened 1 year ago
@waveywaves Some questions:
1) What problem does it solve? 2) Do we plan for the virtual clusters to be created in the Uffizzi cluster or self-hosted clusters? 3) Will the helm chart be provided by users? 4) Can this library be installed as a controller dependency?
Hey @moklidia
What problem does it solve? Currently we create previews from docker-compose and can create previews of applications containing more than one services. The scale of these applications is rather small when compared to applications which need to deployed with Helm or Kubernetes. With Virtual Clusters we can create Kubernetes clusters without having to deploy hardware resources to create a new cluster. Checkout how VClusters work over here https://www.youtube.com/watch?v=gQ-KG57ruvY
Do we plan for the virtual clusters to be created in the Uffizzi cluster or self-hosted clusters? Ideally both. Virtual clusters created in the Uffizzi cluster will be managed by us. The ones created in self-hosted clusters can probably get support from us for a fee.
Will the helm chart be provided by users? Yes and no. The Helm chart can be provided by the users but we will also have an artifact registry at some point to support pipelines. There, we can build an image from a git repo, push it to our image registry and then use that image in a Helm Chart. This helm chart will be pushed to our artifact registry (need to host one). This chart can now be used in a new VCluster deployment with the helm chart. This will work a lot like our reusable workflow. We should ideally have some links to some popular helm charts as well.
Can this library be installed as a controller dependency? Currently it is a standalone operator/controller. In theory it can run as a controller dependency. The uffizzi controller can create the UffizziCluster resource and relay it's status back to the user whereas the uffizzi cluster operator can do the reconcilation and heavy lifting of orchestrating all necessary resources for the UffizziCluster.
User Story we want to support:
User story 1 (Platform maintainers): virtual cluster as a service (self-hosted)
Charts/
directory / values.yaml
file is updateduffizzi cluster create
kubeconfig
file (and also optionally dumps this file to stdout
)
Given the kubeconfig
+ `Charts/
directory / values.yaml
my pipeline creates a Helm Releaseuffizzi cluster delete [CLUSTER_ID]
Does this make sense?
Can we support a directory of Helm charts?
@waveywaves Please take a look at the chart above: https://github.com/UffizziCloud/uffizzi/issues/413#issuecomment-1554505797
@waveywaves Did you provide feedback to @moklidia
@moklidia This looks good. We can go ahead with this design. The below are some notes regarding some clarifications with respect to each section in the diagram
Start creating vcluster ✔️
Watching the creation of the cluster Here we can watch the UffizziCluster object status which will let the platform know if the UffizziCluster is ready or not
User wants to see logs of container
The pods created by the vcluster are created in the same namespace where the UffizziCluster object is created. The names of the pods will go by the formula
Tell us about your request This feature request outlines a service which will provide virtual cluster as an environment for Uffizzi users.
This phase of development covers
Which service(s) is this request for? Self Hosted Open Source
Describe the solution you'd like
vcluster
commands as follows. This is really good for prototyping and initial demoing but not good for building on top of VCluster.Connect to a virtual cluster
uffizzi cluster connect my-uffizzi-cluster
Corresponding vcluster command
vcluster connect my-uffizzi-cluster
Create a virtual cluster
uffizzi cluster create my-uffizzi-cluster
Connect to the virtual cluster
uffizzi cluster connect my-uffizzi-cluster
Corresponding vcluster command
vcluster connect my-uffizzi-cluster --server=