[openstack-dev] Is the pendulum swinging on PaaS layers?
Jay Pipes
jaypipes at gmail.com
Tue May 23 02:58:55 UTC 2017
On 05/22/2017 12:01 PM, Zane Bitter wrote:
> On 19/05/17 17:59, Matt Riedemann wrote:
>> I'm not really sure what you're referring to here with 'update' and [1].
>> Can you expand on that? I know it's a bit of a tangent.
>
> If the user does a stack update that changes the network from 'auto' to
> 'none', or vice-versa.
Detour here, apologies...
Why would it matter whether a user changes a stack definition for some
resource from auto-created network to none? Why would you want
*anything* to change about instances that had already been created by
Heat with the previous version of the stack definition?
In other words, why shouldn't the change to the stack simply affect
*new* resources that the stack might create? After all, get-me-a-network
is intended for instance *creation* and nothing else...
Why not treat already-provisioned resources of a stack as immutable once
provisioned? That is, after all, one of the primary benefits of a "cloud
native application" -- immutability of application images once deployed
and the clean separation of configuration from data.
This is one of the reasons that the (application) container world has it
easy with regards to resource management. If you need to change the
sizing of a deployment [1], Kubernetes doesn't need to go through all
the hoops we do in resize/migrate/live-migrate. They just blow away one
or more of the application container replicas [2] and start up new ones.
[3] Of course, this doesn't work out so well with stateful applications
(aka the good ol' Nova VM), which is why there's a whole slew of
constraints on the automatic orchestration potential of StatefulSets in
Kubernetes [4], constraints that (surprise!) map pretty much one-to-one
with all the Heat resource dependency management bugs that you
highlighted in a previous ML response (network identifier is static and
must follow a pre-described pattern, storage for all pods in the
StatefulSet must be a PersistentVolume, updating a StatefulSet is
currently a manual process, etc).
Best,
-jay
[1] A deployment in the Kubernetes sense of the term, ala
https://kubernetes.io/docs/concepts/workloads/controllers/deployment
[2]
https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/replicaset/replica_set.go#L508
[3] In fact, changing the size/scale of a deployment *does not*
automatically trigger any action in Kubernetes. Only changes to the
configuration of the deployment's containers (.spec.template) will
automatically trigger some action being taken.
[4]
https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#limitations
More information about the OpenStack-dev
mailing list