GitOps is een softwareontwikkelings- en beheerbenadering die Git gebruikt als de bron van waarheid voor implementatieconfiguraties. Het houdt in dat de gewenste toestand van een applicatie of infrastructuur in een Git-repository wordt bewaard en Git-gebaseerde werkstromen worden gebruikt om wijzigingen te beheren en te implementeren. Twee populaire open-source tools die organisaties helpen GitOps te implementeren voor het beheren van hun Kubernetes-toepassingen zijn Flux en Argo CD. In dit artikel zullen we deze tools nader bekijken, hun voordelen en nadelen, en hoe ze in te stellen. Lees DZone’s gerelateerde tutorial over hoe je CI/CD-pijplijnen met Jenkins en Kubernetes kunt automatiseren.
Algemene Toepassingsgebieden voor Flux en Argo CD
Flux
- Doorlopende levering: Flux kan worden gebruikt om de implementatiepijplijn te automatiseren en ervoor te zorgen dat wijzigingen automatisch worden geïmplementeerd zodra ze naar de Git-repository worden gepusht.
- Configuratiebeheer: Flux stelt je in staat om de configuratie van je applicatie als code op te slaan en te beheren, waardoor het eenvoudiger wordt om versiebeheer en wijzigingen bij te houden.
- Onveranderbare infrastructuur: Flux helpt bij het afdwingen van een onveranderbare infrastructuurbenadering—waarbij veranderingen alleen via het Git-repository worden aangebracht en niet via handmatige interventie op het cluster.
- Blauw-groene implementaties: Flux ondersteunt blauw-groene implementaties waarbij een nieuwe versie van een toepassing naast de bestaande versie wordt geïmplementeerd, en het verkeer geleidelijk wordt overgeschakeld naar de nieuwe versie.
Argo CD
- Doorlopende implementatie: Argo CD kan worden gebruikt om het implementatieproces te automatiseren, waardoor toepassingen altijd up-to-date zijn met de nieuwste wijzigingen van het Git-repository.
- Toepassingspromotie: Argo CD ondersteunt toepassingspromotie—waarbij toepassingen kunnen worden gepromoveerd van de ene omgeving naar de andere. Bijvoorbeeld, van ontwikkeling naar productie.
- Multiclusterbeheer: Argo CD kan worden gebruikt om toepassingen over meerdere clusters te beheren, waardoor de gewenste toestand van de toepassingen consistent is over alle clusters.
- Rollbackbeheer: Argo CD biedt rollbackmogelijkheden, waardoor het gemakkelijker wordt om veranderingen terug te draaien bij falen.
De keuze tussen de twee tools hangt af van de specifieke vereisten van de organisatie en het toepassingsgebied, maar beide tools bieden een GitOps-benadering om het implementatieproces te vereenvoudigen en het risico op handmatige fouten te verminderen. Ze hebben allebei hun eigen voor- en nadelen, en in dit artikel bekijken we wat ze zijn en hoe ze zijn op te zetten.
Wat Is Flux?
Flux is een GitOps-tool dat de implementatie van toepassingen op Kubernetes automatisert. Het werkt door voortdurend de status van een Git-opslagplaats te controleren en eventuele wijzigingen toe te passen op een cluster. Flux integreert met verschillende Git-providers zoals GitHub, GitLab, en Bitbucket. Wanneer wijzigingen worden aangebracht in de opslagplaats, detecteert Flux deze automatisch en werkt het cluster dienovereenkomstig bij. Gerelateerde Tutorial: Hoe te auto deploy spring boot apps using GitLab CI/CD.
Voordelen van Flux
- Geautomatiseerde implementaties: Flux automatisert het implementatieproces, waardoor handmatige fouten worden verminderd en ontwikkelaars worden vrijgemaakt om zich op andere taken te richten.
- Git-gebaseerd werkproces: Flux maakt gebruik van Git als de bron van waarheid, wat het gemakkelijker maakt om wijzigingen te volgen en terug te draaien.
- Declaratieve configuratie: Flux gebruikt Kubernetes manifesten om de gewenste status van een cluster te definiëren, waardoor het gemakkelijker wordt om wijzigingen te beheren en te volgen.
Nadelen van Flux
- Beperkte aanpassing: Flux ondersteunt slechts een beperkt aantal aanpassingen, wat misschien niet geschikt is voor alle gebruiksgevallen.
- Steile leercurve: Flux heeft een steile leercurve voor nieuwe gebruikers en vereist een diepgaande kennis van Kubernetes en Git.
Hoe Flux In Te Richten
Vereisten
- A running Kubernetes cluster.
- Helm geïnstalleerd op uw lokale machine.
- A Git repository for your application’s source code and Kubernetes manifests.
- De repository-URL en een SSH-sleutel voor de Git-repository.
Stap 1: Voeg de Flux Helm Repository Toe
De eerste stap is om de Flux Helm repository toe te voegen aan uw lokale machine. Voer de volgende opdracht uit om de repository toe te voegen:
helm repo add fluxcd https://charts.fluxcd.io
Stap 2: Installeer Flux
Nu de Flux Helm repository is toegevoegd, kunt u Flux op het cluster installeren. Voer de volgende opdracht uit om Flux te installeren:
helm upgrade -i flux fluxcd/flux \
--set [email protected]:/.git \
--set git.path= \
--set git.pollInterval=1m \
--set git.ssh.secretName=flux-git-ssh
In de bovenstaande opdracht vervangt u de plaatsaanduidingen door uw eigen Git-repositoryinformatie. De git.url
parameter is de URL van de Git-repository, de git.path
parameter is het pad naar de map die de Kubernetes manifesten bevat, en de git.ssh.secretName
parameter is de naam van de SSH-geheim die de SSH-sleutel voor de repository bevat.
Stap 3: Bevestig de Installatie
Na het uitvoeren van de bovenstaande opdracht, kunt u de installatie verifiëren door de status van de Flux pods te controleren. Voer de volgende opdracht uit om de pods te bekijken:
kubectl get pods -n <flux-namespace>
Als de pods draaien, is Flux succesvol geïnstalleerd.
Stap 4: Verbind Flux met Je Git Repository
De laatste stap is om Flux te verbinden met je Git repository. Voer de volgende opdracht uit om een SSH-sleutel te genereren en een geheim te maken:
ssh-keygen -t rsa -b 4096 -f id_rsa
kubectl create secret generic flux-git-ssh \
--from-file=id_rsa=./id_rsa --namespace=
In de bovenstaande opdracht, vervang de <flux-namespace>
placeholder door de namespace waar Flux is geïnstalleerd.
Voeg nu de gegenereerde publieke sleutel toe als een implementatiesleutel in je Git repository.
Je hebt Flux met succes ingesteld met behulp van Helm. Wanneer er wijzigingen worden aangebracht in de Git repository, zal Flux deze detecteren en de cluster dienovereenkomstig bijwerken.
Concluderend is het instellen van Flux met behulp van Helm een vrij eenvoudig proces. Door Git als bron van waarheid te gebruiken en continu de status van de cluster te monitoren, helpt Flux het implementatieproces te vereenvoudigen en het risico op handmatige fouten te verminderen.
Wat Is Argo CD?
Argo CD is een open-source GitOps tool die de implementatie van applicaties op Kubernetes automatiseren. Het stelt ontwikkelaars in staat om hun applicaties declaratief te beheren en houdt de gewenste toestand van de applicaties in overeenstemming met de actuele toestand. Argo CD integreert met Git-repositories en controleert deze continu op wijzigingen. Zodra wijzigingen worden gedetecteerd, past Argo CD deze toe op het cluster, waardoor de applicatie altijd up-to-date blijft. Met Argo CD kunnen organisaties hun implementatieproces automatiseren, het risico op handmatige fouten verminderen en profiteren van de versiebeheercapaciteiten van Git. Argo CD biedt een grafische gebruikersinterface en een command-line interface, waardoor het gemakkelijk te gebruiken en te beheren is voor applicaties op schaal.
Voordelen van Argo CD
- Geavanceerde implementatiefuncties: Argo CD biedt geavanceerde implementatiefuncties, zoals rollende updates en canary-implementaties, waardoor complexe implementaties eenvoudiger te beheren zijn.
- Gebruiksvriendelijke interface: Argo CD biedt een gebruiksvriendelijke interface die het eenvoudiger maakt om implementaties te beheren, met name voor niet-technische gebruikers.
- Aanpasbaar: Argo CD biedt meer mogelijkheden voor aanpassing, waardoor het gemakkelijker is om het hulpmiddel aan specifieke gebruiksgevallen aan te passen.
Nadelen van Argo CD
- Steile leercurve: Argo CD heeft een steile leercurve voor nieuwe gebruikers en vereist een diepgaande kennis van Kubernetes en Git.
- Complexiteit: Argo CD heeft een complexere architectuur dan Flux, wat het beheren en oplossen van problemen bemoeilijkt.
Hoe Argo CD In Te Richten
Argo CD kan worden geïnstalleerd op een Kubernetes-cluster met behulp van Helm, een pakketbeheerder voor Kubernetes. In deze sectie gaan we de stappen doorlopen om Argo CD in te stellen met behulp van Helm.
Vereisten
- A running Kubernetes cluster.
- Helm geïnstalleerd op uw lokale machine.
- A Git repository for your application’s source code and Kubernetes manifests.
Stap 1: Voeg de Argo CD Helm-opslagplaats toe
De eerste stap is om de Argo CD Helm-opslagplaats toe te voegen aan uw lokale machine. Voer de volgende opdracht uit om de opslagplaats toe te voegen:
helm repo add argo https://argoproj.github.io/argo-cd
Stap 2: Installeer Argo CD
Nu de Argo CD Helm-opslagplaats is toegevoegd, kunt u Argo CD op het cluster installeren. Voer de volgende opdracht uit om Argo CD te installeren:
helm upgrade -i argocd argo/argo-cd --set server.route.enabled=true
Stap 3: Bevestig de Installatie
Na het uitvoeren van de bovenstaande opdracht kunt u de installatie bevestigen door de status van de Argo CD-pods te controleren. Voer de volgende opdracht uit om de pods te bekijken:
kubectl get pods -n argocd
Als de pods draaien, is Argo CD succesvol geïnstalleerd.
Stap 4: Verbind Argo CD met Uw Git-opslagplaats
De laatste stap is om Argo CD te verbinden met uw Git-opslagplaats. Argo CD biedt een grafische gebruikersinterface die u kunt gebruiken om applicaties te maken en te verbinden met uw Git-opslagplaats.
Om toegang te krijgen tot de Argo CD-interface, voer de volgende opdracht uit om de URL te krijgen:
kubectl get routes -n argocd
Gebruik de URL in een webbrowser om toegang te krijgen tot de Argo CD-interface.
Zodra je in de interface bent, kun je een nieuwe applicatie maken door de Git repository URL en het pad naar de Kubernetes manifests op te geven. Argo CD houdt continu de repository in de gaten op wijzigingen en past deze toe op de cluster.
Je hebt nu Argo CD met succes ingesteld met behulp van Helm.
Conclusie
Kubernetes en DevOps zijn een belangrijk onderdeel van de software ontwikkelcyclus, en GitOps is een waardevolle aanpak voor het automatiseren van de implementatie en het beheer van applicaties op Kubernetes. Flux en Argo CD zijn twee populaire GitOps tools die een eenvoudige en efficiënte manier bieden om het implementatieproces te automatiseren, een onveranderlijke infrastructuur af te dwingen en applicaties op een consistente en voorspelbare manier te beheren.
Flux richt zich op het automatiseren van de implementatiepijplijn en het bieden van configuratiebeheer als code, terwijl Argo CD een meer complete GitOps oplossing biedt, inclusief functies zoals multi-clusterbeheer, applicatiepromotie en rollbackbeheer. Beide tools hebben hun eigen sterke en zwakke punten, en de keuze tussen de twee zal afhangen van de specifieke vereisten van de organisatie en de applicatie.
Ongeacht het gekozen hulpmiddel biedt GitOps een waardevolle aanpak om het implementatieproces te vereenvoudigen en het risico op handmatige fouten te verminderen. Door de gewenste toestand van de toepassingen in overeenstemming te brengen met de Git-repository, zorgt GitOps ervoor dat wijzigingen op een consistente en voorspelbare manier worden aangebracht, waardoor een betrouwbaarder en efficiënter implementatieproces ontstaat.