17
Deploying and managing container-based applications with OpenStack and Kubernetes Ihor Dvoretskyi - OpenStack Operations Engineer at Mirantis Inc.

Deploying and managing container-based applications with OpenStack and Kubernetes

Embed Size (px)

Citation preview

Page 1: Deploying and managing container-based applications with OpenStack and Kubernetes

Deploying and managing container-based applications with OpenStack and Kubernetes

Ihor Dvoretskyi - OpenStack Operations Engineer at Mirantis Inc.

Page 2: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Agenda

● What is OpenStack and why it became quite popular solution for building

private clouds?

● Murano - OpenStack's response to application management needs

● Containers and the benefits of application containerization

● Kubernetes - the leading tool for managing container clusters

● Demo

● Q&A

Page 3: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

What is OpenStack?What is OpenStack and why it became quite popular solution for building private clouds?

Page 4: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

What is OpenStack?

● OpenStack is a free and open-source cloud-computing software platform

● OpenStack is a complex set of tools that provides possibility for anyone to

build a ready-to-use cloud environment

● OpenStack fits the concept of “Infrastructure-as-a-service”

● OpenStack-based cloud environment can be comprised from a wide variety

of commodity hardware and software options

● OpenStack is the most popular open source cloud project in the world*

*according to the survey of more than 550 respondents conducted by Linux.com and The

New Stack

Page 5: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

MuranoOpenStack's response to application management needs

Page 6: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Murano: OpenStack App Management Tool

● The Application catalog - a single-point to publish for tenants and users within tenants to consume

different ready-to-use applications

● The Murano Project introduces an application catalog to OpenStack, enabling application

developers and cloud administrators to publish various cloud-ready applications in a browsable

categorized catalog.

● Murano ready-to-use applications are being published on Community App Catalog - http://apps.

openstack.org, source code is being published on GitHub - https://github.com/openstack/murano.

● Murano provides possibility to to be abstract from underlying IaaS resources

● Murano supports multiple OS options (Linux & Windows)

Page 7: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Murano Architecture

● Murano Dashboard (UI)

○ Uses python murano client to call Murano API

● Murano API

○ Exposes REST API

○ Sends tasks to the engine using RabbitMQ

● Murano Engine

○ Listens for tasks on RabbitMQ

○ Sends API calls to Heat API

○ Sends tasks to agents via RabbitMQ

● Murano Agent

○ Is located on guest VM’s

○ Listens for the tasks from RabbitMQ

○ Returns results back to Murano engine using RabbitMQ

Page 8: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

ContainersAnd the benefits of application containerization

Page 9: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Docker Containers: benefits of usage

● Docker - is a lightweight isolation technology that allows users to launch

applications in an isolated environment on Linux

● Docker containers usage is a totally different way of application

management

● Containers have the huge benefits, that should be the perfect reasons to

prefer them over the rest technologies:

○ Performance

○ Repeatability

○ Isolation

○ Portability

Page 10: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Containers - are not VMs

Containers - are not VMs Containers VMs

Primary use case Containers are build for managing applications, but not the infrastructure

VM management solution has capabilities for managing the infrastructure (network, compute, storage etc.)

Guest OS support For production environments only Linux might be used natively

Any common operating system

Performance Containers do not incur performance overhead

VMs incur performance overhead

Security and isolation Containers are using the shared kernel - that’s not a full isolation

VMs are fully isolated, any kind of failure will not affect other VM

Application management Containers are managed as a code and do need specific management software (e.g. Kubernetes)

VMs are managed as the fully-loaded machines

Page 11: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

KubernetesThe leading tool for managing container clusters

Page 12: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Kubernetes as a container orchestration tool

● The predecessor of Kubernetes was the “Borg” container orchestration tool,

originally developed by Google.

● All the best ideas from Borg were incorporated into Kubernetes, that is

open sourced and is available for everyone and runs everywhere

● Kubernetes is a container orchestrator that runs containers and supports

various underlying environments

Page 13: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Kubernetes components

Kubernetes consists of the following main components:

● Cluster - a set of nodes used by Kubernetes to run applications

● Node - a virtual or physical machine, where Kubelet is runned and where pods can be created

● Pod - the smallest unit of Kubernetes - a colocated group of applications, running the same

context (e.g. - “Webserver”)

● Replication Controller - a loop that drives current state towards expected state

● Service - a set of running pods that run together (e.g. - load-balanced backends)

● Labels - identifying metadata attached to their objects (dev vs prod)

Page 14: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Kubernetes Architecture

Page 15: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

The Benefits of Kubernetes and OpenStack collaboration● Docker provides:

○ The benefits of containers usage

● Kubernetes provides:

○ Portability, isolation from the underlying layers (infrastructure)

○ Container management, service discovery, load balancing

● Murano provides:

○ Ready-to-install applications

○ Cluster management

○ Infrastructure automation and autoscaling options

○ Application catalogue

● OpenStack provides:

○ Infrastructure as a Service layer for everything above

Page 16: Deploying and managing container-based applications with OpenStack and Kubernetes

#dfist

Demo

Demo deployment of Kubernetes cluster on OpenStack using Murano

Page 17: Deploying and managing container-based applications with OpenStack and Kubernetes

Thank you!Questions?Questions?

@idvoretskyihttps://plus.google.com/+IgorDvoretskyihttps://github.com/idvoretskyihttps://ua.linkedin.com/in/idvoretskyi