Functions CRD and Operator #2088
Replies: 3 comments
-
I think it would be much easier for developers to handle one CRD over the required other 4. So in my head a solution could look like this:
that said, you are completely right, that currently a function can already be handled via CRDs, I am just throwing in the point that maintaining one CRD is easier than having to maintain 4, which could be maintained by software. What do you think? |
Beta Was this translation helpful? Give feedback.
-
Thanks for the comment @khusseini Yes, I agree that we would create an operator which handles a simple Functions CRD. The operator would be the one running You are also right that it is our goal with Functions to provide a single point of management where developers can define their Function as a Service, even though when it is actually deployed to the cluster it will be comprised of several components: Service, Routes, Domain Mappings, Certificates, Event Subscriptions, etc. etc. Of course, we know that it will never be able to handle 100% of all situations, so one can always decide to just build the container with |
Beta Was this translation helpful? Give feedback.
-
Looking into this, I see a lot of talk about remote build, but that's entirely not something our organization would need if we are deploying via GitOps since we could just build the function image within CI and then have ArgoCD pull the CRD from an env repo. It would be wonderful if the CLI could dump the CRD which could be copied to the env repo without requiring communicating to the remote cluster at all. |
Beta Was this translation helpful? Give feedback.
-
Functions CRD and Operator
This is a discussion intended to help define the validity and scope of a Functions CRD and Operator.
Overview
Developers familiar with Kubernetes are accustomed to
kubectl apply -f
. Providing a simple CRD which defines enough about a function for the cluster to perform a build and deploy internally would both adhere to this paradigm but also be nearly frictionless from a developer's perspective given a properly configured cluster, with no required local dependencies other than kubectl and a cluster connection.Scope
There are no features on our roadmap which require a CRD. Everything can be accomplished (and probably should be accomplished) with the existing Serving and Eventing structures. Even auto-update is likely better mediated via CI/CD than as an internal operator. Therefore the scope of this CRD and Operator is likely quite narrow: just enough to trigger an in-cluster build and deploy using a CRD which is essentially a pointer to a repository.
Considerations
One key consideration is the necessity of a properly configured cluster, with extensive user feedback to ensure this is the case.
Beta Was this translation helpful? Give feedback.
All reactions