OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl...

43
OpenShift 3 Techlab

Transcript of OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl...

Page 1: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

OpenShift 3 Techlab

Page 2: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Container Hype

TODO : Vollflächiges Container Bild

©Håkan Dahlström Source: https://www.flickr.com/photos/dahlstroms/3144199355

Page 3: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Agenda

1. Ziele

2. Container

3. OpenShift 3

4. Workshop

Page 4: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Ziele

1

Page 5: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Ziele des Techlabs

• Gemeinsamer Einstieg in neue, moderne Technologie

• Grundkonzepte verstehen

• Erste Applikation deployen

Page 6: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Was sind Container?

2

Page 7: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

LXC, VServer, FreeBSD Jails, Google...

Nichts neues!

Page 8: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Klassische Virtualisierung

Hypervisor (RHEV, VMware, ...)

Guest kernel

Application

Application server

Libraries

Guest kernel

Application

Application Server

Libraries

Guest kernel

Application

Application Server

Libraries

Guest 1 Guest 2 Guest n

Page 9: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Container Virtualisierung

Hypervisor (RHEV, VMware, ...)

Guest kernel

Application

Application Server

Libraries

Container nodeContainer 1

Application

Application Server

Libraries

Container nApplication

Application Server

Libraries

Container 2

Page 10: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Docker Container

application.war + config

Java 8 image

Ubuntu 14.04 base image

Guest kernel

Wildfly 9 image } read-only

Runtime FS read-write

Hie

rarc

hisc

he D

ocke

rfile

s

# buildet das Dockerfile unter ./

$ docker build .

# container von image app starten

$ docker run -p 8080:8080 app

Page 11: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Container und deren Infrastruktur● Container sind unveränderbar

● Aktualisierung eines Containers erfolgt durch austauschen● sowohl bei Applikations- als auch System-Updates

● Kein lokales Filesystem für Applikationsdaten

● Persistent Storage

Page 12: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

OpenShift

3

Page 13: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Was ist OpenShift?

« Red Hat OpenShift Container Platform »

Neu-Implementation: V2 wurde verworfen und komplett neu gebaut

V2 V3Namespace/Domain ProjectGear Docker ContainerCartridge Docker Base Imagerhc oc (OpenShift Client)

Page 14: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

OpenShift basiert auf etablierten Open Source-Konzepten

Docker Kubernetes

Page 15: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

OpenShift (1/2)

Container Platform, um Applikationen in Containern zu betreiben

One platform runs it all!

Fancy CLI und GUI (self-service)

Page 16: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

OpenShift 3 (2/2)

Base Images für RHEL 6 und 7 patched analog Standard RHEL

Redeployments werden durch Basis Image Update getriggert

Standard Deployment Mechanismus und Workflow

Autoscaling

Container Security

Page 17: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

RHEL 7.2 als Basis

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 18: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Node 3

Node n

Node 2

Node 5

Node 1

Node 4

Compute Nodes

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 19: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Node 3

Node n

Node 2

Node 5

Node 1

Node 4

PodsDocker Registry

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 20: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Master

API

Data Store

SchedulerJenkins

DEV

SCM(git / svn)

OPS

OSE 3 MasterNode 3

Node n

Node 2

Node 5

Node 1

Node 4

Docker Registry

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 21: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Master

API

Data Store

SchedulerJenkins

DEV

SCM(git / svn)

OPS

Replication Controller Node 3

Node n

Node 2

Node 5

Node 1

Node 4

Management/ Replication

Docker Registry

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 22: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Master

API

Data Store

SchedulerJenkins

DEV

SCM(git / svn)

OPS

Pod fackelt ab...Node 3

Node n

Node 2

Node 5

Node 1

Node 4

Management/ Replication

Docker Registry

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 23: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Master

API

Data Store

SchedulerJenkins

DEV

SCM(git / svn)

OPS

… Kubernetes startet ihn neu Node 3

Node n

Node 2

Node 5

Node 1

Node 4

Management/ Replication

Docker Registry

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 24: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Master

API

Data Store

SchedulerJenkins

DEV

SCM(git / svn)

OPS

Persistent StorageNode 3

Node n

Node 2

Node 5

Node 1

Node 4

Management/ Replication

Docker Registry

PersistentStorage

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 25: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Master

API

Data Store

SchedulerJenkins

DEV

SCM(git / svn)

OPS

RoutingNode 3

Node n

Node 2

Node 5

Node 1

Node 4

Management/ Replication

Routing Layer (http / https) HA Proxy

Docker Registry

PersistentStorage

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 26: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Beispiel Java Projekt● War deployed in Wildfly 10

● Maria DB (mit Persistent Volume)

Page 27: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Beispiel OSE 3 Projekte Docker

Registry

PersistentStorage

Via Route im Netz verfügbar

Loadbalancing auf Pods

Verbunden über transparentes Software Defined Network (SDN)

https://a2.ose.puzzle.ch

10.0.0.1

10.1.0.5

10.1.0.2 10.1.0.3

10.0.0.4

https://a1.ose.puzzle.ch

Virtual Private Cloud Public CloudPhysical

RHEL 7.2 / ATOMIC

Page 28: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Virtual Private Cloud Public Cloud

RHEL 7.2 / ATOMIC

Physical

Beispiel Java App OSE 3 Projekt (1) Docker

Registry

PersistentStorage

Via Route im Netz verfügbarLoadbalancing auf Pods

oc scale dc app --replicas=3

Verbunden über transparentes Software Defined Network (SDN)

Projekt-Setup als JSON exportier- / importierbar

https://app.ose.puzzle.ch

10.0.0.1

10.0.0.4

10.0.0.2 10.0.0.3

Page 29: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Virtual Private Cloud Public Cloud

RHEL 7.2 / ATOMIC

Physical

Beispiel Java App OSE 3 Projekt (2) Docker

Registry

PersistentStorage

Maria DB-Pod failed

https://app.ose.puzzle.ch

10.0.0.1

10.0.0.4

10.0.0.2 10.0.0.3

Page 30: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Virtual Private Cloud Public Cloud

RHEL 7.2 / ATOMIC

Physical

Beispiel Java App OSE 3 Projekt (3) Docker

Registry

PersistentStorage

Pod wird neu gestartet● Gleiche Adresse● Persistent Volume

wandert mit

https://app.ose.puzzle.ch

10.0.0.1

10.0.0.4

10.0.0.2 10.0.0.3

Page 31: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Workshop

4

Page 32: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Techlab

https://github.com/appuio/techlab

Page 33: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Resources

DataSheet: https://www.redhat.com/en/files/resources/cl-openshift-enterprise-3-red-hat-inc0328839mm-201512.pdf

Dokumentation: https://docs.openshift.com

Resources: https://www.openshift.com/enterprise/resources.html

Getting Started:https://docs.openshift.com/enterprise/3.1/cli_reference/index.html

Page 35: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten
Page 36: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Anwendungsbeispiele

2

Page 37: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Buildinfrastruktur für Applikationen

Java, JavaScript, Ruby on Rails, Node, ...

Installation von Buildtools in verschiedenen Versionen für unterschiedliche Projekte

Exakte Umgebung die explizit für Applikation definiert wird

Wiederverwendbar, schnell, isoliert.

Page 38: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Java EE 7 Applikation Wildfly 9

War und Config ins Image hinzufügen und Go!

FROM jboss/wildfly

ADD app-web.war /opt/jboss/wildfly/standalone/deployments/ADD standalone.xml /opt/jboss/wildfly/standalone/configuration/

Page 39: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Chancen/Herausforderungen

Page 40: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Vorteile von Containern● Leichtgewichtig und schnell

● Standardisierung

● Einfach zu gebrauchen und zu erweitern

● Grosse Community DockerHub, Tool Ökosystem

● Vielzahl an Docker Images verfügbar

● Kann «Works on my Machine» Probleme ausmerzen 

Page 41: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Herausforderungen: Sicherheit (1/2)

Quelle: http://www.banyanops.com/blog/analyzing-docker-hub/ Mai 2015: Jayanth Gummaraju, Tarun Desikan and Yoshio Turner

64 % aller Docker Images auf Docker Hub der offiziellen Repositories haben Sicherheitslücken:

ShellShock (bash)

Heartbleed (OpenSSL)

Poodle (OpenSSL)

...Alle Docker Images 2015 erstellt0%

10%

20%

30%

40%

50%

60%

70%

80%

36%40%

64%

74%

High Priority High and Medium Priority

Page 42: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Herausforderungen: Sicherheit (2/2)● Prozesse behandeln als würden sie auf Host laufen

● Prozesse nicht als root laufen lassen

● Nur notwendige Ports öffnen

● SELinux oder AppArmor im Container einsetzen

Quellen: https://opensource.com/business/14/7/docker-security-selinuxhttp://www.pro-linux.de/news/1/22315/docker-erh%C3%B6ht-die-sicherheit.html

Page 43: OpenShift 3 Techlab - Puzzle · Aktualisierung eines Containers erfolgt durch austauschen sowohl bei Applikations- als auch System-Updates Kein lokales Filesystem für Applikationsdaten

Herausforderungen: Betrieb

Monitoring

Logserver

Storage

JenkinsMailserverDB Server

Backup

Network

LifecycleContainer u. Infrastruktur