Docker, Balena, en co. – Containerisatie in industriële automatisering
In de IT-sector, en met name in de softwareontwikkeling, is containerisatie een belangrijke trend. Het is een lichtgewicht alternatief of metgezel voor virtualisatie. Ontwikkelaars kunnen hun processen versnellen zonder dat ze de doelomgeving van de applicatie in de gaten hoeven te houden. Dit wordt gedaan door inkapseling van de software en al zijn afhankelijkheden. Daardoor draait de software uniform en consistent op elke IT-infrastructuur. Hierdoor wordt software gemakkelijk overdraagbaar, wat fouten vermindert en de kwaliteit verbetert. Bovendien zorgt inkapseling voor een quotabeheer van systeemresources per container. Bovendien is deze methode zeer veilig, omdat alle interfaces nauwkeurig moeten worden gedefinieerd. Deze voordelen kunnen niet alleen in de IT, maar ook in de industriële automatiseringswereld worden gebruikt.
Docker wordt vaak gebruikt als synoniem voor containerisatie, maar containerisatie en procesisolatie zelf zijn eigenlijk niet nieuw. De eerste volledig functionele implementatie van containerisatie werd geïntroduceerd met FreeBSD jails. Deze virtualisatiefuncties op besturingssysteemniveau maken deel uit van de Linux-kernel. Met Docker werd containerisatie vereenvoudigd en daarmee interessant voor de markt. Ze voorzagen in een eenvoudig te gebruiken API en gebruikersinterface en standaardiseerden het containerformaat. Dit wordt de OCI (Open Container Initiative) standaard genoemd en wordt vandaag geleid door de Linux Foundation®.
Containerisatie biedt veel interessante benaderingen die van pas kunnen komen in de Industrie 4.0 van vandaag, aangezien industriële programmeerbare logische controllers (PLC’s) intelligenter en krachtiger worden. Fabrikanten gebruiken Linux-besturingssystemen voor hun PLC’s, waarop open source-software kan draaien. Toch moet een op Linux gebaseerde PLC nog steeds de kenmerken hebben van een klassieke PLC (geen pc) en kritieke infrastructuur en toepassingen besturen. Deze openheid zorgt voor waardecreatie in de industriële automatisering en lijkt in contrast te staan met de behoefte aan veiligheid, betrouwbaarheid en determinisme. Daarom hier een nadere blik op containerisatie, wat het biedt en hoe het uw bedrijf kan helpen.
Beveiliging
Beveiliging is een belangrijk punt van zorg in de huidige industriële automatisering en met elke nieuwe component wordt het moeilijker te controleren. Dit wordt nog lastiger wanneer gebruik wordt gemaakt van software van derden en van open source software. Door software in een container te plaatsen, kunnen we het proces isoleren waar het gaat om netwerk, bestandssysteem en rootprivileges. Het is niet de verantwoordelijkheid van de ontwikkelaar om dat in te schakelen wat de applicatie nodig heeft, hij beveelt alleen opstartparameters aan. Het instellen van netwerkrouting, de mountpoints van het filesysteem en geprivilegieerde toegang tot de kernel is de verantwoordelijkheid van het inbedrijfstellingsteam bij het opstarten. Die zijn leesbaar voor mensen en kunnen zelfs later in de operationele situatie worden bekeken.
Daarnaast is er een wereldwijde online community rond containerisatie. Zij bieden bijvoorbeeld informatie over hoe u veilig gebruik kunt maken van containers van derden en hoe u uw eigen veilige container kunt maken. Ook het gebruik van “secure images” van een publiek register, of zelfs het opzetten van een eigen “image register” kan als barrière werken waarmee je een applicatie veiliger maakt.
Systeemdeterminisme
De beheerder van de installatie beschikt niet alleen over een reeks beveiligingsopties, containerisatie biedt ook per-container-gebaseerde opties voor schijf- en CPU-quota’s zoals I/O-snelheid en geheugenlimieten. Dit kan handig zijn om de prestaties op peil te houden en problemen met het determinisme van het hele systeem op te lossen. Het staat ook toe dat een containerproces met specifieke realtimeprioriteit draait op een realtime Linux-systeem, dit om conflicten te vermijden.
Betrouwbaarheid
Met al deze bovengenoemde opties wordt de betrouwbaarheid van uw hostsysteem niet aangetast, mits voorzien van de juiste setup. Maar hoe zit het met de gecontaineriseerde applicatie zelf? In een applicatie met slechts één proces is het vrij eenvoudig. Alles wat dit proces nodig heeft zit in de container, zoals runtimes en bibliotheken. Als de applicatie afhankelijk is van externe bronnen, zoals een plek om te bewaren data op te slaan, controleert de applicatie deze zelf en bereidt zijn omgeving voor bij het opstarten. Als er nu een probleem is met de applicatie, hoeft alleen de container te worden gestopt en opnieuw te worden gestart met uitsluitend de bewaarde gegevens.
Er is een ongeschreven regel die zegt dat het beter is om slechts één proces per container te gebruiken. Maar vaak is een applicatie afhankelijk van meerdere processen of zogenaamde microservices. Een applicatie met een database kan bijvoorbeeld twee containers nodig hebben: een voor het programma en een voor de database. Om ze samen te draaien, helpt een tool genaamd “Compose”. Het is een andere manier om het opstarten van een of meerdere containers te configureren. Hiermee kan de beheerder van de installatie de opstartvolgorde, afhankelijkheden en gedeelde bronnen beheren en een beschikbaarheidscontrole uitvoeren met een gespecificeerde time-out en herstarts van de microservice. Dit zorgt voor de betrouwbaarheid die de beheerder van de installatie nodig heeft.
Schaalbaarheid
Een ander groot voordeel van containerisatie is schaalbaarheid. Hier komt container-orkestratie in de wereld van industriële automatisering. Een container-orkestratie tool zoals Kubernetes of Docker Swarm handelt containers af in verschillende nodes en neemt de complexiteit weg van het afhandelen van gedistribueerde verwerking. Deze nodes kunnen computers, servers of edge devices en zelfs PLC’s zijn. Het kan beschikbaarheid, prestaties en implementaties van gecontaineriseerde applicaties over een hele cluster van nodes afhandelen.
Bruikbaarheid
Containerisatie maakt het gebruik van software een stuk eenvoudiger. In staat zijn om software altijd in exact dezelfde, gecontroleerde omgeving te draaien op elk platform, is een grote verandering in softwareontwikkeling. En zelfs na het uitrollen van software is het veel eenvoudiger om configuraties te veranderen en services te monitoren. Natuurlijk brengt het complexiteit met zich mee wanneer u leert wat containerisatie nu eigenlijk is en hoe het u en uw applicatie kan helpen. Maar als u dit eenmaal onder de knie hebt, zijn alle andere processen veel sneller en controleerbaar. Bovendien opent het gebruik van het al beschikbare brede scala aan diensten, een andere wereld voor de ontwikkeling van industriële automatisering.
Conclusie
Concluderend kan worden gesteld dat fabrikanten zich bewust moeten zijn van softwarecomponenten die zij aan hun systemen toevoegen, deze grondig op betrouwbaarheid moeten testen en zelfs als gebruiksklaar pakket moeten laten certificeren. Wanneer deze open systemen de productieketen verlaten, krijgt de gebruiker een heleboel extra mogelijkheden. Maar ook de fabrikanten zijn er verantwoordelijk voor en dat is nieuw in de industriële automatisering. Moderne PLC’s (zoals de PLCnext Controllers van Phoenix Contact) bevatten veel tools en maatregelen om applicaties veilig en betrouwbaar te houden. Containerisatie in de industriële automatisering is dus opnieuw een enorme kans. Zorg dat u er als eerste mee in aanraking komt en gebruik het in uw voordeel.