Een OpenShift tijdschakelaar

Laatst werd mij gevraagd om eens te kijken of het mogelijk was om het gebruik van het OpenShift cluster terug te schalen op basis van tijdschema’s. Bijzondere vraag zou je zeggen, een OpenShift tijdschakelaar. Meestal wordt er gevraagd of het mogelijk is om een applicatie automatisch te schalen op basis van CPU- of geheugengebruik. Echter, in de situatie waar deze vraag is gesteld, wordt het OpenShift platform intern afgenomen. Ook is er een quota ingesteld, en wordt er een pay-per-use afrekenmodel gehanteerd.

Op tijd...

De achtergrond van de vraag was kostenbesparing. In deze omgeving zijn er meerdere development projecten. Door deze buiten kantooruren “uit te zetten”, zou er een makkelijke kostenbesparing haalbaar zijn. Natuurlijk kan je betwisten of dit soort besparingen niet beter passen in een public-cloud situatie, maar desalniettemin een interessant vraagstuk.

Er zijn namelijk, buiten de use-case van kosten besparen, ook andere interessante toepassingen. Natuurlijk kan je met de auto-scaling functionaliteit binnen OpenShift ook bereiken dat de resources efficient worden gebruikt. Echter in sommige situaties is het wenselijk om zelf te bepalen hoeveel containers er op welk moment draaien. Door een development omgeving uit te zetten, komt er capaciteit vrij om bijvoorbeeld een batch proces op te schalen.

Een interessante uitdaging, en een bron voor inspiratie. Na wat onderzoek kwam ik erachter dat een dergelijke toepassing nog niet bestond voor OpenShift, en haastte ik mijzelf naar de tekentafel om het idee verder uit te werken. Zo is uiteindelijk nightshift geboren. Nightshift is een service die wordt gedraaid in een container binnen OpenShift.

Aan de hand van een flexibele configuratie bewaakt nightshift of een aantal draaiende pods moet worden aangepast. In een vast interval worden de huidige DeploymentConfigs opgevraagd bij de OpenShift API. Als er voor een bepaalde DeploymentConfig een tijdschema is geconfigureerd, wordt deze toegepast. Om dit te doen draait de service met een serviceaccount die zowel view- als editrechten heeft.

Simpel, effectief, maar vooral een leuke uitdaging.

About the author

Vincent van Dam

Vincent houdt van dingen aan elkaar lijmen - zowel op zakelijk niveau tussen gebruikers en ontwikkelaars, als in technologie. Hier stelt zijn nieuwsgierige geest en technische achtergrond hem in staat om het meest gecompliceerde probleem op te lossen met elegante, eenvoudige oplossingen. Vincent is het meest tevreden wanneer ontwerpen er goed uitzien en de implementatie geruisloos verloopt.


>