Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei...

31
Klein, aber oho – Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo ContainerConf 2016 15. November 2016 Ulrich Häberlein Teamleitung Backend-Management Apollo-Optik Holding GmbH & Co KG Michael Steinfurth Linux/Unix Consultant & Trainer B1 Systems GmbH [email protected] B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

Transcript of Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei...

Page 1: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Klein, aber oho – Continuous Deliveryvon Micro Applications mit Jenkins,Docker & Kubernetes bei ApolloContainerConf 2016 15. November 2016

Ulrich HäberleinTeamleitung Backend-Management

Apollo-Optik Holding GmbH & Co KG

Michael SteinfurthLinux/Unix Consultant & Trainer

B1 Systems [email protected]

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

Page 2: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Vorstellung B1 Systems

gegründet 2004primär Linux/Open Source-Themennational & international tätigfast 100 Mitarbeiterunabhängig von Soft- und Hardware-HerstellernLeistungsangebot:

Beratung & ConsultingSupportEntwicklungTrainingBetriebLösungen

dezentrale Strukturen

B1 Systems GmbH Continuous Delivery @ Apollo 2/31

Page 3: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Schwerpunkte

B1 Systems GmbH Continuous Delivery @ Apollo 3/31

Page 4: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Vorstellung Apollo

Deutschlands filialstärkster Optikergegründet 1972über 800 Filialen in Deutschlandüber 100 Filialen in Österreichmehr als 3.600 Angestellte

seit 1998 Teil der GrandVision-Gruppeeiner der größten Optikkonzerne der Weltüber 6000 Filialen in 44 Ländernmehr als 27.000 Angestellte

B1 Systems GmbH Continuous Delivery @ Apollo 4/31

Page 5: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Business Case

B1 Systems GmbH Continuous Delivery @ Apollo 5/31

Page 6: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Business Case

B1 Systems GmbH Continuous Delivery @ Apollo 6/31

Page 7: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Ausgangssituation

Business-Plattform mit Datenbanken900 FilialenVerarbeitung von Bestellungen, Lagerprozessen undStapelverarbeitung aus den Schnittstellen der POS Systemezentraler SAP Betrieb der GrandVision

B1 Systems GmbH Continuous Delivery @ Apollo 7/31

Page 8: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Warum Middleware in Microapplication I

agile Entwicklungschnelle, änderbare Geschäftsfälleeinfach skalier- und erweiterbarkontinuierliche, automatische Updatesstandardisiertes Testmanagement

B1 Systems GmbH Continuous Delivery @ Apollo 8/31

Page 9: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Warum Middleware in Microapplication II

Sicherstellung der Deployment-Qualitäthohe VerfügbarkeitbetriebssystemunabhängigConfiguration as Code möglich

B1 Systems GmbH Continuous Delivery @ Apollo 9/31

Page 10: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Workflow

B1 Systems GmbH Continuous Delivery @ Apollo 10/31

Page 11: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Workflow

B1 Systems GmbH Continuous Delivery @ Apollo 11/31

Page 12: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Jenkinsübernahme

1 Java-Anwendungen werden entwickelt und landen im SVN2 Jenkins bekommt SVN Änderungen mit, übernimmt Bauprozess3 maven → Bauen mit Abhängigkeiten und Test4 Übergabe an Microapp-Job

B1 Systems GmbH Continuous Delivery @ Apollo 12/31

Page 13: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Jenkins-MicroappContainer bauen

1 Applikation verpacken in generischen Container2 Konfigurationsdateien befüllen3 Docker Image bauen4 Metainformationen in Dockerfile (Service ↔ Ports)5 Verschieben in die Registry

B1 Systems GmbH Continuous Delivery @ Apollo 13/31

Page 14: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Jenkins Deployment

1 Jobübergabe2 Image herunterladen aus Registry (Tag)3 Erstellen der Metainformationen4 Anhand von Informationen aus Deployment-NFS und Dockerfile5 Anlegen Struktur im NFS6 Anpassen der Softwarezustandsdatei (Konfigurations-NFS)7 Weiter mit Deployment

B1 Systems GmbH Continuous Delivery @ Apollo 14/31

Page 15: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Deployment Entwicklungsstufe

Dockerfile Labels + Konfigurationsinformationen = YAMLz. B. TAG und Häufigkeit konfiguriert in Konfigurationdirektes Deployment in Kubernetes Platform pro Container vomJenkins-Slave

B1 Systems GmbH Continuous Delivery @ Apollo 15/31

Page 16: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Deployment YAML

Beispiel deployment.yaml Beispiel gekürztapiVersion: extensions/v1beta1kind: Deploymentmetadata:

name: testmicroapplication-deploymentspec:

replicas: 1strategy:

type: RollingUpdatetemplate:

spec:restartPolicy: Alwayscontainers:- name: testmicroapplication

image: registry/apps/testmicroapplication:B123env:

B1 Systems GmbH Continuous Delivery @ Apollo 16/31

Page 17: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Test Staging

Softwarezustandsdatei in Entwicklung anhand von config-Dateiim SVNContainer Name & Version, Min & Max Häufigkeit,Downtime-WertJenkins-Job kopiert Zustanddatei in Teststufenbereich im SVN↪→ automatisches Erkennen und Herstellen aller Pods(Container)

Beispiel Zustandsdateitestmicroapplication:B123:1:1:1integration-sample:B42:2:3:1

B1 Systems GmbH Continuous Delivery @ Apollo 17/31

Page 18: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Temporäre Besonderheit

Anwendungen werden direkt nach Test und Entwicklungausgerollt↪→ schnellerer Entwicklungsfortschritt, da gleichzeitigWeiterentwicklung und Fehlerbehebung aus Testsspäterer Normalzustand: Herstellung eines Gesamtzustands derContainer

B1 Systems GmbH Continuous Delivery @ Apollo 18/31

Page 19: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Infrastruktur

B1 Systems GmbH Continuous Delivery @ Apollo 19/31

Page 20: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Hostsysteme

VMware virtuelle Maschinen mit SLES 123 VLANs für jede Stageing Area jeweils /16+1 VLAN Cluster Service IP-Adressbereichpro Stageing Area geteiltes NFS-VolumeSUSE Manager DeploymentSysteme einheitlich → Konfiguration eines neuen Systems infünf Minuten

B1 Systems GmbH Continuous Delivery @ Apollo 20/31

Page 21: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Kubernetes

flanneld für virtuelles Netzkubernetes Pakete (Master & Worker)Master- und Worker-Knoten einheitlich + bessere VerfügbarkeitDocker als Backendinfrastrukturelle Abhängigkeiten ausgelagert (keinHenne-Ei-Problem)

B1 Systems GmbH Continuous Delivery @ Apollo 21/31

Page 22: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

B1 Systems GmbH Continuous Delivery @ Apollo 22/31

Page 23: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Infrastrukturkomponenten

Infrastrukturkomponenten auf ausgelagertenKubernetes-PlattformenRegistry, Jenkins, Maven durch Container höhere Verfügbarkeitetcd mit virtueller IP-Adresse und keepalived hochverfügbarReverse Proxy mit dynamischer Konfiguration ausKubernetes-Services für vhostsalle Komponenten mit Jenkins bau- und deploybar

B1 Systems GmbH Continuous Delivery @ Apollo 23/31

Page 24: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Rolling Update & Lastverteilung & Skalierung

Rolling Updates Replicasets in Deployments↪→ keine Downtimes der ApplikationenVerteilung der Netzwerklast durch Kubernetes-Proxy↪→ Iptables-Regeln verteilen unabhängig von eingehenderIP-AdresseHorizontal Pod Autoscaler↪→ konfigurierbare Skalierung bei Leistungsengpässen

B1 Systems GmbH Continuous Delivery @ Apollo 24/31

Page 25: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

B1 Systems GmbH Continuous Delivery @ Apollo 25/31

Page 26: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Logging

Logging vorbereitet auf ELK-StackStack selber in Kubernetes mit verteiltem Speicherfluentd zur Erfassung der ContainerlogsApplikationen schreiben selbständig LogdateienAusbau der Applikationen zu ELK-Anbindung

B1 Systems GmbH Continuous Delivery @ Apollo 26/31

Page 27: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Monitoring

Nagios für die grundlegende SystemüberwachungSpeicher & BasisdiensteGrafana mit InfluxDB für die Performancegraphen von Clusternund Containern

B1 Systems GmbH Continuous Delivery @ Apollo 27/31

Page 28: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Erfahrungen & Lessons Learned

B1 Systems GmbH Continuous Delivery @ Apollo 28/31

Page 29: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Erfahrungen

Infrastruktur schneller als erwartetFaktor 20 schneller zur SAP-InfrastrukturInfrastruktur selbst zur Entlastung durch dynamische JenkinsSlaves genutztUmgebung sehr stabil und quasi selbstheilend

B1 Systems GmbH Continuous Delivery @ Apollo 29/31

Page 30: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Lessons Learned

etcd hochverfügbar machen ohne Henne-Ei-Problem und wenigerals drei Containerrabbitmq Message Broker im Cluster anfällig fürAktualisierungen (Erlang Version)

B1 Systems GmbH Continuous Delivery @ Apollo 30/31

Page 31: Klein, aber oho - Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

Vielen Dank für Ihre Aufmerksamkeit!Bei weiteren Fragen wenden Sie sich bitte an [email protected]

oder +49 (0)8457 - 931096

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development