Zelfservice Applicatie Deployment (ZAD): van een eenvoudige statische website tot een applicatie met een database, objectopslag en authenticatie. Je zet neer wat je nodig hebt, en het platform regelt het voor je.
ZAD is een deploymentplatform op overheidsclouds. Het is zelfservice met extra service: je beschrijft je project via click-ops of cli, en alles wordt voor je klaargezet. Behalve je applicatie, die moet je natuurlijk wel zelf nog even bouwen.
De opzet is dat je in alle scenario's terechtkunt. Een statische site is een component met een webadres eromheen. Een zwaardere integratie is datzelfde component plus een database, een cache, opslag en een inlogvoorziening. Het verschil tussen die twee is welke diensten je aanzet, niet welk platform je nodig hebt.
De losse stukken zijn er meestal wel: ergens is een cluster, ergens een registry, ergens een database. Wat ontbreekt is dat ze in elkaar passen. Dat gat vullen kost per project opnieuw dezelfde puzzel: netwerk, secrets, certificaten, rechten, back-ups, monitoring.
Die puzzel is hier al gelegd. Elk stukje ligt op zijn plaats, en wat jij toevoegt is je applicatie. Zeg je dat je een database wilt, dan wordt die aangemaakt en staan de gegevens als omgevingsvariabelen in je component, zonder dat je ze ergens overtypt.
Dit is de volledige lijst zoals het platform hem kent. Elke dienst brengt zijn eigen omgevingsvariabelen mee, die je component automatisch krijgt.
Maak de applicatie toegankelijk via het publieke internet
Inloggen via SSO Rijk en via lokale Keycloak-accounts in een eigen realm voor dit project
OAuth2-proxy sidecar die Keycloak OIDC authenticatie afdwingt voor webapplicaties.
Zorgt dat prometheus scraping op het component wordt ingeschakeld
Bepaalt hoe Kubernetes de gezondheid van het component controleert (scheme, poort en paden). Zonder deze service wordt het component ook gecontroleerd, maar alleen op TCP-niveau op de eerste inbound-poort. Kies deze service om een HTTP(S)-probe op een aparte poort en paden te richten, of om probes uit te zetten met scheme: none.
Gegevens blijven bewaard tijdens de levenscyclus van de applicatie
Gegevens worden niet bewaard tijdens de levenscyclus van de applicatie
Database service voor applicaties
S3-compatible object storage voor documenten, afbeeldingen en grote bestanden
Verstuur e-mail vanuit je applicatie via de mailrelay van het platform. Je krijgt een eigen SMTP-account met een eigen dagbudget en een afzenderadres op naam van je project; de naam die de ontvanger ziet, kies je zelf.
Shared Redis cache en message broker voor caching en Celery task queues
Geuploade bestanden (bijv. certificaten) gekoppeld als bestand of env-var aan een component
Zet bepaalde deployments, op basis van matching, na een deadline in slaapstand en wek ze op verzoek weer op. De deployment doet een koude start.
Nodig gebruikers uit voor het Keycloak-realm van dit project via een deelbare link. Vereist de Keycloak-service.
Bepaal welke andere projecten, deployments of componenten de pods van dit project mogen bereiken en waar dit project zelf heen mag, telkens op een expliciet benoemde poort. Dit gaat over netwerktoegang tussen projecten, niet over DNS-domeinen.
Geeft de optie te verbinden met de VLAM-API van SSC-ICT. Je hebt zelf keys nodig om de service te mogen gebruiken, dat kan niet via ZAD.
Deze diensten kies je niet: ze draaien altijd, voor elk project.
Een platform dat alleen uitrolt en daarna wegkijkt, laat het echte werk alsnog bij jou liggen. Deze diensten kijken mee zodra je applicatie draait.
Automatisch beschikbare platform variabelen
Systeemdienst: houdt draaiende deployments in de gaten na een sync en hoogt het geheugen op van een component dat OOM'd. Draait altijd, is niet kiesbaar.
Systeemdienst: beoordeelt wat de waargenomen toestand van een draaiende deployment betekent (OOM, CrashLoopBackOff, image ophalen mislukt) en weegt daarbij mee wat andere diensten over die deployment melden. Draait altijd, is niet kiesbaar.
Systeemdienst: de eigen omgevingsvariabelen van een component, per component en per deployment-component. Draait altijd, is niet kiesbaar - elk component heeft ze. De waarden worden versleuteld opgeslagen.
Systeemdienst: koppelt platform-variabelen aan de namen die een component verwacht (POSTGRES_HOST=$DATABASE_SERVER_HOST). Draait altijd, is niet kiesbaar. Een onbekende verwijzing is hier een harde fout, anders dan bij een eigen omgevingsvariabele.
Daarbovenop draait er 's nachts een ronde over de hele vloot die het geheugen en de CPU van elk component bijstelt op wat het echt gebruikt, en maakt het platform back-ups van schijven, databases en buckets naar opslag buiten het cluster, versleuteld met een sleutel per project en in te plannen per deployment.
Alles wat het platform weet over je project staat op een plek bij elkaar. Je ziet per deployment de toestand, het geheugen- en CPU-gebruik over de tijd, de logs van je pods, de lopende taken en de gemaakte back-ups. Wat misgaat wordt in gewone taal gemeld, niet als een statuscode die je zelf moet opzoeken.
Wat je hier aanklikt, kun je ook geautomatiseerd doen. Beide gaan langs dezelfde API als deze interface.
Inloggen gaat met je organisatieaccount. Heb je nog geen toegang tot een project, dan kan iemand uit dat project je een uitnodiging sturen.