solum - openstack paas / alm - austin openstack summit

Download Solum - OpenStack PaaS / ALM - Austin OpenStack summit

Post on 15-Apr-2017




0 download

Embed Size (px)


Solum Application Lifecycle Management for OpenStack

Solum PaaS/ALM for OpenStackDevdatta Kulkarni, PTL, devkulkarni)

OutlineProject goalsEarly trials and use-cases Solum architectureFactors influencing adoptionUpcoming featuresQuestion and answers2

OpenStack User survey April 2016


What is Solum?System which provides a declarative model for application developers to deploy and run their applications on OpenStack starting from applications source code

Why should you care?For developers, Solum provides an easy-to-use platform for building, testing, and deploying applications on OpenStack clouds

For operators, Solum provides ability to make their OpenStack cloud more useful to their application developers by enabling CI/CD capabilities for applications to OpenStack clouds



Project goalsDeveloper ProductivityAbility to perform CI/CD, integration with github, integration with existing CI solutions

Application Stack FlexibilityAbility to support applications written in different languages

Add-On Services ExtensibilityAbility to support different add-on services

Application PortabilityAbility to deploy applications across different OpenStack clouds


Solum - System for building and deploying applications to OpenStack Clouds Solum in context with other OpenStack servicesCinder (Block)Manila (File)Trove (DB)Neutron (Network)Nova (VM)Glance(Image)Magnum(Container orchestration & lifecycle)Heat (Orchestration)Solum(App lifecycle)Keystone(Identity)Horizon(UI)Murano(App catalog)Mistral(Workflow)Ironic (Baremetal)Swift (Object)Barbican(Key Mgmt)Ceilometer(Monitoring)6

Early trials & usecases7

Solum in the wild


Solum in useUsers/use-cases:WiproRackspacePaderborn UniversityInterest / References:


How to use existing Jenkins setup with Solum for performing seamless application CI/CD on OpenStack?

Solum features used: App image storage in Glance, API to deploy a pre-built DU

Usecase 1 Wipro: Jenkins for CI, Solum for CDContinuous Integration with JenkinsContinuous Deployment with Solum10

Easily deploy applications to Carina (container cluster service from Rackspace)

Usecase 2 Rackspace: Deploying apps to Docker SwarmSolum features used: Pluggable deployer architecture; Built a Carina specific deployer in Solum


Easily deploy applications to Virtual Machines

Usecase 3 Rackspace: Deploying apps to VMsSolum features used: Pluggable deployer architecture, Used Solums Heat deployer12

Continuous integration and testing of Chef recipes

Solum features used:Custom languagepacks: Developed a custom languagepack containing chef testing tools (rubocop, foodcritic, chef-spec, test-kitchen) with Private github repositories

Usecase 4 Rackspace: Testing Chef recipes13

Considering to build and deploy services from source code with an existing Heat template

Useful Solum features: Build application DUs,; integration with public/private git repositories

Usecase 5 Paderborn Univ: Deploying multiple services14


Solum architecture 15

Solum abstractions and conceptsLanguagepack (LP)AppDeployment Unit (DU)WorkflowParameters16

Solum abstraction - Languagepack (LP)A Docker image that contains libraries, packages, and tools required for testing, building, compiling an applicationExamples:Python applications need: pip, tox, python-mysqldbJava applications need: jdk, jre, mavenChef recipes: chefdk, rubocop, test-kitchen, foodcriticApplication-specific languagepacksDifferent languagepacks for different life-cycle stages of an applicationTesting libraries may be different than libraries for building application artifactsMulti-language applicationsCombine all libraries and tools from different languages in a single languagepackOperator-defined languagepacks, user-defined languagepacks

$ solum languagepack create python


Solum abstraction - Languagepack Example: Python

FROM ubuntu:preciseMAINTAINER Murali Allada

RUN apt-get -yqq updateRUN apt-get -yqq install python-pipRUN apt-get -yqq install python-dev

COPY /solum/bin/


# Check if pip is installedpip help[[ $? != 0 ]] && echo python-pip is not installed. && exit 1

# Install app dependenciescd /apppip install -r requirements.txtbuild.shDockerfile18

Solum sample languagepacks


Other languagepacks to support


Solum abstraction - AppDeclarative application definition source code repositoryrun commandportlanguagepack

version: 1name: cherrypydescription: python web applanguagepack: pythonsource: repository: revision: masterworkflow_config: run_cmd: python app.pyports:- 80$ solum app register --app-file appfile.yamlReason to specify languagepack: App developer knows what libraries are required by their app21

Solum concept - Deployment Unit (DU)Docker image that is formed from the languagepack image with applications source code added to itDU = LP + application source codeSolum guarantees the DU contractApplication source code available at a known location on the DU image /appHow to build a DU?Construct Dockerfile with languagepack as the base image, application source code injected, run command as the entry pointBuild the DU image from this DockerfileLP and DU storageGlance and Swift


DU Deployment: Supported optionsNova-docker driverWorks with DU images stored in Glance

Heat + VM image + DU location provided through user_data sectionWorks with DU images stored in Swift/Docker registry1-1 mapping of DU container to VM

Carina deployer in Rackspaces Solum environmentWorks with Rackspace Carina


Solum abstraction - WorkflowAbstraction to represent execution of application deployment action

Supported application deployment actions (workflows)Build DURun unit tests and build DURun unit tests, build DU, and deploy DUBuild DU and deploy DUDeploy a pre-built DU

Workflows can be triggered from github webhooks

$ solum app deploy cherrypy24

Solum concept ParametersApplication parametersServices needed by an applicationE.g.: Connection parameters for relational database such as TroveThese are injected into the DUEnvironmental parametersParameters intended for Solum to useE.g.: Carina cluster credentials Parameters specified at:application registration timeapplication deploy time (upcoming feature)$ solum app create --app-file appfile.yaml --param-file params.yaml25

Solum sample apps


Summary of current Solum featuresCreate languagepacksRegister, deploy, scale an appUpdate an app keeping the application URL sameSpecify application parameters when registering an appIntegration with public and private github repositories (via github webooks)Deploy app using different compute form factorsnova-dockerVMsContainer cluster (such as Docker Swarm)Environments (dev/test/staging/production)Possible by creating different app for each env and deploying same DU for each27

High-level ArchitectureSolumAPISolumWorkerSolumDeployerQueueQueueQueueSolumConductorHeatDatabaseGlance/SwiftBuilds LP; run unit tests; Build DUDeploys DUDecoupled architectureAsynchronous communication28

Factors influencing adoption29

Usage experienceLanguagepacksLanguagepacks built: python, java, php, nodejs, angularjs, chef testing toolsInternal test users at Rackspace tended to use operator defined languagepacksNeed to install appropriate OS packages in addition to the language libraries/toolspython-msqldb not sufficient, needed OS-level mysql packageLanguagepack creation is iterative processLearning curve how to lower this barrier is question?

AppsNeed for ease of application registration led to supporting interactive prompts for getting app information

Github webhooksStarted with support for public repositoriesInternal use-cases required adding support forPrivate repositoriesCLI support for registering deploy keysCLI support for two-factor authentication


Building LPs and DUsHow to provide isolated environment for building LP and DU Docker images and running untrusted unit test scripts?

Isolated git clone with resource constraints on CPU, memory, disk on containers running unit testing scriptsRunning unit testing scripts as unp