

IT staat nooit stil en daarom is ACA Group voortdurend op zoek naar innovatieve oplossingen en tools. Een van die tools is Flux. In deze blogpost delen onze experts hun ervaringen en bevindingen.
Ten eerste, wat is Flux? Flux is cloud-native tooling, ontworpen om gebruik te maken van de flexibiliteit, schaalbaarheid en veerkracht van de cloud. Het kan draaien op elke Kubernetes-gebaseerde oplossing in de public/private cloud en op een lokaal Kubernetes-cluster. Flux is een gecontaineriseerde tool die maar één doel dient: het implementeren van Continuous Delivery. Om dit te bereiken, houdt Flux het Kubernetes-cluster waarop het wordt ingezet in sync met een configuratiebron. Een typische bron zou een GIT repository zijn. De configuratiebron wordt gemonitord door Flux (pull-aanpak); en als er een wijziging wordt gedetecteerd, wordt de wijziging uitgerold naar het cluster.

De wijziging wordt ingezet via een afstemmingsmethode. Dit betekent dat Flux niet alle bronnen vernietigt en aanmaakt, maar alleen de wijzigingen aanbrengt die nodig zijn om overeen te komen met de toestand zoals beschreven in de GIT-repository. U hebt bijvoorbeeld een Deployment.yaml en Service.yaml, maar u wilt alleen de eerste wijzigen om een nieuwe versie van een containerimage te gebruiken. Dan wordt alleen de Deployment.yaml vervangen binnen het cluster; zonder de service te veranderen. Samengevat wordt het proces van het synchroniseren van de inhoud in GIT GitOps genoemd.
Wat is GitOps?
In een GitOps aanpak is de toestand van het cluster volledig beschreven in GIT repositories; het bevat alles wat nodig is om een applicatie uit te rollen (Deployment.yaml, Service.yaml, ConfigMap.yaml,...). Om het cluster met de staat te matchen, hebben we een geautomatiseerde oplossing nodig. In dit geval zal Flux een reconciliatie uitvoeren als er iets veranderd is in GIT.
Het gebruik van GitOps wordt beschouwd als een meer ontwikkelaargerichte ervaring. Het is gebaseerd op tools en principes die ontwikkelaars al kennen, dus extra kennis is niet meer nodig.

De voordelen van GitOps
Het gebruik van de door Flux geïmplementeerde GitOps-aanpak heeft veel voordelen:
- de volledige Kubernetes-clusterstatus is zichtbaar in GIT, waardoor deze begrijpelijker is voor ontwikkelaars
- ontwikkelteams kunnen onafhankelijker werken omdat er geen complexe deploy pipelines nodig zijn
- het is veel eenvoudiger om extra applicaties op te zetten die kunnen worden ingezet op het Kubernetes-cluster
- het gebruik van pull request flows vergemakkelijkt het monitoren van wijzigingen in applicaties
- branching- of versiebeheerstrategieën maken het eenvoudig om verschillende omgevingen (test, acceptatie, productie) synchroon te houden.
- de aanpak kan uniform zijn voor alle soorten Kubernetes-clusters (EKS, Rancher, OpenShift of een lokale opstelling)
- flux is lichtgewicht en kan eenvoudig op elk Kubernetes-cluster worden geïnstalleerd, omdat de capaciteit meestal al aanwezig is
- flux heeft goede documentatie en een actieve community
Omdat de Flux-bronnen binnen ons cluster draaien, is het niet nodig om andere ontwikkeltools te gebruiken (zoals Jenkins of Bamboo). Dit heeft ook enkele voordelen
- minder beveiligingsproblemen omdat we een pull-aanpak gebruiken en geen referenties hoeven op te slaan in externe tools
- geen onverwachte downtime veroorzaakt door externe implementatietools
- geen onverwachte downtime door externe implementatietools
- minder overhead omdat er geen deployment tools onderhouden hoeven te worden.
Hoe applicaties beheren met Flux
Stel dat we een GIT repo hebben met de naam flux-app die de Deployment.yaml bevat die we willen implementeren. Hoe kunnen we Flux opdracht geven om deze Deployment aan te maken in het Kubernetes-cluster?

Voordat we onze applicaties kunnen deployen, moeten we eerst Flux installeren. Flux gebruikt ook een GitOps-aanpak om zijn eigen installatie te beheren:
- maak een GIT repository aan die de bronnen voor de Flux installatie zal bevatten
- download de Flux CLI
- voer het bootstrap commando uit
flux bootstrap git \ --url=ssh://git@bitbucket.org/sample-repo/flux-installation.git \ --private-key-file=/Users/yourname/.ssh/flux \ --branch=main \ --path=./clusters/rancher-desktop-local
De YAML-bestanden worden opgeslagen in de eerder genoemde GIT-repository en worden toegepast op je cluster. De belangrijkste resources die zijn aangemaakt zijn zichtbaar in de afbeelding hieronder.

De Flux-installatie heeft 4 belangrijke componenten toegevoegd aan ons Kubernetes-cluster:
- source-controller pod
- kustomize-controller pod
- GitRepository CRD (Custom Resource Definition)
- Kustomization CRD (Custom Resource Definition)
⚠️ Wat zijn Custom Resource Definitions?
Kubernetes levert standaard een specifieke set API resources. Dit zijn de bekende resources zoals Pods, ConfigMaps, Deployments, Secrets. Een CR, Custom Resource, is een uitbreiding op de Kubernetes API. Het biedt een manier om nieuwe resourcetypes toe te voegen naast deze bestaande resources. Maar net als bij bekende resources hebben we een specificatie nodig over hoe we zo'n resource kunnen maken.
De CustomResourceDefinition (CRD) is in feite een blauwdruk van hoe de CustomResource (CR) eruit moet zien. Bovendien hebben we logica nodig over wat er moet gebeuren als zo'n resource wordt aangemaakt. Deze logica wordt meestal toegevoegd aan de applicatiecontainer, die de CRD controleert op wijzigingen en de vereiste acties onderneemt wanneer deze zich voordoen.
Klik hier voor meer informatie over dit onderwerp in de officiële Kubernetes documentatie.
In het geval van Flux heeft de source-controller pod de logica om actie te ondernemen als een GitRepository CR wordt aangemaakt/gewijzigd. Op dezelfde manier heeft de kustomize controller pod de logica om actie te ondernemen wanneer een Kustiomization CR wordt aangemaakt/gewijzigd. Flux levert de CustomResourceDefintion (blauwdruk) en de logica (die in de containers draait) om iets met een Custom Resource te doen. De Custom Resource wordt in de volgende stappen toegevoegd aan het Kubernetes-cluster.
GitRepository aangepaste bronnen toevoegen
Nu we de GitRepository CustomResourceDefinition en de source controller hebben, kunnen we GitRepository resources gaan toevoegen. Deze resource bevat de logica om verbinding te maken met de GIT repository waar de YAML-bestanden van je applicatie zijn opgeslagen.
apiVersion: source.toolkit.fluxcd.io/v1beta2soort: GitRepositorymetadata: naam: flux-app namespace: flux-appspec: gitImplementation: go-git interval: 1m0s ref: branch: main secretRef: naam: bitbucket-cloud-credentials timeout: 60s url: https://bitbucket.org/sample-repo/application
We maken de GitRepository bron aan.
kubectl aanmaken -fGitRepository.yaml
NAME URL AGE READY STATUS flux-app https://bitbucket.org/sample-repo/application 21m True opgeslagen artefact voor revisie 'main/9ad65085cfe584f438f71e361c4ad20ac9d04f55'.
Merk op dat de revisie verwijst naar branch/commit-id
Op dit punt wordt de GIT repository bekeken, maar er wordt niets uitgerold naar ons cluster. Om de YAML-bestanden uit te rollen die zijn opgeslagen in de flux app GIT repository, moeten we een Kustomization resource aanmaken.
⚠️ U moet een geheim voor authenticatie toevoegen aan de Bitbucket-repository. Omdat dit op meerdere manieren kan worden gedaan, is dit niet aan dit artikel toegevoegd. Als het geheim is aangemaakt, moet je ernaar verwijzen in je GitRepository yaml bestand.
secretRef: naam: bitbucket-cloud-credentials
Meer informatie kun je hier vinden!
Kustomization aangepaste bronnen toevoegen
De Kustomization resource zal configureren welke GitRepository resource op veranderingen moet letten. Zodra de GitRepository bron naar een nieuwe revisie wijst, zal de kustomize-controller de huidige versie van de artefacten naar het cluster deployen.
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 soort: Kustomization metadata: naam: flux-app namespace: flux-app spec: force: true interval: 1m0s path: ./ prune: false sourceRef: soort: GitRepository naam: flux-app
We maken de Kustomization bron aan.
kubectl create -fKustomization.yaml
Als we de status van de aangemaakte Kustomization resource opvragen, zien we dat deze overeenkomt met de laatste revisie.
kubectl -n flux-appget kustomization flux-app
NAME AGE READY STATUS flux-app 37m True Toegepaste revisie: main/9ad65085cfe584f438f71e361c4ad20ac9d04f55
Bij het controleren van BitBucket zien we dat er een Deployment bestand in onze GIT repository staat - de commit komt overeen met degene die door Kustomization is genoemd.

Deze Deployment is toegepast op ons Kubernetes-cluster.
kubectl -n flux-app get pod
NAAM GEREED STATUS RESTARTS LEEFTIJD flux-app-7ddd9dd674-xp24s 1/1 Loopt 0 5m49s
Dingen samenvoegen

Samengevat vat het bovenstaande ontwerp de flow samen:
- een ontwikkelaar maakt een pull request aan
- het pull-verzoek wordt samengevoegd tot een tak die bewaakt wordt door flux
- de broncontroller bewaakt de branch; het zal een nieuwe commit id opmerken en de revisie van de GitRepository bron veranderen in 'branch/commit-id'.
- de aanpassingscontroller houdt de GitRepository bron in de gaten
- als een nieuwe versie wordt opgemerkt, zal de nieuwe versie van de bestanden worden toegepast, de revisie van de Kustomization bron zal worden veranderd in 'branch/commit-id'.
Conclusie
In deze blogpost hebben we uitgelegd hoe Flux werkt en hoe eenvoudig het is om Flux te gebruiken voor continuous delivery. Binnen ACA zijn we momenteel bezig met de migratie van complexe Jenkins deploy pijplijnen naar een eenvoudig te begrijpen GitOps aanpak met behulp van Flux. We geloven dat deze GitOps aanpak in de nabije toekomst de standaard manier zal worden om workloads uit te rollen.
Meer weten over Flux?
What others have also read


CloudBrew is altijd een hoogtepunt op onze kalender geweest, maar de editie van 2025 voelde anders. Misschien lag het aan de timing. Slechts een maand eerder, in november 2025, opende de Azure Belgium Central-regio eindelijk haar deuren. ACA opereert al altijd vanuit het hart van Europa, dus het live gaan van deze grote nationale mijlpaal net voor de conferentie zorgde voor een extra dosis enthousiasme.
Lees verder

Een betere uptime, lagere kosten en vendor lock-in vermijden. Dat zijn drie van de redenen waarom onze klanten kiezen voor een multicloud-strategie. Onze Cloud project manager Roel Van Steenberghe legt uit wat zo’n strategie precies inhoudt en wat de troeven zijn van Google Cloud Platform (GCP).
Lees verder

In de complexe wereld van moderne softwareontwikkeling worden bedrijven geconfronteerd met de uitdaging om verschillende applicaties die door verschillende teams worden ontwikkeld en beheerd, naadloos te integreren. De Service Mesh is van onschatbare waarde bij het overwinnen van deze uitdaging. In dit blogartikel verdiepen we ons in Istio Service Mesh en onderzoeken we waarom investeren in een Service Mesh zoals Istio een slimme zet is." Wat is Service Mesh? Een Service Mesh is een softwarelaag die verantwoordelijk is voor alle communicatie tussen applicaties, in deze context services genoemd. Het introduceert nieuwe functionaliteiten om de interactie tussen services te beheren, zoals monitoring, logging, tracing en verkeerscontrole. Een service mesh werkt onafhankelijk van de code van elke individuele service, waardoor het over netwerkgrenzen heen kan werken en kan samenwerken met verschillende beheersystemen. Dankzij een service mesh kunnen ontwikkelaars zich richten op het bouwen van toepassingsfuncties zonder zich zorgen te maken over de complexiteit van de onderliggende communicatie-infrastructuur. Istio Service Mesh in de praktijk Denk aan het beheren van een groot cluster waarop meerdere applicaties draaien die ontwikkeld en onderhouden worden door verschillende teams, elk met verschillende afhankelijkheden zoals ElasticSearch of Kafka. Na verloop van tijd resulteert dit in een complex ecosysteem van applicaties en containers, overzien door verschillende teams. De omgeving wordt zo ingewikkeld dat het voor beheerders steeds moeilijker wordt om het overzicht te bewaren. Dit leidt tot een reeks pertinente vragen: Hoe ziet de architectuur eruit? Welke applicaties interageren met elkaar? Hoe wordt het verkeer beheerd? Bovendien zijn er specifieke uitdagingen die voor elke afzonderlijke applicatie moeten worden aangepakt: Het afhandelen van aanmeldingsprocessen Implementeren van robuuste beveiligingsmaatregelen Netwerkverkeer beheren dat naar de applicatie wordt geleid ... Een Service Mesh, zoals Istio, biedt een oplossing voor deze uitdagingen. Istio fungeert als een proxy tussen de verschillende applicaties (services) in het cluster, waarbij elk verzoek door een component van Istio gaat. Hoe werkt Istio Service Mesh? Istio introduceert een sidecar proxy voor elke service in het microservices ecosysteem. Deze sidecar proxy beheert al het inkomende en uitgaande verkeer voor de dienst. Daarnaast voegt Istio componenten toe die het inkomende en uitgaande verkeer van het cluster afhandelen. Istio's control plane maakt het mogelijk om beleidsregels te definiëren voor verkeersbeheer, beveiliging en monitoring, die vervolgens worden toegepast op de toegevoegde componenten. Voor een beter begrip van de functionaliteit van Istio Service Mesh, zie ons blogartikel "Istio Service Mesh installeren: A Comprehensive Step-by-Step Guide" , een gedetailleerde, stapsgewijze uitleg over de installatie en het gebruik van Istio. Waarom Istio Service Mesh? Verkeersbeheer: Istio maakt gedetailleerd verkeersbeheer mogelijk, waardoor ontwikkelaars eenvoudig verkeer tussen verschillende versies van hun services kunnen routeren, verdelen en controleren. Beveiliging: Istio biedt een robuuste beveiligingslaag met functies zoals verkeersversleuteling met behulp van eigen certificaten, Role-Based Access Control (RBAC) en mogelijkheden voor het implementeren van authenticatie- en autorisatiebeleid. Waarneembaarheid: Door middel van ingebouwde instrumentatie biedt Istio diepgaande observeerbaarheid met tools voor monitoring, logging en gedistribueerde tracering. Hierdoor kunnen IT-teams de prestaties van services analyseren en snel problemen opsporen. Vereenvoudigde communicatie: Istio neemt de complexiteit van servicecommunicatie weg van applicatieontwikkelaars, zodat zij zich kunnen richten op het bouwen van applicatiefuncties. Is Istio geschikt voor uw opstelling? Hoewel de voordelen duidelijk zijn, is het essentieel om te overwegen of de extra complexiteit van Istio past bij jouw specifieke opstelling. Ten eerste is er een sidecar container nodig voor elke ingezette service, wat kan leiden tot ongewenste geheugen- en CPU overhead. Daarnaast kan het zijn dat je team niet beschikt over de specialistische kennis die nodig is voor Istio. Als je overweegt om Istio Service Mesh te gaan gebruiken, vraag dan begeleiding aan specialisten met expertise. Vraag onze experts gerust om hulp. Meer informatie over Istio Istio Service Mesh is een technologische game-changer voor IT-professionals die streven naar geavanceerde controle, beveiliging en observeerbaarheid in hun microservices-architectuur. Istio vereenvoudigt en beveiligt de communicatie tussen services, waardoor IT-teams zich kunnen richten op het bouwen van betrouwbare en schaalbare applicaties. Snel antwoord nodig op al uw vragen over Istio Service Mesh? Neem contact op met onze experts
Lees verderWant to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!

Want to dive deeper into this topic?
Get in touch with our experts today. They are happy to help!


