Containers Today in Den Haag – wij zijn er bij



Komende donderdag vindt het evenement Containers Today in Den Haag plaats. De organisatie is in handen van Amazic en Lef Marketing. Collega Wiebe de Roos van Flusso is als spreker op verzoek van de ABN-AMRO (een belangrijke klant voor Flusso) uitgenodigd. Hij verzorgt de talk “Dockerizing the Enterprise – fast and secure” als onderdeel van de business track.


Het team van ABN-AMRO bij de stand met promotiemateriaal
.

Containers?

Containers Today…gaat over de inzet van Docker containers als hulpmiddel om software applicaties gemakkelijk te kunnen ontwikkelen, testen en opleveren. Een container kan worden gezien als een “mini Virtuele Machine” waarin een software applicatie zit. Deze container is, net als een echte zeecontainer, gemakkelijk te installeren op een ontwikkelomgeving zoals een laptop of op het daadwerkelijke productie-systeem. De bekendste en meest gebruikte leverancier die container-technologie aanbiedt is het bedrijf Docker Inc.


Het gemak van Docker containers zoals Docker Inc het ziet.

ABN-AMRO use case

Wiebe de Roos is momenteel als CI/CD Consultant / Engineer bij de ABN-AMRO werkzaam. Daar werkt hij aan allerhande CI/CD gerelateerde vraagstukken.

Twee belangrijke projecten waaraan hij nu werkt:

  • De implementatie van Cloudbees Jenkins Enterprise op Amazon Web Services (AWS public Cloud)

  • Container security in de breedste zins des woords (van bijvoorbeeld source-code tot en met controle en monitoring van Docker-containers die op productiesystemen draaien)

De talk die Wiebe samen met een collega van ABN-AMRO verzorgt, behelst de adoptie van containers bij ABN-AMRO voor de gehele IT-organisatie. Containers op enterprise schaal dus. Jenkins Enterprise is een Continuous Integration-tool ontwikkeld door Cloudbees. De inzet van Jenkins Enterprise heeft ertoe geleid dat software ontwikkelteams sneller en gemakkelijker hun applicaties kunnen ontwikkelen, testen, controleren op opveiligheidsaspecten en opleveren.


De 5 belangrijkste voordelen die Jenkins Enterprise brengt

Er zijn integraties met diverse andere tools, onder andere om applicaties te bouwen, te testen, de security ervan te checken, het versiebeheer van de source-code te beheren en om de applicaties daadwerkelijk op te leveren. Dit heeft dus betrekking op de hele software development lifecycle. Deze tool is geheel opgebouwd uit containers en ondersteunt het gebruik van containers dan ook zeer goed.


Cloudbees Jenkins Enterprise schema

Enkele voordelen bij het gebruik van containers ten opzichte van virtuele servers:

  • Een container is zeer snel te starten en stoppen: veel sneller dan een virtuele server.

  • Een container wordt volledig opgebouwd op basis van source-code.

  • Een container kan overal draaien: op een laptop, een in-house datacenter en in de (public) Cloud.

  • Een container maakt het mogelijk om gemakkelijk en goedkoop applicatiecomponenten (zoals microservices) los uit te rollen, testen en distribueren.

In de sessie werd ook dieper ingegaan op diverse beveiliging gerelateerde aspecten van containers. Flusso heeft hiervoor veel zaken uitgezocht en op basis daarvan implementeert men nu best practices bij de ABN-AMRO.

De belangrijkste uitgangspunten en tips zijn:

  • Zorg ervoor dat containers gemaakt worden volgens de laatste richtlijnen die door Docker Inc worden geadviseerd. Dit kan worden gecontroleerd middels een syntax check van de source-code, bijvoorbeeld met Hadolint.

  • Check je Docker-containers op kwetsbaarheden (vulnerabilities) terwijl je ze bouwt (on build time), bijvoorbeeld met de open source tool Anchore.

  • Check regelmatig het systeem waarop je containers draaien (run time container scan), zeker als het systeem in productie is. Hiervoor kan de open source tool Docker benchmark prima worden gebruikt. Deze volgt de internationaal erkende CIS-richtlijnen.

Zorg voor continue monitoring van de containers die actief zijn (draaien op runtime) en blokkeer deze zodra er zich een bedreiging voordoet (bijvoorbeeld het uitvoeren van kwaadaardige code zonder dat de beheerder van een systeem hiervan op de hoogte is). Hiervoor zijn diverse commerciële tools beschikbaar. Enkele bekende zijn: Twistlock, Aquasec en Sysdig.


Voorbeeld van Docker benchmark resultaten

Docker image pipeline & Java application pipeline

Elke container begint met een template, een Docker image. Alle containers worden gemaakt middels een “Docker image pipeline”. Deze pipeline bestaat uit een aantal opeenvolgende stappen (stages) in Jenkins waarbij er vanaf source code een Docker image wordt gemaakt die uiteindelijk in een grote database (een Docker registry) terechtkomt. Daarna kan iedereen die hier toegang toe heeft deze Docker image gebruiken. De Docker image wordt gebruikt voor het opstarten van een container. Flusso heeft veel R&D tijd geïnvesteerd in het opzetten van deze pipeline. Die pipeline dient nu als basis bij ABN-AMRO en daar zal deze pipeline verder worden uitgebouwd.

De belangrijkste stappen in de Docker image pipeline zijn als volgt:

  1. Ophalen van de source-code uit een source-code versiebeheer-tool zoals Gitlab of BitBucket.

  2. Controle van de syntax van de source code (zoals ook source-code van applicaties wordt gecheckt) met Docker lint (Hadolint).

  3. Het bouwen van de Docker-image. Dit betreft het omzetten van de template naar een binary die later iedereen kan gebruiken.

  4. Het controleren van de Docker-image op veiligheidsaspecten en componenten van derden (third party libraries). Hiervoor zijn diverse open-source tools gebruikt: Anchore en Clair zijn enkele bekende open source tools.

  5. Het testen van de Docker-image. Starten van de container en het doen van een simpele smoke test.

  6. Het publiceren van de Docker-image in de Docker-repository. Goede naming conventions en metadata (auteur, versie, datum/tijd) zijn hierbij belangrijk om images terug te vinden tussen alle andere (soms wel vele duizenden).


Een eenvoudige Docker-image pipeline

De Docker image als resultaat van de Docker image pipeline kan vervolgens worden gebruikt in de Java application pipeline. Deze pipeline gebruikt de Docker image als “bouwsteen” om Java applicaties te testen en hier nieuwe versies van op te leveren. Ten opzichte van het werken met virtuele servers levert dit de volgende voordelen op:

  • Er hoeveel veel minder servers geconfigureerd en onderhouden worden.

  • De configuratie bestaat volledig uit source code – weinig tot geen handmatige stappen.

  • Configuratie is meer consistent – processen zijn herhaalbaar.

  • Er is veel meer hergebruik mogelijk.

  • Er zijn zeer veel voorbeelden op internet te vinden die vrijelijk te gebruiken zijn.


Kennis delen vanuit waardevolle use case

Tijdens het evenement “Containers Today” zal het gebruik en de voordelen van containers in diverse organisaties worden onderstreept. Voor Flusso betekent dit concreet dat we onze kennis en kunde laten zien middels een zeer praktische use case bij een van onze klanten. Collega’s, bestaande en nieuwe klanten van Flusso kunnen hiervan leren, want de ruime praktijkervaring ten aanzien van de inzet van containers gebruikt Flusso om:

  • Software sneller en makkelijker te ontwikkelen en op te leveren.

  • De veiligheidsaspecten van hun containers onder de loep te nemen.

  • Het gebruik van containers op enterprise schaal naar een hoger plan te tillen.

Wil je eens vrijblijvend sparren over de mogelijkheden van containers binnen jouw organisatie? Neem dan contact op via deze website of bel met Flusso.


Referenties