OPENSHIFT

Platform as a Service from a Developer perspective

andi@osec.pl

Andrzej Goławski

IT barcamp 15.06.2015

PaaS overview

code

deploy

run

PaaS Implementations

Cloud Foundry

Heroku

MS Azure

Google app engine

OpenShift

OpenShift history

May 2011

Nov 2012

June 2013

Comming 2015

develope mode

enterprise v1

full online mode

v3

OpenShift Versions

Gear

Small

Medium

Large

Cartridge

Standalone:

JBoss Application Server 7

PHP 5.3

PHP 5.4

Embedded:

Node.js 0.10

MySql 5.5

Cron 1.4

QuickStart

Drupal

WordPress

Django

CakePHP

Tools

RHC - client command-line

The OpenShift web console

IDE plug-ins

RHC

install   (Ruby 1.8.7  required)

$ gem install rhc

setup

$ rhc setup

OpenShift Client Tools (RHC) Setup Wizard

This wizard will help you upload your SSH keys, set your application namespace,
and check that other programs like Git are properly installed.

If you have your own OpenShift server, you can specify it now. Just hit enter to
use the server for OpenShift Online: openshift.redhat.com.
Enter the server hostname: |openshift.redhat.com| 
  You are using 4 of 50 total gears
  The following gear sizes are available to you: small, medium, large

Your client tools are now configured.

Demo Time

Creating Application

Application structure

Application-dir

.openshift

action_hooks

config

modules

standalone.xml

cron

daily

hourly

minutely

monthly

weekly

markers

src

Application structure 

action_hooks

pre-build

build

post-deploy

deploy

Application structure - Cron

#!/bin/bash
minute=$(date '+%M')
if [ $minute != 12 ]; then
    exit
fi
# rest of the script

Application structure - Markers

skip_maven_build

force_clean_build

hot_deploy

java7

Application structure - pom.xml

  <profiles>
    <profile>
     <!-- When built in OpenShift the 'openshift' profile will be used when invoking mvn. -->
     <!-- Use this profile for any OpenShift specific customization your app will need. -->
     <!-- By default that is to put the resulting archive into the 'deployments' folder. -->
     <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html -->
     <id>openshift</id>
     <build>
        <finalName>testapp</finalName>
        <plugins>
          <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
              <outputDirectory>deployments</outputDirectory>
              <warName>ROOT</warName>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

Environment Variables

Deploy Application

$ git add .
$ git commit -m "Some changes to my application"

$ git push

Demo Time

Deploy - Jenkins

Database

Application scaling

scale horizontally

(scale out)

scale vertically

(scale up)

Application scaling

Monitoring

logs

$ rhc tail registration

2015/06/15 00:12:23,270 INFO  [org.jboss.weld.deployer] (MSC service thread 1-3) JBAS016008: Starting weld service for deployment registration.war
2015/06/15 00:12:23,868 INFO  [org.jboss.web] (MSC service thread 1-3) JBAS018210: Registering web context: /barcamp-registration
2015/06/15 00:12:23,949 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "registration.war"
2015/06/15 00:13:58,752 INFO  [org.jboss.resteasy.cdi.CdiInjectorFactory] (http--127.2.72.129-8080-1) Found BeanManager at java:comp/BeanManager
2015/06/15 00:13:58,772 INFO  [org.jboss.resteasy.spi.ResteasyDeployment] (http--127.2.72.129-8080-1) Deploying javax.ws.rs.core.Application: class pl.osec.barcamp.registration.web.WebApplication$Proxy$_$$_WeldClientProxy
2015/06/15 00:34:21,656 INFO  [org.apache.tomcat.util.net.JIoEndpoint] (http--127.2.72.129-8080-Acceptor-0) Maximum number of threads (64) created for connector with address 127.2.72.129/127.2.72.129 and port 8080
$ rhc app-show --gears quota -a registration

Gear                     Cartridges                        Used Limit
------------------------ ------------------------------- ------ -----
557e5072653e8a2f54000014 jbossas-7 datadog-datadog-5.0.0 111 MB  1 GB

disk usage

quick cleaning

$ rhc app tidy -a registration

Monitoring

rhc set-env DATADOG_API_KEY=ef874044026e3c96a94af649d9435d7c -a registration

rhc cartridge-add 
	http://cartreflect-claytondev.rhcloud.com/github/datadog/datadog-openshift 
	-a registration


The cartridge 'http://cartreflect-claytondev.rhcloud.com/github/datadog/datadog-openshift' 
will be downloaded and installed
Adding http://cartreflect-claytondev.rhcloud.com/github/datadog/datadog-openshift 
to application 'registration' ... done

datadog-datadog-5.0.0 (Datadog Agent 5.0.0)
-------------------------------------------
  From:    http://cartreflect-claytondev.rhcloud.com/github/datadog/datadog-openshift
  Website: https://github.com/DataDog/datadog-openshift
  Gears:   Located with jbossas-7

Questions

?

THANK YOU!

OPENSHIFT

By andipansa

OPENSHIFT

  • 935