PROPOSAL: run provider client as another container
Currently we rely on the host having the provider installed as installed software. There is a move to run these CLI clients as containers. Since we don't want to ship all providers in the atomic app itself it would be ideal to execute the provider call as an atomic run call. This requires two things:
- A library of supported providers is available to call.
- Update the providers to call atomic run <provider_image> from item no.1 above.
+1, meant to add: I took a pass at this a while back, but got distracted. However, its a start: https://github.com/whitel/kubectl-docker. I think I hacked it up based on some other version(s). Let me know if I should take another look at it.
@aweiteka by library you meen a list of images in Docker Hub which represent specific providers?
@vpavlin yes, that was the thought. A set of images in <some_registry>. I think it's just a matter of time before clients (openshift, heat, kube, etc) will be containerized by default.
so we wait a little before client containers do appear and in the meantime we spec out how that could be used with atomicapp?
Wouldn't it be better to use providers API directly (if they have one) instead of relying on CLI clients?
Yes, I think that would be a valid approach. The biggest issue might be tracking the API version.
I don't think the containerized client would be too hard to implement. If we provide a config key to specify the client image we could simply run the container. We would need to consider how provider artifacts are passed into the container.
@kadel I think you're right about the API in the near-term, especially for openshift since we currently don't have a model to run "sidecar" images in pods. I closed #336.
If we are moving to using the providers APIs rather than using the CLI then we should be able to close this: https://github.com/projectatomic/atomicapp/issues/407
For openshift provider I think we have PR already: https://github.com/projectatomic/atomicapp/pull/420
@aweiteka should we close this?