Week 1 - GitOps

GitOps Definitie

GitOps is reconciling a desired state in Git with a runtime environment
Everett Toews 10-2-2020, deloitte.com

Week 1 Opdracht

Je krijgt de 1e opdracht via GitHub Classrooms. Je kiest/vindt hierbij zelf een partner en bouwt samen een klein software project. Het is meer "Hello world" dan echte functionaliteit, omdat de focus NIET op code licht, maar op DevOps technieken. Bij het begin van het project zet je het project uit GitHub over naar GitLab. Hiervoor maken jullie samen een tweede remote repository naar self hosted gitlab.

Het project bevat unit tests, en de tutorial laat dit je test first opzetten (TDD). Dit is de moderne standaard. Hierbij heeft je programma eigenlijk nog geen echt entrypoint. Want de tutorial geeft aan een classlib aan te maken in .NET. Laat dit voor nu zo, dit ga je volgende week refactoren/uitbreiden naar wel een entry point (main) en ook een .NET web api project, zoals de docent als het goed bespreekt (anders naar vragen!). En nog later kun je de webapplicatie continuous deployment of delivery toepassen.

Neem het project aan het begin samen door, verdeel taken en schrijf op het eind een self assessment op basis van CDMM en een reflectie zoals de werkwijze bij weekopdrachten vraagt.

Het is aan te raden enkele eigen unit tests toe te voegen, en evt. te experimenteren met 'parameterized tests'. In ieder geval geen code vol met unit testing anti patterns (zie video David Farley) i.v.m. met .

Plenair einde les

Lees het overzichtsartikel over gitops op gitops.tech. Schrijf interessant/onbekende termen op. Bekijk hierna ook naar lessen overzicht van deze minor.

  • Wat betekent de term reconcilliation?
  • Geef drie voorbeelden van toepassen van reconcilliation in een software project denk aan
    • a) een feature release
    • b) dependency management/update en
    • c) infrastructure as code
  • Wat is het verschil tussen declaratief en imperatief?
    • (kun je koppelen aan term 'reconcilliation')
  • Wat is het idee van pull-based vs push-based GitOps?
    • Is 1 van de 2 beter?
    • (Welke gebruikt InfoSupport?)
  • Welke onderdelen moeten we in de komende weken nog bekijken?
  • Welke onderdelen gaan we NIET behandelen (maar zijn wel kandidaat voor eigen onderzoek voor week 5)
  • Wat is een run time environment? Geef 3 voorbeelden
  • Hoe verloopt een applicatie wijziging binnen GitOps en wat is het verschil met andere (oudere) aanpakken?

Leerdoelen

  • Je kent Git, kunt het gebruiken op command line en GUI en weet wat je hierin opslaat en wat niet
  • Je kent de rol van branches in Git en erbuiten en enkele alternatieven voor feature branching die beter matchen met Continuous Integration
  • Je kent twee Git workflows om in een team software producten te bouwen
  • Je kunt een Git hook maken, en kent de mogelijkheden en beperkingen ervan
  • Je kunt commits doen in (Git) versiebeheer en kent de git basics zoals 4 area's, branches, .gitignore en omgang met Git's 'gedistribueerde karakter'
  • Je kunt markdown gebruiken en een UML diagram in tekst opstellen
  • Je kunt de definitie van GitOps en kunt de term uitleggen en hebt een onderbouwd oordeel of het een buzzword is of meer dan dat
  • Je kunt de termen reconcilliation en runtime environment uit de GitOps definitie uitleggen en van elk 3 voorbeelden geven
  • Je kent het verschil tussen code en software en de relatie met 'source control'
  • Je kent verschil tussen git en git platforms als GitHub of GitLab en kunt ermee werken