It’s no news that containers represent a portable unit of deployment, and OpenStack has proven an ideal environment for running container workloads. However, where it usually becomes more complex is that many times an application is often built out of multiple containers, as well as hybrid environments - diverse clouds, bare metal and even non-virtualized infrastructure. What’s more, setting up a cluster of container images can be fairly cumbersome because you need to make one container aware of another and expose intimate details that are required for them to communicate which is not trivial especially if they’re not on the same host.
These scenarios have instigated the demand for some kind of orchestrator. The list of container orchestrators is growing fairly fast. This session will compare the different orchestration projects out there - from Heat to Kubernetes to Mesos & Cloudify - and help you choose the right tool for the job.
4. Orchestration 101
◇ Common Characteristics
■ Use DSL to define “blueprint”
■ Execute a process based on input from the blueprint
■ Pass context information between the deployed entities
◇ Different assumptions lead to different approaches
■ Application Architecture
■ Infrastructure
■ Scope of automation
5. Method of Comparison
◇ Same application requirements
◇ “Production grade” deployment
◇ Broken into three main groups
■ Pure Play – Cloudify/TOSCA, Terraform
■ Container Centric – Kubernetes
■ Infrastructure Centric - OpenStack Heat
6. ◇ PaaS: CloudFoundry, OpenShift, DEIS
◇ Config Management: Chef, Puppet, Ansible, Salt
◇ Cloud Application Management: Apache Brooklyn, Juju
◇ Cloud management platforms: RH CloudForms, Scalr
◇ Cluster schedules: Mesos, Fleet, Yarn, Nomad
This is by no means an
exhaustive comparison!
A Lot of Relevant Tools
Which We Won’t Cover Today :(
12. Introduction to Terraform
◇ Part of the Hashicorp “ecosystem”
◇ Command line tool
◇ Simple (in a good way) configuration
◇ Extendable using plugins
13. Solution Overview
◇ Single top level configuration file
◇ Create all infrastructure install and
configure application with scripts.
15. Deployment Management
◇ Option 1: Static Allocation/Provisioning in
the configuration file.
◇ Option 2: Third-party Tool
■ Consul/Surf
■ Other, e.g. AWS Autoscale
16. Cons:
◇ Configurations are not
portable across cloud
providers
◇ Outsources advanced
configuration management
to other tools
◇ Context awareness is not
built in
Terraform: Pros and Cons
Pros:
◇ Simple & elegant
◇ Solid Openstack
support
◇ IaaS & Framework
neutral
◇ Display Plan before
deployment
◇ Idempotency
◇ Hashicorp stack
21. Solution Overview
◇ Single blueprint file with peripheral
scripts and plugins
◇ Create all infrastructure install and
configure application with scripts
◇ Describe future application management
and workflows
◇ Relationships describe which code to
execute when one node event affects
another node.
24. Deployment Management
◇ Manager is aware of node instances’ state
◇ logging and monitoring
◇ Policy engine handles metric streams
◇ Manager auto-executes workflows in
response to lifecycle requirements
25. ◇ Built in workflows
■ Install
■ Uninstall
■ Heal
■ Scale
■ Execute_operation
■ (Single common ‘cfy install’ in 3.4 )
◇ Dependency awareness through graph
navigation
◇ Remote/Local execution
Handling Post Deployment
through Workflow & Policies
26. Cons:
◇ Complex
◇ Delay in full support of
TOSCA spec
◇ Not enough
implementations - user
needs to write most of it
TOSCA/Cloudify: Pros and Cons
*Implementation specific
Pros:
◇ Infrastructure &
Framework neutrality
◇ Complete Life Cycle
Management
◇ Handles Infrastructure
& Software
◇ Post deployment
handling*
■ Monitoring
■ Logging
◇ Can be tied to any
peripheral system
28. Container deployment management
◇ Pods: a group of containers usually run together
◇ Replication controller: ensures state of pod
◇ Networking: pods are networked together
◇ Service: Load balanced endpoint for a set of pods
Quick Intro to K8s
32. Cons:
◇ Not a lot of infrastructure
focus
◇ Limited Openstack support
(mostly Rackspace)
◇ No topology awareness
◇ Complex setup
Kubernetes: Pros and Cons
Pros:
◇ (almost) zero
configuration autoheal
◇ Out of the box load
balancer
◇ Simple scaling
◇ Advanced behaviors
are pretty simple to
implement
42. Cons:
◇ OpenStack Only
◇ Software configuration is
limited
◇ Lack of built-in workflow
abstraction
◇ Post deployment
orchestration is limited
■ Requires integration
with other tools/
projects
Heat: Pros and Cons
Pros:
◇ Native To OpenStack
◇ Built-in mapping of
most OpenStack
infrastructure resource
types
43. So, what’s the Right
Tool for me?
◇ Are you hell bent on containers? OpenStack?
◇ Do you have legacy workloads?
◇ Do you consider infrastructure resources as part of the
process?
◇ Do you have a heterogenous environment?
◇ Do you want the same tool to also handle post
deployment?