Services in Epinio #1262
jimmykarily
started this conversation in
Ideas
Replies: 2 comments 4 replies
-
I think this is great idea! I wonder if we can reuse any of the marketplace CRDs that Rancher includes? Maybe see if we can add a way to filter a bit based on RBAC or labels... |
Beta Was this translation helpful? Give feedback.
0 replies
-
The idea seems cool, so basically a developer could provision a Postgres database, if the resource was defined by the ops team, and this will trigger the deployment of a database, with some predefined values, and/or thresholds? |
Beta Was this translation helpful? Give feedback.
4 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
It makes sense for any PaaS to allow the users to provision services in a self-service manner. The way this works should separate the concerns between Ops and Developer teams:
In the past, we used the Open Service Broker API to enable this but that project didn't seem get adoption in the community and we removed it from Epinio.
We also investigated the idea of integrating with CrossPlane. While this is possible, there doesn't seem to be an existing marketplace of XRDs we could use to populate a marketplace in Epinio. We would need to do most of the work ourselves (the Epinio team) or leave it to our users.
I want to suggest an idea here which may allow us to integrate both with Crossplane but also simple helm charts (e.g. https://artifacthub.io/packages/helm/bitnami/mysql) or any other solution that works with resources that are created on a Kubernetes cluster.
Epinio needs a way to discover service made available by the Ops team. All Epinio needs to know is:
This contract is partially fulfilled by Crossplane but the "Supported configuration" is not strictly defined on the XRD and would need us to invent some convention. Also, although there is a provider for helm charts, it works on "managed resources" (
Release
) not XRDs. This means, we can't use it directly by making Epinio XRD-aware.So, what if instead of Crossplane XRDs, we created our own custom resource which defines:
There are existing projects that can install helm charts using a controller (e.g. https://fluxcd.io/docs/guides/helmreleases) but they don't have a custom resource like XRDs which defines what can be provisioned, without actually provisioning it.
If an Ops team wants to work with Crossplane, they could simply set it up on the cluster and create a Helm chart with the required XRs in it. They can make it available in Epinio by simply creating the Epinio "Service" resource which points to that helm chart.
Similarly to what we are doing for applications we will just use Helm charts as the contract between Epinio and the Ops teams.
I haven't given this idea much thought, this is more like notes on what I have in mind. It may be ignoring existing projects that already do this, or have logic gaps I didn't think of. I wanted to open it for discussion as early as possible. This will allow us to reject it faster if it's not good.
Beta Was this translation helpful? Give feedback.
All reactions