View
33
Download
0
Category
Preview:
Citation preview
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 GmbHinfo@b1-systems.de
B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Erfahrungen & Lessons Learned
B1 Systems GmbH Continuous Delivery @ Apollo 28/31
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
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
Vielen Dank für Ihre Aufmerksamkeit!Bei weiteren Fragen wenden Sie sich bitte an info@b1-systems.de
oder +49 (0)8457 - 931096
B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development
Recommended