-
Notifications
You must be signed in to change notification settings - Fork 40k
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
RFC: Coupled Services and Deployments #14956
Comments
Deployment generating a service seems weird - someone has to generate a I would suggest having run --port automatically expose a service, leave On Oct 2, 2015, at 2:18 AM, Brian Grant notifications@github.com wrote: A number of systems (Borg, Aurora, etc.) use a single config blob to Going forward, Deployment (#1743 As Service becomes more complex, I wouldn't want to add all those knobs to cc @smarterclayton https://github.com/smarterclayton @ironcladlou — |
@smarterclayton I don't disagree that it's mixing concepts. Do you anticipate that most of your users will use kubectl expose, or write out the service YAML, or just instantiate off-the-shelf service YAML? |
Alternative: a new resource type that bundles a service and list of deployments. |
The bulk of our creations are a generator that is based on an image The next tier (15-20%) of creations are from run, and those users are Image and template authors are expected to be familiar with all of the In practice, expose makes sense to users once they know it exists. Hand We have discussed, but not implemented, the "shard" command that would try On Oct 2, 2015, at 8:46 AM, Brian Grant notifications@github.com wrote: @smarterclayton https://github.com/smarterclayton I don't disagree that Do you anticipate that most of your users will use kubectl expose, or write — |
Challenge here - the points of variation between different deployments On Oct 2, 2015, at 9:06 AM, Brian Grant notifications@github.com wrote: Alternative: a new resource type that bundles a service and list of — |
@smarterclayton I'm not keen on a new resource, either. srvexpand was pretty trivial to create: Maybe one of the new generator/templating solutions will help. Is shard operation more than adding a label to a RC's selector and to its pods? I know you've mentioned this before. Podex is completely out of date, sadly. We should rewrite it and integrate it into kubectl or server-side. |
As for secrets, I'm still waiting for movement on #4822. |
I don't think we should discard the idea of "a new resource type that bundles a service and list of deployments" so quickly. IMO it would be a significant usability improvement if we could give users a single object/config that generates all the others under the hood, and that they manipulate to do the common operations like updates. Not everyone is as sophisticated as OpenShift users. The current toolkit/building block approach has a lot of benefits but, even with the kubectl porcelain commands, requires learning a lot of concepts, some of which are very small deltas from one another (e.g. daemon controller, replication controller, job controller) and are more easily thought of as configurations options of a single object than as separate objects. |
So OpenShift users are not expected to be sophisticated - that's probably My suggestion is that kubectl lacks certain niceties that provide the "easy On Oct 3, 2015, at 2:30 AM, David Oppenheimer notifications@github.com I don't think we should discard the idea of "a new resource type that — |
List of deployments is also limiting - what if if have deployments, daemon On Oct 3, 2015, at 2:30 AM, David Oppenheimer notifications@github.com I don't think we should discard the idea of "a new resource type that — |
One more point - the biggest question we get from new users is how to On Oct 3, 2015, at 2:30 AM, David Oppenheimer notifications@github.com I don't think we should discard the idea of "a new resource type that — |
From past conversations, I believe that @ghodss and @kelseyhightower agree with @smarterclayton. We do need to put more effort into tooling. Multiple generators are in flight (e.g., #14918). And we know we need to generalize templates beyond pods (#260). They, or other tooling, may sufficiently address the issue, and I'm not keen on painting us into a corner too quickly. Actually I have many of the same concerns about configuration as about higher-level API types. We need to try to keep the tooling and automation targeting the lower-level APIs in order to avoid ecosystem fragmentation. Another thought: I would like to implement some of the more common operations, like expose, server-side: #12143. If we had an expose subresource on Deployment, perhaps we could somehow trigger it declaratively. |
Anyway, multiple deployments per service is a more advanced use case and a list of deployments is in the direction of more complexity again, so that alternative is not compelling, IMO. |
I think @smarterclayton has probably seen more of this than anyone, but I'm +1 @bgrant0607. For long running jobs, I want a single thing in which I can describe:
I think generators may get us some large percent of the way there from a front end/tooling perspective, but it's not clear to me if we need a more fundamental/first class object for this. I'd love to see the OpenShift history - is this what you meant? https://developers.openshift.com/en/python-flask.html |
cc @krmayankk |
See also #18215 |
We've been discussing leaning more heavily on |
I came looking for a workflow for "blue-green" deployments. This sounds similar at first glance. |
cc @kow3ns |
I no longer think this is something we should do, at least not in the next year, so closing. |
Forked from #1743.
A number of systems (Borg, Aurora, etc.) use a single config blob to represent both the set of executing containers and the endpoints exposed to communicate with them. In Kubernetes, these are currently separate resources, such as a Service and ReplicationController:
http://kubernetes.io/v1.0/docs/user-guide/managing-deployments.html#organizing-resource-configurations
They can be specified in a single source file, but there are still multiple concepts, a few lines of boilerplate, and a small amount of redundancy, in the Service's label selector and port spec.
Going forward, Deployment (#1743) is the persistent resource we expect users to create to manage their services, either imperatively or declaratively. It already generates other resources -- ReplicationControllers. For the common case of a single release track, it seems reasonable to autogenerate a corresponding Service by default. It should be optional, so that multiple Deployment resources could be covered by a single Service without creating unnecessary Service resources.
As Service becomes more complex, I wouldn't want to add all those knobs to Deployment. I think Deployment should stay simple and it's fine to require a separate Service for more advanced use cases (e.g., session affinity, public IPs). We probably at least need to support external load balancers and maybe nodePort.
cc @smarterclayton @ironcladlou @nikhiljindal @brendandburns @ghodss
The text was updated successfully, but these errors were encountered: