CapRover: Wat is het en wat kan je ermee?
CapRover is een eenvoudige tool om te gebruiken om apps/databases en web servers te beheren. Dit onderzoek gaat over hoe je CapRover kan inzetten in een kortlopend DevOps project. Dit onderzoek maakt gebruik van de "ictresearchmethods" (HBO-i, 2021)=). De methoden die ik gebruikt heb, zijn "**prototyping**" en " **Literature study**". Het gebruik van onderzoeksmethoden uit verschillende onderzoeksruimtes zorgt voor triangulatie: een completer beeld en een onderzoek van hogere kwaliteit.
Hoofdvraag: "Hoe kan je CapRover inzetten in een kortlopend DevOps project?"
Deelvragen:
- Wat is CapRover?
- Hoe kan je CapRover opzetten?
- Hoe kan je CapRover gebruiken?
- Hoe kan CapRover van waarde zijn binnen een DevOps cultuur?
In de beroepsproduct weken werkt een team aan een bestaande applicatie, deze applicatie gaat een ontwikkelteam uitbreiden. Het ontwikkelteam gaat proberen de uitbreidingen te deployen met CapRover. Deze uitbreidingen moet dan wel loosely coupled zijn met de andere microservices.
Dit onderzoek gaat over, wat CapRover nu eigenlijk is en wat de mogelijkheden ervan zijn. Hierna kijken we naar hoe je CapRover opzet en hoe je het kan gebruiken, aan de hand van prototyping. Als het duidelijk is wat CapRover is en hoe CapRover werkt, gaan we kijken naar hoe je CapRover inzet binnen een DevOps cultuur en wat de meerwaarde ervan is.
CapRover introductie
CapRover is een eenvoudige tool om te gebruiken om apps/databases en web servers te beheren. CapRover ondersteunt onder andere NodeJS, Python, StrapiCMS, NextJS en nog veel meer. CapRover is een free en Open Source PaaS (zie PaaS). CapRover is razendsnel en robuust, omdat het Docker, Nginx, LetsEncrypt en NetData gebruikt onder de motorkap. Hier ziet de gebruiker niet veel van, omdat de gebruiker een gebruikersvriendelijk interface gebruikt. Onderstaand een aantal sterke punten van CapRover (CapRover, Free and Open Source PaaS!, 2021, 11 september):
- CLI, voor Automatisering en scripting.
- Web GUI, voor gemakkelijke- toegang en gebruik.
- No lock-in, ook zonder CapRover blijven applicaties werken.
- Docker Swarm, CapRover maakt gebruik van Docker Swarm voor containerization en clustering.
- Nginx, volledige aanpasbaar Nginx template voor load-balancing.
PaaS
PaaS, ook wel "Platform as a Service" genoemd, is het leveren van besturingssystemen en bijbehorende diensten zonder deze te hoeven downloaden of installeren. Met PaaS kun je functies van besturingssystemen aanpassen en bijwerken. Hierdoor kunnen ontwikkelteams op maat software projecten opleveren. Het grote voordeel van PaaS is dat er aanzienlijk meer mensen kunnen werken aan het ontwikkelen, onderhouden en implementeren van web applicaties. (Marqit, 2018, 12 december)
CapRover installatie
Om CapRover te installeren en te configureren, moet je aan een aantal eisen voldoen. Aan onderstaande eisen moet je voldoen om CapRover op te kunnen zetten.
- Je moet een domeinnaam hebben.
- Server specificaties met minimaal 1GB RAM.
- Server moet Docker en npm geïnstalleerd hebben.
CapRover runnen
Om CapRover te runnen in een server moet je onderstaand commando uitvoeren. Het is van belang dat je de port mappings niet aanpast. CapRover werkt alleen op een aantal specifieke ports.
docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover
Verbind root domein
CapRover moet verbinden met een domeinnaam, dit doe je door in bijvoorbeeld TransIP een A-record toe te voegen. Dit A-record moet verwijzen naar de server waar CapRover op is geïnstalleerd. Je moet de naam van het A-record instellen als "*"
, dit moet om sub domeinen aan te kunnen maken bijvoorbeeld: [applicatie-naam].[domeinnaam].nl.
CapRover CLI installeren
De NPM package CapRover gebruik je om de CapRover CLI te installeren. Deze package installeer je door onderstaand commando uit te voeren:
npm install -g caprover
Na het installeren van de CapRover package kan je onderstaand commando uitvoeren:
Caprover serversetup
Hier moet je nu je domeinnaam in vullen, waar je zojuist het A-record bij hebt ingevuld die kijkt naar de VPS. Wanneer je ingelogd ben via de cli, kan je inloggen in je CapRover omgeving op de URL: captain.[domeinnaam].nl.
(caprover, caprover - getting started, 2021)
CapRover gebruiken en deployen met CapRover
Om te kijken hoe je applicaties via CapRover kan deployen, gaan we twee applicaties deployen. De eerste applicatie is een Strapi-applicatie. Deze applicatie moet je configureren, zodat deze gebruikt maakt van de tweede applicatie, MongoDB. MongoDB kan je deployen als een one-click database
.
Strapi deploy met CapRover
Om Strapi te deployen met CapRover moet je Strapi eerst lokaal draaiend krijgen. Hoe je dit kunt doen is te vinden op Strapi Getting Started. Om Strapi te deployen moet je een Dockerfile toevoegen.
Dockerfile
FROM strapi/base
# Create app directory
RUN mkdir -p /srv/app
WORKDIR /srv/app
COPY ./package.json ./
RUN yarn install
COPY . .
RUN yarn build
EXPOSE 1337
CMD ["yarn", "start"]
Om Strapi nu te deployen met CapRover moeten er een aantal zaken gebeuren. Eerst moet je in CapRover een nieuwe app maken. In onderstaande afbeelding staat hoe je deze moet configureren. Hier is er de mogelijkheid om HTTPS te gebruiken.
CapRover heeft een verplicht captain-definition
bestand nodig om een Dockerfile te gebruiken:
{
"schemaVersion" :2 ,
"dockerfilePath": "./Dockerfile"
}
De volgende stap is om de environmental Variables
op te stellen. Dit heb je nodig om met MongoDB te verbinden. De handige functionaliteit One Click Apps
van CapRover, kun je gebruiken om een MongoDB op te zetten. Deze functionaliteit biedt meer dan 100 verschillende apps/databases aan, die je met 1 klik op de knop kunt deployen naar een server. MongoDB kun je deployen via One Click Apps
, het enige wat je hoeft is MongoDB opzoeken, de juiste versies in te vullen en een naam te geven. De gegevens van de MongoDB kun je vinden onder het kopje App Configs
, deze gegevens vul je in bij de environmental variables
in je app configs
van je strapi-project.
De volgende stap is om Strapi te gaan deployen. Hier zie je verschillende mogelijkheden:
- CLI deployen
- Tarball
- Github/BitBucket/GitLab,
- Dockerfile,
- Captain-definition file
- Docker image.
Dit prototype maakt gebruikt van een deployment via GitHub. Hier gebruik je een gegenereerde SSH key. Zie hier om een SSH key te genereren op GitHub.
Een URL om een webhook in GitHub in te stellen is beschikbaar, wanneer je de GitHub repo en SSH key ingevuld hebt. De webhook zorgt ervoor dat na het updaten van de master branch er automatisch een nieuwe build en deployment plaatsvinden (zie onderstaande afbeeldingen).
Het project is te benaderen op [app-name].[domeinnaam].nl nadat de deployment succesvol is.
De waarde van CapRover binnen een DevOps cultuur
Tegenwoordig is er binnen veel ontwikkelteams een DevOps cultuur, maar hoe kan CapRover hier een waarde aan toevoegen. Binnen DevOps zijn er een aantal zaken waar veel focus op ligt samenwerken, kortere releasecycli, continu leren en automatisering (What is devops? z.d.). CapRover heeft voor al deze punten mogelijkheden tot verbetering.
CapRover zorgt er voor dat Ops minder werk is, er is geen operations expertise meer nodig. Dit komt simpelweg doordat je niet meer uren en dagen tijd hoeft te besteden aan het opzetten van een server, instellen build tools, SSL certificaten en updates. Ontwikkelaars die gebruik maken van dure services zoals Heroku en Microsoft Azure zullen zien dat je voor CapRover alleen voor de server hoeft te betalen (Lafferty, B. 2021, 5 juli).
Samenwerken
CapRover deployed alles direct naar een server, zodat iedereen bij de bestanden kan voor een optimale samenwerking.
Kortere releasecycli
Deployments naar ontwikkel-, test- en productieomgevingen kun je (automatisch) uitvoeren met webhooks. Hierdoor raak je geen tijd kwijt aan handmatige deploys of het instellen van lastige configuratie.
Continu leren
CapRover heeft een uitgebreid monitoring overzicht en toont constant alle logs van de applicaties die draaien. Hierdoor kan een ontwikkelteam kijken waar fouten zijn en waar verbetering mogelijk is.
Automatisering
In CapRover kun je op verschillende manieren automatisch deployen. CapRover biedt een mogelijkheid om zelf te bepalen wanneer je wilt deployen. Hierbij moet je denken aan bijvoorbeeld een merge met master en een feature-branch. Er zal dan automatisch een deploy plaatsvinden.
Je hebt nog een aantal verschillende alternatieven op CapRover, maar hier lopen de kosten al snel op. (cap_rover. z.d.)
Conclusie
Dit onderzoek heeft laten zien dat je met CapRover snel, gemakkelijk en geautomatiseerd kan deployen naar een server. En snel applicaties, databases en services op kan zetten met één klik en minimale configuratie. Deze waarnemingen heb ik onderbouwd met de onderzoeksmethode “prototyping” en aangetoond dat het ook daadwerkelijk snel en gemakkelijk gaat.
Na het onderzoeken hoe CapRover in elkaar zit, heb ik gekeken naar welke waarde CapRover toevoegt in een DevOps cultuur: Welke processen kan je verbeteren. Verschillende bronnen hebben aangetoond dat CapRover het samenwerken, kortere releasecycli, continu leren en automatisering processen sterk verbeterd. Maar ook dat er geen operations expertise meer nodig is, omdat alles gemakkelijk op te zetten is.
Dit onderzoek heeft laten zien dat CapRover geschikt is voor een kortlopend DevOps project, omdat het snel en gemakkelijk op te zetten is, je snel applicaties kan deployen en DevOps processen optimaliseert.
Bronnen
- Microsoft (z.d.). What is devops? Geraadpleegd op 8 oktober 2021 van https://azure.microsoft.com/nl-nl/overview/what-is-devops/#devops-overview
- CapRover (2021, 11 september). CapRover, Free and Open Source PaaS! Geraadpleegd op 8 oktober 2021 van https://caprover.com
- CapRover (z.d.). Getting Started. Geraadpleegd op 6 oktober 2021 van https://caprover.com/docs/get-started.html
- Bonestroo, W.J., Meesters, M., Niels, R., Schagen, J.D., Henneke, L., Turnhout, K. van (2018): ICT Research Methods. HBO-i, Amsterdam. ISBN/EAN: 9990002067426. Geraadpleegd op 5 oktober 2021 van http://www.ictresearchmethods.nl
- Lafferty, B. (2021, 5 juli). CapRover The Definitive guide. Geraadpleegd op 8 oktober 2021 van https://medium.com/swlh/caprover-the-definitive-guide-90076405aae4
- Marqit. (2018, 12 december). Platform as a Service. Geraadpleegd op 6 oktober 2021 van https://www.marqit.nl/wat-is-platform-as-a-service
- cap_rover. (z.d.). CapRover alternatives. Stackshare Geraadpleegd op 6 oktober 2021 van https://stackshare.io/caprover#alternatives