Het landschap van cloud native technologieën is zeer breed en divers. Zo bieden tientallen aanbieders hun tools aan die je op allerlei manieren ondersteunen. Hoe vind je je weg in deze tools? Engineers en architecten van True helpen je op weg. In deze serie delen we onze kennis met je over verschillende Kubernetes tools. 💡 Tip: lees ook de blog De Cloud Native Trail Map van CNCF (en welke aanvullingen True daarop heeft) voor het begin van je reis naar cloud native.
Wat is Kyverno?
Kyverno is een policy engine voor Kubernetes. Met Kyverno beheer je policies als Kubernetes-resources. Kyverno policies kunnen onder meer Kubernetes-resources valideren, hierin mutaties aanbrengen en resources genereren als je een deployment doet. De commandline interface (CLI) van Kyverno maakt het testen van policies mogelijk, evenals het valideren van resources als onderdeel van een CI/CD-pipeline. Kyverno integreert met het Cosign-project, gericht op het ondertekenen van containers. Dankzij deze integratie kun je Kyverno ook gebruiken voor het verifiëren van handtekeningen waarmee Open Container Initiative (OCI)-images zijn ondertekend. Dit draagt bij aan de veiligheid van de toeleverketen, ook wel supply chain security genoemd.
Kyverno maakt gebruik van Kubernetes Admission Controllers, die standaard in Kubernetes aanwezig zijn. Deze controllers kun je vergelijken met een soort checkpoints voor API-verzoeken die je doet bij deployments. Kyverno controleert bij deze checkpoints of API-verzoeken aan de afgesproken policies voldoen. Afhankelijk van of dit het geval is, keurt Kyverno het API-verzoek goed of juist af. Ook maakt Kyverno het afdwingen van beleid mogelijk, onder meer door het geautomatiseerd aanbrengen van mutaties in API-verzoeken.
Kyverno is ontwikkeld door Nirmata, een leverancier van een cloud-gebaseerd managementplatform voor Kubernetes. De tool is sinds november 2020 een Sandbox-project van de Cloud Native Computing Foundation (CNCF). Het project is in juli 2022 geaccepteerd als een incubating project.
Wat zijn de voordelen van Kyverno?
Een belangrijk voordeel is dat ontwikkelaars bij Kyverno een bekende werkwijze kunnen hanteren: zij leggen policies vast op de declaratieve wijze die we kennen van YAML. Kyverno wijkt hiermee af van andere policy engines. Denk hierbij aan het bekende Open Policy Agent, dat werkt met de programmeertaal Rego. In de praktijk betekent dit dat als je bekend bent met Kubernetes, je vrij eenvoudig met Kyverno aan de slag kunt.
Kyverno is geschikt voor ieder cluster, ongeacht omvang. Echter, hoe complexer je cluster is en hoe meer configuratie er vereist is, hoe meer profijt je van Kyverno kunt hebben. De policy engine zorgt voor dat configuraties altijd via de juiste standaarden zijn opgezet. Ook kun je via Kyverno zekerstellen dat resources die je creëert, aan best practices voldoen.
Een ander belangrijk voordeel is dat er al een breed scala aan policies beschikbaar is, waar je direct van gebruik kunt maken. Het zelf schrijven van policies is dus niet altijd nodig.
De toepassingen van Kyverno
Hoe kun je Kyverno toepassen? We zetten een aantal mogelijkheden uiteen:
Policies valideren
Het valideren van policies zorgt voor een uniform beleid bij het beheer van Kubernetes. Zo stel je zeker dat alle developers dezelfde standaarden hanteren. Kyverno controleert automatisch of een verzoek die je via Kubectl naar de Kube API-server stuurt voldoet aan het afgesproken beleid. Is dit het geval? Dan past Kyverno het verzoek toe. Is dit niet het geval? Dan wijst Kyverno het verzoek af.
Mutaties aanbrengen
Kyverno maakt het geautomatiseerd aanbrengen van wijzigingen in configuraties mogelijk. Zo kun je bijvoorbeeld een bepaalde trigger aangeven die een specifieke mutatie teweegbrengt. Denk hierbij aan het toevoegen van een specifieke tag of het aanpassen van een configuratie indien een image aan een bepaalde voorwaarde voldoet. Het kan echter ook gaan om aanpassingen in bestaande resources of namespaces.
Policies genereren voor nieuwe resources
Ook kun je met Kyverno automatisch policies creëren bij een specifieke gebeurtenis. Dit kan bijvoorbeeld de creatie van een nieuwe namespace zijn, waarop je automatisch een standaard netwerkbeleid wilt toepassen.
Video: introductie van Kyverno en policymanagement
In de onderstaande video van Rawkode Academy gaan oprichter en CEO van Nirmata Jim Bugwadia en Kyverno maintainer Shuting Zhao in op de mogelijkheden van Kyverno. In vijf kwartier geven zij een introductie over deze tool voor policymanagement.
Waarom zijn wij fan van Kyverno?
Kyverno zorgt ervoor dat iedereen het afgesproken beleid in de praktijk ook daadwerkelijk naleeft. Belangrijk voor ieder bedrijf, maar zeker binnen organisaties waar een flink aantal developers werkzaam zijn en je dus snel het overzicht verliest.
Iedere keer als je een verzoek doet binnen een Kubernetes-omgeving, gaat dit verzoek langs Kyverno. De tool checkt vervolgens op basis van de policies die je hebt opgegeven of dit verzoek wel of niet is toegestaan. Stel: je wilt een container als root draaien, terwijl je in je policy hebt opgenomen dat dit niet is toegestaan. In dit geval blokkeert Kyverno je verzoek. Denk echter ook aan limieten op resources die ingesteld moeten zijn bij ieder verzoek.
Een adequaat beleid kan veel duidelijkheid scheppen en problemen voorkomen. De mate waarin en consistentie waarmee je dit beleid naleeft speelt hierbij echter een cruciale rol. Met Kyverno kan je dit in belangrijke mate waarborgen, waarmee de tool wat ons betreft een absolute aanrader is!
Samenwerken aan je ambities met Kubernetes?
Steeds meer ontwikkelteams verkennen containerisatie en microservices. Het levert veel voordelen op maar kan ook complex zijn. Fully Managed Kubernetes van True helpt ontwikkelteams met meer efficiëntie en zorgvuldigheid te ontwikkelen.