[openstack-dev] [OpenStack Foundation] [board][tc][all] One Platform – Containers/Bare Metal? (Re: Board of Directors Meeting)

Steve Baker sbaker at redhat.com
Tue Apr 12 23:29:39 UTC 2016


On 13/04/16 11:07, Joshua Harlow wrote:
> Fox, Kevin M wrote:
>> I think my head just exploded. :)
>>
>> That idea's similar to neutron sfc stuff, where you just say what 
>> needs to connect to what, and it figures out the plumbing.
>>
>> Ideally, it would map somehow to heat&  docker COE& neutron sfc to 
>> produce a final set of deployment scripts and then just runs it 
>> through the meat grinder. :)
>>
>> It would be awesome to use. It may be very difficult to implement.
>
> +1 it will not be easy.
>
> Although the complexity of it is probably no different than what a SQL 
> engine has to do to parse a SQL statement into a actionable plan, just 
> in this case it's a application deployment 'statement' and the 
> realization of that plan are of course where the 'meat' of the program 
> is.
>
> It would be nice to connect what neutron SFC stuff is being worked 
> on/exists and have a single project for this kind of stuff, but maybe 
> I am dreaming to much right now :-P
>

This sounds a lot like what the TOSCA spec[1] is aiming to achieve. I 
could imagine heat-translator[2] gaining the ability to translate TOSCA 
templates to either nova or COE specific heat templates which are then 
created as stacks.

[1] 
http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/csprd01/TOSCA-Simple-Profile-YAML-v1.0-csprd01.html
[2] https://github.com/openstack/heat-translator

>>
>> If you ignore the non container use case, I think it might be fairly 
>> easily mappable to all three COE's though.
>>
>> Thanks,
>> Kevin
>>
>> ________________________________________
>> From: Joshua Harlow [harlowja at fastmail.com]
>> Sent: Tuesday, April 12, 2016 2:23 PM
>> To: OpenStack Development Mailing List (not for usage questions)
>> Cc: foundation at lists.openstack.org
>> Subject: Re: [openstack-dev] [OpenStack Foundation] [board][tc][all] 
>> One Platform – Containers/Bare Metal? (Re: Board of Directors Meeting)
>>
>> Fox, Kevin M wrote:
>>> I think part of the problem is containers are mostly orthogonal to 
>>> vms/bare metal. Containers are a package for a single service. 
>>> Multiple can run on a single vm/bare metal host. Orchestration like 
>>> Kubernetes comes in to turn a pool of vm's/bare metal into a system 
>>> that can easily run multiple containers.
>>>
>>
>> Is the orthogonal part a problem because we have made it so or is it
>> just how it really is?
>>
>> Brainstorming starts here:
>>
>> Imagine a descriptor language like (which I stole from
>> https://review.openstack.org/#/c/210549 and modified):
>>
>>       ---
>>       components:
>>       -   label: frontend
>>           count: 5
>>           image: ubuntu_vanilla
>>           requirements: high memory, low disk
>>           stateless: true
>>       -   label: database
>>           count: 3
>>           image: ubuntu_vanilla
>>           requirements: high memory, high disk
>>           stateless: false
>>       -   label: memcache
>>           count: 3
>>           image: debian-squeeze
>>           requirements: high memory, no disk
>>           stateless: true
>>       -   label: zookeeper
>>           count: 3
>>           image: debian-squeeze
>>           requirements: high memory, medium disk
>>           stateless: false
>>           backend: VM
>>       networks:
>>       -   label: frontend_net
>>           flavor: "public network"
>>           associated_with:
>>               - frontend
>>       -   label: database_net
>>           flavor: high bandwidth
>>           associated_with:
>>               - database
>>       -   label: backend_net
>>           flavor: high bandwidth and low latency
>>           associated_with:
>>               - zookeeper
>>               - memchache
>>       constraints:
>>       -   ref: container_only
>>           params:
>>           - frontend
>>       -   ref: no_colocated
>>           params:
>>           -   database
>>           -   frontend
>>       -   ref: spread
>>           params:
>>           -   database
>>       -   ref: no_colocated
>>           params:
>>           -   database
>>           -   frontend
>>       -   ref: spread
>>           params:
>>           -   memcache
>>       -   ref: spread
>>           params:
>>           -   zookeeper
>>       -   ref: isolated_network
>>           params:
>>               - frontend_net
>>               - database_net
>>               - backend_net
>>       ...
>>
>>
>> Now nothing in the above is about container, or baremetal or vms,
>> (although a 'advanced' constraint can be that a component must be on a
>> container, and it must say be deployed via docker image XYZ...); instead
>> it's just about the constraints that a user has on there deployment and
>> the components associated with it. It can be left up to some consuming
>> project of that format to decide how to turn that desired description
>> into an actual description (aka a full expanding of that format into an
>> actual deployment plan), possibly say by optimizing for density (packing
>> as many things container) or optimizing for security (by using VMs) or
>> optimizing for performance (by using bare-metal).
>>
>>> So, rather then concern itself with supporting launching through a 
>>> COE and through Nova, which are two totally different code paths, 
>>> OpenStack advanced services like Trove could just use a Magnum COE 
>>> and have a UI that asks which existing Magnum COE to launch in, or 
>>> alternately kick off the "Launch new Magnum COE" workflow in 
>>> horizon, then follow up with the Trove launch workflow. Trove then 
>>> would support being able to use containers, users could potentially 
>>> pack more containers onto their vm's then just Trove, and it still 
>>> would work with both Bare Metal and VM's the same way since Magnum 
>>> can launch on either. I'm afraid supporting both containers and non 
>>> container deployment with Trove will be a large effort with very 
>>> little code sharing. It may be easiest to have a flag version where 
>>> non container deployments are upgraded to containers then non 
>>> container support is dropped.
>>>
>>
>> Sure trove seems like it would be a consumer of whatever interprets that
>> format, just like many other consumers could be (with the special case
>> that trove creates such a format on-behalf of some other consumer, aka
>> the trove user).
>>
>>> As for the app-catalog use case, the app-catalog project 
>>> (http://apps.openstack.org) is working on some of that.
>>>
>>> Thanks,
>>> Kevin
>>>    ________________________________________
>>> From: Joshua Harlow [harlowja at fastmail.com]
>>> Sent: Tuesday, April 12, 2016 12:16 PM
>>> To: Flavio Percoco; OpenStack Development Mailing List (not for 
>>> usage questions)
>>> Cc: foundation at lists.openstack.org
>>> Subject: Re: [openstack-dev] [OpenStack Foundation] [board][tc][all] 
>>> One Platform – Containers/Bare Metal? (Re: Board of Directors Meeting)
>>>
>>> Flavio Percoco wrote:
>>>> On 11/04/16 18:05 +0000, Amrith Kumar wrote:
>>>>> Adrian, thx for your detailed mail.
>>>>>
>>>>>
>>>>>
>>>>> Yes, I was hopeful of a silver bullet and as we’ve discussed 
>>>>> before (I
>>>>> think it
>>>>> was Vancouver), there’s likely no silver bullet in this area. 
>>>>> After that
>>>>> conversation, and some further experimentation, I found that even if
>>>>> Trove had
>>>>> access to a single Compute API, there were other significant
>>>>> complications
>>>>> further down the road, and I didn’t pursue the project further at the
>>>>> time.
>>>>>
>>>> Adrian, Amrith,
>>>>
>>>> I've spent enough time researching on this area during the last month
>>>> and my
>>>> conclusion is pretty much the above. There's no silver bullet in this
>>>> area and
>>>> I'd argue there shouldn't be one. Containers, bare metal and VMs 
>>>> differ
>>>> in such
>>>> a way (feature-wise) that it'd not be good, as far as deploying
>>>> databases goes,
>>>> for there to be one compute API. Containers allow for a different
>>>> deployment
>>>> architecture than VMs and so does bare metal.
>>> Just some thoughts from me, but why focus on the
>>> compute/container/baremetal API at all?
>>>
>>> I'd almost like a way that just describes how my app should be
>>> interconnected, what is required to get it going, and the features
>>> and/or scheduling requirements for different parts of those app.
>>>
>>> To me it feels like this isn't a compute API or really a heat API but
>>> something else. Maybe it's closer to the docker compose API/template
>>> format or something like it.
>>>
>>> Perhaps such a thing needs a new project. I'm not sure, but it does 
>>> feel
>>> like that as developers we should be able to make such a thing that
>>> still exposes the more advanced functionality of the underlying API so
>>> that it can be used if really needed...
>>>
>>> Maybe this is similar to an app-catalog, but that doesn't quite feel
>>> like it's the right thing either so maybe somewhere in between...
>>>
>>> IMHO I'd be nice to have a unified story around what this thing is, so
>>> that we as a community can drive (as a single group) toward that, maybe
>>> this is where the product working group can help and we as a developer
>>> community can also try to unify behind...
>>>
>>> P.S. name for project should be 'silver' related, ha.
>>>
>>> -Josh
>>>
>>> __________________________________________________________________________ 
>>>
>>> OpenStack Development Mailing List (not for usage questions)
>>> Unsubscribe: 
>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>
>>> __________________________________________________________________________ 
>>>
>>> OpenStack Development Mailing List (not for usage questions)
>>> Unsubscribe: 
>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>> __________________________________________________________________________ 
>>
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: 
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>> __________________________________________________________________________ 
>>
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: 
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
> __________________________________________________________________________ 
>
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: 
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




More information about the OpenStack-dev mailing list