New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deprecate KubernetesApplication #1595
Comments
I think users will glad to see OAM AppConfig is the Application layer of Crossplane, we can use OAM concepts to accomplish this target. Then users don't need to learn one more concept. Besides automatically schedule cluster(cloud provider), we can do more on |
I think one consideration there @wonderflow is that we might want a lower level construct to schedule. For example if we ended up with multiple kinds of workload that could be scheduled to a remote cluster, we'd probably want a single type for the scheduler to work with. |
Yes, in my view, the scheduler can only work with the |
Yes please. We should make sure to at least add comments to the CRDs letting folks know they'll be removed in a few releases. |
I just realised that we've effectively aligned on deprecating KubernetesApplication, but haven't actually communicated that yet. We should add a note to the types so that https://doc.crds.dev/github.com/crossplane/crossplane/workload.crossplane.io/KubernetesApplication/v1alpha1 indicates the deprecation. |
I made a quick POC of |
Fixed by #1720 |
What problem are you facing?
Crossplane uses a
KubernetesApplication
to schedule and deploy arbitrary resources to a 'remote' Kubernetes cluster - specifically to aKubernetesTarget
.KubernetesApplication
is so named because we originally envisioned that it would be an application model, but it has since become more of a "behind the scenes" delivery mechanism used by higher level application models - it's a little like aReplicaSet
to a KubernetesDeployment
. TheApplication
name is misleading.How could Crossplane help solve your problem?
Crossplane should at least rename
KubernetesApplication
and the underlyingKubernetesApplicationResource
kind, which represents an individual component of a "Kubernetes application".I suggest we consider going one step further and removing or rethinking
KubernetesApplication
altogether. AKubernetesApplication
is basically an array of opaque Kubernetes resources. Each of these resources is rendered to aKubernetesApplicationResource
, which must be updated when theKubernetesApplication
is updated. This has proven problematic and confusing to maintain due to the quirks of Kubernetes update and patch or "apply" semantics.The only real value a
KubernetesApplication
adds is that it acts as a logical grouping of Kubernetes resources that should all be scheduled to a particular cluster. We might consider removingKubernetesApplication
altogether and instead scheduling higher level app concepts like OAM AppConfigs, or we might take the approach I proposed in my original design (#399) and make KubernetesApplication a simple scheduling target that matches a bunch of KARs by label, but does not actually template and render those KARs.The text was updated successfully, but these errors were encountered: