Nulecule Packaging, Distributing & Deploying Container Applications the Cloud Way 2016 - Ghent, Belgium.

Slides:



Advertisements
Similar presentations
Implementing Tableau Server in an Enterprise Environment
Advertisements

Docker Martin Meyer Agenda What is Docker? –Docker vs. Virtual Machine –History, Status, Run Platforms –Hello World Images and Containers.
Docker Martin Meyer Agenda What is Docker? –Docker vs. Virtual Machine –History, Status, Run Platforms Hello World Terminology: Image and.
Getting to Push Button Deploys Moovweb January 19, 2012.
SITools Enhanced Use of Laboratory Services and Data Romain Conseil
Model a Container Runtime environment on Your Mac with VMware AppCatalyst VMworld Fabio Rapposelli
Microsoft and Community Tour 2011 – Infrastrutture in evoluzione Community Tour 2011 Infrastrutture in evoluzione.
SugarCRM Service Template
Module: Software Engineering of Web Applications Chapter 2: Technologies 1.
#msitconf. Damien Caro Technical Evangelist Manager, Что будет, если приложение поместить в контейнер? What happens if the application.
 Learn the mechanics of using App Inventor to build apps.  Learn how to design an app’s user interface with the App Inventor Designer, and its behavior.
Docker for Ops: Operationalize Your Apps in Production Vivek Saraswat Sr. Product Evan Hazlett Sr. Software
PaaS services for Computing and Storage
DevNet API Scavenger Hunt
Getting & Running EdgeX Docker Containers
Deployment Architectures For Containers
Stress Free Deployments with Octopus Deploy
Abstract After a SIG has been approved, one of the next steps is to get products out to users. During this talk, Niels will explain how the Storage SIG.
WordPress Introduction
Fundamentals Sunny Sharma Microsoft
@ Bucharest DevOps Hacker Meetup
Essentials of UrbanCode Deploy v6.1 QQ147
Web application hosting with Openshift, and Docker images
Reproducible Bioinformatics
application into a Flatpak
Accelerate your DevOps with OpenShift by Red Hat
Docker Birthday #3.
6/11/2018 8:14 AM THR2175 Building and deploying existing ASP.NET applications using VSTS and Docker on Windows Marcel de Vries CTO, Xpirit © Microsoft.
In-Depth Introduction to Docker
Docker – kontejnerizacija na serveru Vedran Vučetić, SPAN
Deploying Dockerized Apps to the Azure Container Service
An In-Depth Look at the Autodesk® AutoCAD® App Autoloader Module
Microservices, Docker, .NET, Windows, Linux, Azure. Oh, My!
Azure CLI Deep Dive Neil Peterson Content Developer Microsoft.
Integrando o Docker em seu ambiente de Virtualização
Atomic Developer Bundle
In-Memory Performance
SharePoint Framework Extensions
Title Month Year DevOps, CI, Opensource and the Cloud
Build /21/2018 © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION.
Event driven Microservices with VERT.X & Kubernetes
Kubernetes Container Orchestration
Introduction to Docker
Microservices in Dyalog APL Morten Kromberg – 11th January 2018
Azure Container Service - the most open container orchestration service yet Saurya Das Program Manager.
Using docker containers
Azure Container Instances
Securing Cloud-Native Applications Jason Schmitt CEO
Atomic Developer Bundle
Denys FOSDEM 2018 What's new in Graphite 1.1 Denys FOSDEM 2018.
Intro to Docker Containers and Orchestration in the Cloud
Single Container Workloads in Azure
Simplified Development Toolkit
Learn. Imagine. Build. .NET Conf
Container cluster management solutions
Agile testing for web API with Postman
Configuration management suite
Introduction to Docker
Testing inside of Kubernetes and Openshift
OpenShift as a cloud for Data Science
Container technology, Microservices, and DevOps
OpenStack Summit Berlin – November 14, 2018
Azure Container Service
Managing and monitoring SQL Server on Linux from the command line
Download the PPT and code from github as below
OPeNDAP/Hyrax Interfaces
Shipping Data Science Products with R and Docker
Empowering teams with scalable Shiny applications
Container Images – Best Practices & Tools
Containers on Azure Peter Lasne Sr. Software Development Engineer
Presentation transcript:

Nulecule Packaging, Distributing & Deploying Container Applications the Cloud Way 2016 - Ghent, Belgium

Container Tools Engineer @ Red Hat Brian Exelbierd vpavlin@localhost $ su - bexelbie bexelbie@localhost $ Container Tools Engineer @ Red Hat https://github.com/bexelbie https://twitter.com/bexelbie Slides heavily based on Václav Pavlín’s Originals

Atomic Developer Bundle An easy start Linux container development environment. Enabling development with Docker, Kubernetes, OpenShift, Mesos-Marathon and Nulecule Toolbox

<insert containers talk> I don’t have to do this, do I?

Simple, Clean & Beautiful* Container Packaging Simple, Clean & Beautiful* But … no dependency defs, no instructions, all “open” differently and everyone makes a new one. *The debate on these terms is another talk Beverage Can

Everybody Repackages Bonus: Most are poorly documented, not easily changed, not audited, and generally scary Search for MariaDB

587 Everybody Repackages Bonus: Most are poorly documented, not easily changed, not audited, and generally scary Search for MariaDB

Containers are fun! Gary H

The “UX” of choice for containers Run the mariadb container: # docker run --name=mydb -e USER=wordpress -e PASS=$(pwgen -s -1) -e NAME=wordpress -d <yourname>/mariadb Then run the wordpress container, using the alias 'db' for the linked MariaDB container: # CID=$(docker run -p 80 --link=mydb:db -d <yourname>/wordpress) Then find the external port assigned to your container: # docker port $CID 80 Visit in a web browser, then fill out the form. No need to mess with wp-config.php, it has been auto-generated with proper values. READMEs The “UX” of choice for containers

Containers are fun! Gary H

Multi-container Application 2-n container images, operated as a single unit, re-using existing components F1 Beer Car

An application consists of many parts, that need to be operated together Gitlab Redis Master PostgerSQL Redis Slaves

An application consists of many parts, that need to be operated together Coming Soon: Microservices Gitlab Redis Master PostgerSQL Redis Slaves

Hooray - metadata separated from images Orchestration Hooray - metadata separated from images Skystacker

Metadata Distribution $ curl -O https://raw.githubusercontent.com/kube... $ ls redis-master-controller.yaml $ kubectl create -f redis-master-controller.yaml Metadata Distribution No common way to transfer metadata to Ops or other users

Various Orchestration Projects There is no winner yet and each defines it’s own format to describe the deployment

Metadata Modifications "env": [ { "name": "MYSQL_SERVICE_IP", "value": "1.2.3.4" }, { "name": "MYSQL_SERVICE_PORT", "value": "3306" }, { "name": "MYSQL_PASSWORD", "value": "1234" } ] Note: Remember to substitute environment variable values in json file before creating replication controller. Quoted from Phabricator Kubernetes example Metadata Modifications Most environment changes will require some metadata changes

The “UX” of choice for multi-container orchestrated apps Kubernetes Guestbook Example 725 lines/paragraphs - +30 KB READMEs The “UX” of choice for multi-container orchestrated apps

Nulecule Specification, composability, common distribution, parametrization, orchestration providers Molecule Wallpaper

Container engine independent Orchestrator embracing Just a Spec Container engine independent Orchestrator embracing

Why another thing? Tool agnostic - and doesn’t push Allow high-level thought with low-level tweaks Easy enough for a junior sysadmin to use Able to integrate with existing tools Open, including implementatoin

DAG to define application components and dependencies graph: - name: guestbookfront-app ... - name: redis-centos7-atomicapp ... Graph Guestbook DAG to define application components and dependencies Redis Master Redis Slaves

All dependencies are pulled during “install” as defined in Nulecule. graph: - name: guestbookfront-app ... - name: redis-centos7-atomicapp source: docker://projectatomic/redis-centos7-atomicapp Manages Dependencies guestbookfront-app redismaster-app All dependencies are pulled during “install” as defined in Nulecule. redisslave-app docker pull projectatomic/redis-centos7-atomicapp graph: - name: redismaster-app ... - name: redisslave-app ...

Provide the right values at deployment time graph: - name: helloapache-app params: - name: image description: The webserver image default: centos/httpd - name: hostport description: The host TCP port default: 80 constraints: - allowed_pattern: ^[0-9]+$ description: Port number has to be a numeric value Parametrization Provide the right values at deployment time

Every component has its own parameters graph: - name: helloapache-app params: - name: image description: The webserver image default: centos/httpd - name: hostport description: The host TCP port default: 80 constraints: - allowed_pattern: ^[0-9]+$ description: Port number has to be a numeric value Parametrization Every component has its own parameters 1

Default values can be provided and overridden graph: - name: helloapache-app params: - name: image description: The webserver image default: centos/httpd - name: hostport description: The host TCP port default: 80 constraints: - allowed_pattern: ^[0-9]+$ description: Port number has to be a numeric value Parametrization Default values can be provided and overridden 2

Parameters can be constrained by regular expression graph: - name: helloapache-app params: - name: image description: The webserver image default: centos/httpd - name: hostport description: The host TCP port default: 80 constraints: - allowed_pattern: ^[0-9]+$ description: Port number has to be a numeric value Parametrization Parameters can be constrained by regular expression 3

A file containing “answers” to questions defined by parameters [general] provider = kubernetes [helloapache-app] image = centos/httpd hostport = 80 Answers file A file containing “answers” to questions defined by parameters

A file containing “answers” to questions defined by parameters [general] provider = kubernetes [helloapache-app] image = fedora/httpd hostport = 8080 Answers file A file containing “answers” to questions defined by parameters 1

These represent orchestrators artifacts: kubernetes: - file://...kubes/gitlab-rc.json - file://...kubes//gitlab-http-service.json docker: - file://...docker/gitlab-link-run openshift: - file://...shift/os-route.json - inherit: - kubernetes Providers These represent orchestrators

Deployment metadata templates for orchestrators artifacts: kubernetes: - file://...kubes/gitlab-rc.json - file://...kubes//gitlab-http-service.json docker: - file://...docker/gitlab-link-run openshift: - file://...shift/os-route.json - inherit: - kubernetes Artifacts Deployment metadata templates for orchestrators

Artifacts are Parameterized "image": "$image", "name": "helloapache", "ports": [ { "containerPort": 80, "hostPort": $hostport, "protocol": "TCP" } ] Artifacts are Parameterized Dollar sign variable replacement

It’s not Slideware … Atomic App Reference Implementation of Nulecule Nulecule app installer and manager, container-enabled, provider plugins, single command deployment Ship Shipping Ships

Base for application images FROM projectatomic/atomicapp:0.4.0 MAINTAINER Red Hat, Inc. <container-tools@redhat.com> LABEL io.projectatomic.nulecule.specversion="0.0.2" \ io.projectatomic.nulecule providers="kubernetes,docker"\ Build="docker build --rm --tag test/gitlab-atomicapp ." ADD /Nulecule /Dockerfile README.md gpl-3.0.txt /application-entity/ ADD /artifacts /application-entity/artifacts Base for application images You build your app on top of our Atomic App base image

Demo Thanks: Tomas Kral (@kadel) Michael Scherer

D E M O T I Indiana Jones and the Temple of Doom

Learn More at Project Site: www.projectatomic.io Github: https://github.com/projectatomic/nulecule https://github.com/projectatomic/atomicapp IRC: #nulecule @ Freenode Mailing List: container-tools@redhat.com Brian “bex” Exelbierd @bexelbie, bex@pobox.com, bexelbie@redhat.com Slides and examples: https://github.com/bexelbie/nulecule-talk-demo Nulecule: Packaging, Distributing & Deploying Container Applications the Cloud Way by Brian Exelbierd is based on Nulecule: Packaging, Distributing & Deploying Container Applications the Cloud Way by Václav Pavlín. Both are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.