Skip to content
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

Support Template object in OpenShift recipe #11504

Closed
sleshchenko opened this issue Oct 5, 2018 · 12 comments
Closed

Support Template object in OpenShift recipe #11504

sleshchenko opened this issue Oct 5, 2018 · 12 comments
Labels
kind/enhancement A feature request - must adhere to the feature request template. status/open-for-dev An issue has had its specification reviewed and confirmed. Waiting for an engineer to take it.

Comments

@sleshchenko
Copy link
Member

sleshchenko commented Oct 5, 2018

Description

Ideally, it would be nice to be able to create a workspace from origin user's application recipe.
Now we support only KubernetesList which is quite flexible BUT a usage of Template is a more common way to deploy user's application.
So, if a user uses Template for his application then he has to rewrite it in KubernetesList way to be able to run a workspace with it.

It would be nice to support Template as an object of OpenShift recipe.

Template may have required parameters which requires input from a user. For now, Che doesn't have a right place where the user would be able to init them. The proposal is to support Template in OpenShift recipe with one limitation: Template MUST NOT have any required parameters without default values. In this case, if the user has them in his application recipe - he needs to modify original content and add default values to parameters which is much easier to do than converting the whole Template to KubernetesList

@sleshchenko sleshchenko added kind/enhancement A feature request - must adhere to the feature request template. status/open-for-dev An issue has had its specification reviewed and confirmed. Waiting for an engineer to take it. team/platform labels Oct 5, 2018
@gazarenkov
Copy link
Contributor

Definitely +1, thanks @sleshchenko

Talking about supporting existed configuration I would say it is more "must have" than "nice to" feature since it looks like Kubernetes List is quite a rare case of describing deployment in real life.

@sleshchenko
Copy link
Member Author

sleshchenko commented Oct 5, 2018

The following issues are also about supporting real application description in Kubernetes/OpenShift format:

@gazarenkov
Copy link
Contributor

@sleshchenko I would also say effective recipe (the one applied to Runtime) should contain all the objects from original configuration.
I.e. recipe processing may add/(may be some)modify BUT not remove anything even if it does not "understand" it.

@sleshchenko
Copy link
Member Author

@gazarenkov

I.e. recipe processing may add/(may be some)modify BUT not remove anything even if it does not "understand" it.

Makes sense but I'm not sure that it is possible to create a resource trough K8s/OS Fabric8 client or Rest API resource if you don't understand it.
I've checked that OpenShift Web UI parses and creates objects one by one, like pods, then service, etc.
So, I think there is no way to create an object if client doesn't know what it is going to create, client should call the corresponding API Service.

@gazarenkov
Copy link
Contributor

@sleshchenko
I see what you mean but in this case our implementation has to be aware of all the objects (including alpha and beta readiness).
I doubt primitive set of basic Kubernetes/OS object is enough for real app development.
So, I am afraid the choice is:

  • support all of them, including upstream
  • care about subset of them important for Che and let others just pass through

@l0rd
Copy link
Contributor

l0rd commented Oct 9, 2018

Related to #11476

We can't support templates until we are able to split runtimes in separate pods.

@garagatyi
Copy link

I don't understand why separation of the runtime is a concern. I think that we can embed sidecars into the user's app.

@garagatyi
Copy link

But separating it would be definitely easier, so it might not make sense to just spend time on that at the moment

@l0rd
Copy link
Contributor

l0rd commented Oct 9, 2018

Yes sorry you are right. We can support Templates. But we definitely can't support Controllers as DeploymentConfig, Job and StatefulSet that you usually find in a Template.

@gazarenkov
Copy link
Contributor

From my side - convenient way of tools injecting is out of scope.
Simply adding/removing side-containers looks acceptable if I can use in my Workspace env exactly the same deployment (recipe) as supposed to be in staging/prod.
For the time it is not the case and IMO it is blocker for real life development.

As a side comment - yes, "side-pods" looks more attractive than "side-containers" but IMHO there are some (heavy) technology challenges like networking, volume_mounting etc which have to be addressed in general to be able to deploy on "any" infrastructure. Otherwise, documenting and supporting it will look like a nightmare.
In contrast to side-containers where all of this predictability provided by Kubernetes.

@garagatyi
Copy link

@amisevsk is there anything left for this issue or we can close it?

@amisevsk
Copy link
Contributor

amisevsk commented Feb 6, 2019

Can be closed as PR is merged.

@amisevsk amisevsk closed this as completed Feb 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement A feature request - must adhere to the feature request template. status/open-for-dev An issue has had its specification reviewed and confirmed. Waiting for an engineer to take it.
Projects
None yet
Development

No branches or pull requests

5 participants