Argo CD

Wat is Argo CD? En waarom onze engineers er fan van zijn?

Het landschap van cloud-native technologieën omvat inmiddels meer dan negenhonderd aanbieders. In deze blogpost zoomen we in op Argo CD, een GitOps-tool voor Continuous Integration, Continuous Delivery en Continuous Deployment (CI/CD). In deze blogpost krijg je antwoord op de belangrijkste vragen. Wat is Argo CD? Waarom zou je deze tool gaan gebruiken? Welke gebruiksscenario’s ondersteunt Argo CD? Daarnaast beschrijven we waarom wij Argo CD standaard aanbieden bij Managed Kubernetes.

Wat is Argo CD?

Argo CD is onderdeel van het Argo Project van Intuit. Het is een GitOps-tool voor Continuous Delivery voor Kubernetes (k8s). In de basis van Argo CD vind je de zogenoemde application controller, een onderdeel dat applicaties monitort en de livestatus vergelijkt met de gewenste doelstatus die is gedefinieerd in de Git-repository. De tool ondersteunt tal van manieren om je applicatie te definiëren, waaronder:

De architectuur van Argo CD ziet er als volgt uit:

"Wat

 

Argo CD volgt het GitOps-patroon. Hierbij wordt een Git-repository als ‘source of truth’ gezien voor het definiëren van de gewenste applicatiestatus. Argo CD helpt je bij het implementeren van de verschillende statussen in de door jou gespecificeerde doelomgeving. De term ‘manifest’ wordt hierbij vaak genoemd. Een manifest specificeert de gewenste status van een object. Dit object zal Kubernetes behouden wanneer je het manifest toepast. Belangrijk om te weten is dat elk configuratiebestand meerdere manifesten kan bevatten.

Actief de live status van je applicatie monitoren

Argo CD wordt geïmplementeerd als een kubernetes-controller die continu actieve applicaties monitort en de huidige live status vergelijkt met de gewenste doelstatus. Als de live status van een geïmplementeerde applicatie afwijkt van de doelstatus, dan wordt deze beschouwd als “OutOfSync”. Dit betekent dat het cluster momenteel niet de master branch van de repository weerspiegelt.

Argo CD Architecture

Argo CD rapporteert, visualiseert de verschillen en biedt de faciliteiten om de live status automatisch of handmatig terug te synchroniseren naar de gewenste doelstatus. Alle wijzigingen die in de gewenste doelstatus in de Git-opslagplaats worden aangebracht, kunnen automatisch worden toegepast en weergegeven in de opgegeven doelomgevingen.

Waarom zou je Argo CD gaan gebruiken?

Intuit wilde met Argo CD tegemoetkomen aan de behoefte naar een snelle en betrouwbare Continuous Delivery service voor het implementeren van honderden microservices tegelijkertijd. Een belangrijk voordeel is dat je deze GitOps-tool voor meerdere doeleinden kunt gebruiken.

Argo CD - Overview

De belangrijkste redenen voor de ontwikkeling van Argo CD waren:

  • De configuratie van applicaties en hun implementatieomgevingen moet declaratief zijn en beschikken over versiebeheer.
  • Applicatie-implementatie en levenscyclusbeheer moeten eenvoudig, geautomatiseerd en controleerbaar zijn.
  • De implementatie van applicatie moet snel, betrouwbaar en idempotent zijn.
  • Elke afwijking van een versie gestuurde configuratie moet onmiddellijk worden gedetecteerd en verholpen kunnen worden.
  • Rollbacks moeten net zo eenvoudig zijn als het implementeren van een andere configuratie.
  • Op een overzichtelijke en gebruiksvriendelijke manier inzicht kunnen krijgen in je k8s-projecten.

Video: Argo CD demo

In een demo van Jesse Suen wordt Argo CD in een kleine 41 minuten uitgelegd:

Welke gebruiksscenario’s ondersteunt Argo CD?

Om zijn taken goed uit te kunnen voeren, moet de application controller een aantal acties ondernemen: de gewenste resource manifesten ophalen uit Git, de overeenkomende live resources laden uit het daadwerkelijke Kubernetes-clusters, de twee vergelijken en de corresponderende Kubernetes Custom Resources (CRD). Deze CRD toont de gewenste status voor een bepaald Argo CD-cluster beschrijft en de configuratie mogelijk maakt van de componenten waaruit een Argo CD-cluster bestaat.

Argo CD ondersteunt de volgende gebruikersscenario’s:

Use case #1 – Geautomatiseerde deployment

De application controller pusht de gewenste applicatiestatus automatisch naar het cluser. Dit kan een reactie zijn op een Git-commit, een trigger van een CI-pipeline of een handmatig gebruikersverzoek.

Argo CD - syncing

Use case #2 – Applicatie monitoring

Met Argo CD kunnen ontwikkelaars snel zien of de applicatiestatus synchroon loopt met de gewenste status. Argo CD is te gebruiken via een command line interface (CLI). Dit helpt je bij het monitoren van je applicatie en het snel kunnen vinden van verschillen tussen de gewenste en de huidige live status.

Argo CD - Network overview

Use case #3 – Performance monitoring

In de gebruikersinterface van Argo Cd kun je de volledige hiërarchie zien van al je toepassingsbronnen zien. Dit stopt niet bij alleen de bronnen op het hoogste niveau binnen je Git-opslagplaats. Ontwikkelaars kunnen bijvoorbeeld ReplicaSets en Pods zien die zijn geproduceerd door de implementatie die is gedefinieerd in Git. Daarnaast kun je snel Pod-logboeken en de bijbehorende Kubernetes gebeurtenissen zien. Dit maakt Argo CD een zeer krachtig multi-cluster dashboard.

Argo CD - Health overview

Managed Argo CD bij True

In dit artikel hebben we beschreven wat Argo CD is en hoe je dit kunt inzetten voor het monitoren van je Kubernetes-ecosysteem.

Ook onze eigen Kubernetes-specialisten zijn fan van Argo CD en dit is een belangrijk reden waarom wij dit standaard hebben opgenomen in onze Managed Kubernetes propositie. Met ArgoCD bieden we je de mogelijkheid om applicatie deployments te beheren via git, beter bekend als de GitOps methodiek. De gebruiksvriendelijke UI biedt een status overzicht van alle deployments en stelt developers in staat om snel en succesvol applicaties uit te rollen, terug te rollen, en aan te passen, zonder dat hiervoor een diepgaande kennis van K8S tooling voor nodig is.

Wil jij aan de slag met Argo CD? Of ben je benieuwd of Argo CD bij jouw use case past? Onze experts denken graag met je mee. Neem contact op met ons voor meer informatie!

Cloud - 15.03.2021

Cloud-native technologie is iets waar geen enkele lead developer nog omheen kan. Iedere ontwikkelaar kijkt dan ook met een schuin oog naar wat de concurrentie op het gebied van containers, gedistribueerde applicaties en microservices doet, want achterblijven is geen optie. Hoe ziet een optimaal ecosysteem er echter uit? En hoe zorg je voor harmonie binnen […]

Cloud-native - 16.09.2021

Het ontwikkelen van een strategie voor een migratie naar de cloud vraagt om een zorgvuldige planning en bestaat uit meerdere stappen. Is jouw app klaar om cloud-native te gaan? Met een aantal tips helpen we je op weg. 1. Een gedegen voorbereiding Een gedegen voorbereiding en planning is cruciaal voor een succesvolle migratie naar de […]

Cloud - 15.09.2021

Dit artikel verscheen eerder op emerce.nl. Dankzij cloud-native technologie kun je als e-commercebedrijf beter inspelen op de toenemende wensen van consumenten, zonder dat dit ten koste gaat van de prestaties. In deze blogpost gaan we in op de toegevoegde waarde van cloud-native technologie binnen e-commerce en hoe je aan de slag kunt! De e-commercemarkt ontwikkelt […]

Blijf op de hoogte en schrijf u in voor onze nieuwsbrief
Schrijf u in voor de nieuwsbrief