docs: refresh workshop talks and add intro slides
This commit is contained in:
parent
5177726cfa
commit
6683d13f0a
4 changed files with 317 additions and 122 deletions
|
|
@ -1,150 +1,90 @@
|
||||||
# Final Talk — GitOps in de praktijk
|
# Final Talk - GitOps in de praktijk
|
||||||
|
|
||||||
---
|
## 1. Wat we nu echt hebben staan
|
||||||
|
|
||||||
## 1. Wat we gebouwd hebben
|
Vandaag hebben we niet "een demo" gebouwd, maar een complete GitOps-loop:
|
||||||
|
|
||||||
### Architectuurdiagram
|
1. Git bevat de gewenste state.
|
||||||
|
2. ArgoCD reconcilet de cluster daarnaar.
|
||||||
|
3. Tekton wijzigt Git (image-tag bump), en ArgoCD pakt dat weer op.
|
||||||
|
4. Alles is reproduceerbaar op een nieuwe VM.
|
||||||
|
|
||||||
|
### Snelle architectuur
|
||||||
|
|
||||||
```
|
```
|
||||||
┌─────────────────────────────────────────────────────────┐
|
Laptop/browser
|
||||||
│ Jouw laptop │
|
-> argocd.192.168.56.200.nip.io
|
||||||
│ │
|
-> podinfo.192.168.56.200.nip.io
|
||||||
│ Browser ──────────────────────────────────────────► │
|
-> grafana.192.168.56.200.nip.io
|
||||||
│ podinfo.192.168.56.200.nip.io │
|
|
||||||
│ argocd.192.168.56.200.nip.io │
|
VirtualBox host-only netwerk
|
||||||
│ grafana.192.168.56.200.nip.io │
|
|
||||||
└────────────────────────┬────────────────────────────────┘
|
VM (k3s)
|
||||||
│ VirtualBox host-only
|
-> ingress-nginx + MetalLB
|
||||||
▼ 192.168.56.200 (MetalLB)
|
-> ArgoCD (app-of-apps)
|
||||||
┌─────────────────────────────────────────────────────────┐
|
-> Tekton (CI in-cluster)
|
||||||
│ VM: ops-demo (192.168.56.10) │
|
-> podinfo (demo workload)
|
||||||
│ │
|
-> monitoring (bonus)
|
||||||
│ ┌──────────────────┐ ┌───────────────────────────┐ │
|
|
||||||
│ │ Ingress-Nginx │ │ ArgoCD │ │
|
|
||||||
│ │ (LB: .200) │ │ kijkt naar deze Git repo │ │
|
|
||||||
│ └──────┬───────────┘ └───────────┬───────────────┘ │
|
|
||||||
│ │ │ synct │
|
|
||||||
│ ▼ ▼ │
|
|
||||||
│ ┌──────────────────┐ ┌───────────────────────────┐ │
|
|
||||||
│ │ podinfo │ │ MetalLB │ │
|
|
||||||
│ │ (Deployment) │ │ (geeft LAN IP's uit) │ │
|
|
||||||
│ └──────────────────┘ └───────────────────────────┘ │
|
|
||||||
│ │
|
|
||||||
│ ┌──────────────────────────────────────────────────┐ │
|
|
||||||
│ │ Tekton Pipeline │ │
|
|
||||||
│ │ clone → validate → bump tag → git push │ │
|
|
||||||
│ └──────────────────────────────────────────────────┘ │
|
|
||||||
└─────────────────────────────────────────────────────────┘
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### De GitOps loop
|
### Componenten in 1 regel
|
||||||
|
|
||||||
1. Alles in de cluster staat als declaratie in deze Git repo
|
| Component | Waarom die hier zit |
|
||||||
2. ArgoCD kijkt naar de repo en reconcilet de cluster naar die gewenste state
|
|-----------------------|----------------------------------------------|
|
||||||
3. De Tekton pipeline wordt zelf ook door ArgoCD gedeployed, en pusht commits die ArgoCD daarna weer synct
|
| k3s | Lichtgewicht Kubernetes voor lokale labs |
|
||||||
4. De enige `kubectl apply` die je vandaag deed: bootstrap van ArgoCD + PipelineRun triggeren
|
| ArgoCD | GitOps controller |
|
||||||
|
| MetalLB | LoadBalancer IP op bare metal/VM |
|
||||||
|
| ingress-nginx | HTTP routing op hostnames |
|
||||||
|
| Tekton | Pipeline als Kubernetes resources |
|
||||||
|
| podinfo | Eenvoudige app om deploys zichtbaar te maken |
|
||||||
|
| kube-prometheus-stack | Metrics en dashboards |
|
||||||
|
|
||||||
### Stack recap
|
## 2. Waarom dit productie-relevant is
|
||||||
|
|
||||||
| Component | Rol |
|
### Zonder GitOps (klassieke drift)
|
||||||
|-----------------------|-----------------------------|
|
|
||||||
| k3s | Single-binary Kubernetes |
|
|
||||||
| ArgoCD | GitOps engine (App-of-Apps) |
|
|
||||||
| MetalLB | Bare-metal LoadBalancer |
|
|
||||||
| Ingress-Nginx | HTTP routing op hostname |
|
|
||||||
| Tekton | CI pipeline (in-cluster) |
|
|
||||||
| podinfo | Demo-applicatie |
|
|
||||||
| kube-prometheus-stack | Observability (bonus) |
|
|
||||||
|
|
||||||
---
|
```bash
|
||||||
|
kubectl set image deployment/api api=company/api:hotfix
|
||||||
## 2. Waarom GitOps in productie
|
|
||||||
|
|
||||||
### De oude manier: imperatieve deploys
|
|
||||||
|
|
||||||
> **VM**
|
|
||||||
> ```bash
|
|
||||||
> # Iemand draait dit op vrijdagmiddag
|
|
||||||
> kubectl set image deployment/api api=company/api:v2.3.1-hotfix
|
|
||||||
> # Geen review. Geen audit trail. Niemand weet wie dit om 16:47 deed.
|
|
||||||
> ```
|
|
||||||
|
|
||||||
### De GitOps manier
|
|
||||||
|
|
||||||
```
|
|
||||||
PR: "bump API naar v2.3.1-hotfix"
|
|
||||||
→ peer review
|
|
||||||
→ merge
|
|
||||||
→ ArgoCD synct
|
|
||||||
→ deploy gebeurt
|
|
||||||
→ Git commit IS de audit trail
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Belangrijkste voordelen
|
Dat werkt snel, maar je verliest context: geen review, lastig auditbaar, foutgevoelig.
|
||||||
|
|
||||||
**Audit trail**: Elke clusterwijziging heeft een Git commit: wie, wat, wanneer, waarom.
|
### Met GitOps
|
||||||
|
|
||||||
**Drift detection**: Als iemand direct `kubectl apply` doet, ziet ArgoCD drift en kan het automatisch terugdraaien. De cluster convergeert altijd terug naar wat in Git staat.
|
1. Wijziging gaat via commit/PR.
|
||||||
|
2. Review + merge.
|
||||||
|
3. ArgoCD sync.
|
||||||
|
4. Git geschiedenis is je audit trail en rollback-mechanisme.
|
||||||
|
|
||||||
**Disaster recovery**: Cluster weg? `vagrant up` + `./scripts/vm/bootstrap.sh` + `kubectl apply -f apps/root.yaml` en ArgoCD bouwt alles opnieuw op. Git is je backup.
|
Concreet voordeel:
|
||||||
|
|
||||||
**Samenwerking tussen teams**: Developers openen PR's voor deploys. Ops reviewt manifest-wijzigingen. Geen SSH-sleutels op productie nodig.
|
- Traceerbaarheid: wie veranderde wat en waarom.
|
||||||
|
- Driftcontrole: handmatige clusterwijzigingen vallen op.
|
||||||
|
- Herstelbaarheid: cluster kwijt -> opnieuw opbouwen vanuit Git.
|
||||||
|
- Samenwerking: app- en platformwijzigingen via hetzelfde proces.
|
||||||
|
|
||||||
**Rollback**: `git revert <commit>` + `git push`. Geen speciale tooling nodig.
|
## 3. App-of-Apps in het kort
|
||||||
|
|
||||||
### Het App-of-Apps pattern
|
`apps/root.yaml` verwijst naar onderliggende Argo Applications.
|
||||||
|
|
||||||
Eén root Application beheert alle andere Applications. Nieuwe service toevoegen = één YAML-file in `apps/` toevoegen. De root app pakt die automatisch op.
|
Dat betekent: nieuwe capability toevoegen = nieuwe app-definitie committen.
|
||||||
|
Geen losse handmatige installatiestappen op de cluster.
|
||||||
|
|
||||||
```
|
## 4. Grenzen van deze workshop-opzet
|
||||||
apps/root.yaml ──manages──► apps/argocd.yaml
|
|
||||||
apps/apps/podinfo.yaml
|
|
||||||
apps/networking/metallb.yaml
|
|
||||||
apps/networking/ingress-nginx.yaml
|
|
||||||
apps/ci/tekton.yaml
|
|
||||||
apps/ci/pipeline.yaml
|
|
||||||
apps/monitoring/prometheus-grafana.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
Dit is een leeromgeving. In productie zou je strakker willen op o.a.:
|
||||||
|
|
||||||
## 3. Wat is de volgende stap
|
- Secrets: geen PATs als plain K8s secrets in Git-workflow, maar Vault + ESO of vergelijkbaar.
|
||||||
|
- Security: PSA/namespace policies bewust hardenen i.p.v. versoepelen voor labs.
|
||||||
|
- Multi-cluster: ApplicationSets en promotieflow (dev -> staging -> prod).
|
||||||
|
- Delivery-strategie: canary/blue-green met meetbare rollback-criteria.
|
||||||
|
|
||||||
### Secrets management
|
## 5. Wat je mee moet nemen
|
||||||
|
|
||||||
Vandaag: plain Kubernetes Secrets met GitHub PATs.
|
Als je 1 ding onthoudt:
|
||||||
In productie: **Vault + external-secrets-operator**
|
|
||||||
|
|
||||||
```
|
"Het cluster is een runtime-kopie van wat in Git staat."
|
||||||
Vault (secret store)
|
|
||||||
→ external-secrets-operator haalt secrets op
|
|
||||||
→ maakt Kubernetes Secrets aan
|
|
||||||
→ ArgoCD synct de rest
|
|
||||||
```
|
|
||||||
|
|
||||||
### Multi-cluster met ApplicationSets
|
Niet andersom.
|
||||||
|
|
||||||
Vandaag: één cluster, één repo.
|
Dat principe maakt deployments voorspelbaar, bespreekbaar en herstelbaar.
|
||||||
In productie: 10 clusters, één repo.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# ArgoCD ApplicationSet: deploy podinfo naar elke cluster uit de lijst
|
|
||||||
generators:
|
|
||||||
- list:
|
|
||||||
elements:
|
|
||||||
- cluster: staging
|
|
||||||
- cluster: prod-eu
|
|
||||||
- cluster: prod-us
|
|
||||||
```
|
|
||||||
|
|
||||||
### Progressive delivery
|
|
||||||
|
|
||||||
Vandaag: rolling update (all-or-nothing).
|
|
||||||
In productie: **Argo Rollouts** met canary of blue/green.
|
|
||||||
|
|
||||||
```
|
|
||||||
Nieuwe versie → 5% van traffic
|
|
||||||
→ metrics goed → 20% → 50% → 100%
|
|
||||||
→ metrics slecht → auto-rollback
|
|
||||||
```
|
|
||||||
|
|
|
||||||
50
docs/presentation/intro-talk-slides.md
Normal file
50
docs/presentation/intro-talk-slides.md
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
---
|
||||||
|
marp: true
|
||||||
|
title: Intro workshop - GitOps in de praktijk
|
||||||
|
paginate: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# GitOps in de praktijk
|
||||||
|
|
||||||
|
Korte intro (5 min)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Doel van vandaag
|
||||||
|
|
||||||
|
- Een werkende GitOps-loop bouwen op lokale k3s
|
||||||
|
- Begrijpen waarom dit patroon productie-relevant is
|
||||||
|
- Eindigen met een reproduceerbare setup
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agenda
|
||||||
|
|
||||||
|
1. VM + k3s klaarzetten
|
||||||
|
2. ArgoCD en app-of-apps
|
||||||
|
3. Ingress + MetalLB
|
||||||
|
4. Tekton pipeline
|
||||||
|
5. Bonus: monitoring
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Wat je leert
|
||||||
|
|
||||||
|
- Git als bron van waarheid
|
||||||
|
- Drift detectie en self-heal
|
||||||
|
- Samenhang tussen CI (Tekton) en CD (ArgoCD)
|
||||||
|
- Grenzen van een workshop-opzet
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Werkafspraak
|
||||||
|
|
||||||
|
- Kleine stappen
|
||||||
|
- Steeds verifiëren
|
||||||
|
- Problemen eerst observeren, dan repareren
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Klaar om te starten
|
||||||
|
|
||||||
|
Eerst baseline werkend, daarna optimaliseren.
|
||||||
169
docs/presentation/intro-talk-slides.pdf
Normal file
169
docs/presentation/intro-talk-slides.pdf
Normal file
|
|
@ -0,0 +1,169 @@
|
||||||
|
%PDF-1.3
|
||||||
|
%“Œ‹ž ReportLab Generated PDF document (opensource)
|
||||||
|
1 0 obj
|
||||||
|
<<
|
||||||
|
/F1 2 0 R /F2 3 0 R
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
2 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
3 0 obj
|
||||||
|
<<
|
||||||
|
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
4 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 13 0 R /MediaBox [ 0 0 841.8898 595.2756 ] /Parent 12 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
5 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 14 0 R /MediaBox [ 0 0 841.8898 595.2756 ] /Parent 12 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
6 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 15 0 R /MediaBox [ 0 0 841.8898 595.2756 ] /Parent 12 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
7 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 16 0 R /MediaBox [ 0 0 841.8898 595.2756 ] /Parent 12 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
8 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 17 0 R /MediaBox [ 0 0 841.8898 595.2756 ] /Parent 12 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
9 0 obj
|
||||||
|
<<
|
||||||
|
/Contents 18 0 R /MediaBox [ 0 0 841.8898 595.2756 ] /Parent 12 0 R /Resources <<
|
||||||
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
||||||
|
>> /Rotate 0 /Trans <<
|
||||||
|
|
||||||
|
>>
|
||||||
|
/Type /Page
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
10 0 obj
|
||||||
|
<<
|
||||||
|
/PageMode /UseNone /Pages 12 0 R /Type /Catalog
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
11 0 obj
|
||||||
|
<<
|
||||||
|
/Author (anonymous) /CreationDate (D:20260303233520+01'00') /Creator (anonymous) /Keywords () /ModDate (D:20260303233520+01'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||||
|
/Subject (unspecified) /Title (untitled) /Trapped /False
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
12 0 obj
|
||||||
|
<<
|
||||||
|
/Count 6 /Kids [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R ] /Type /Pages
|
||||||
|
>>
|
||||||
|
endobj
|
||||||
|
13 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 220
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
GarWs4U]+\&-h(+^Z$8<LY,8J9="ujT\u!<MeIgQoRiV4O(f.?/:f%YE6m>Po'e'Y>7^'?[Kck*\-GP4%<ohK,r(`_q3!9-VXt'"(2TfV*uVY1)]F(!a2VJ`-^k)1)Uj*$I+*6V>RS%:Y[LeIY`cp3CiWB.PD3Zo$ulm<dl@4c\:,JrV$6^-W3R-tm^l`qa''uq.g7@*)absX[,iA4aU=:U5m[~>endstream
|
||||||
|
endobj
|
||||||
|
14 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 345
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
GasJM4`A4\&;KrWMHB)k<XLQh6bGl_]2\(4fS.7FMtdA^PNM<M]2b%EOX^L(%c-a?%ZW(l5+h]^fGL]]3OjV8!7+dXo89YQb]s5W9mN_`=oJLO'N:hV;]nt<<i3_DpNKE)>(#%Qg6K)="3^f.nJ@TmlNo""])gG">:[[6j@V5Q<A?ku\^oD2Nt[5%qMOe%inH.>>OMg`r:-$.;UkQ_[Y.,1J$%=EWE:=%r(Q!E*Sb(j*7b>OTlL`tNPYK56h&WG*uup8[?MSfE;qDnJgH&^BYa;+X-96P#YK<6D_P&@fg$B'*et^+R_N8,TW;dl,u_@=&:u@5\XmAAV(NlmHiXTdIs:~>endstream
|
||||||
|
endobj
|
||||||
|
15 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 336
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
GasJMbA+pK&4Q?hM@8845pdXEQD3f15+n#(7/!KXN,(pA[_(eU=&DR3,[^b<\8[Ht1Q3k;:Aa>X=?A(*)(a_>?ptE?K-rTN\U_na\^\ACIg^9kg'ScP,#XhghuVG2X3ud4iWefkme0-b+'9RQK'@m0A@0jT'pLUe=Q`8pK\[DfW9&Q@.>n,RO/!6ce`R:=.@9k0)F7KuAc(s&+&I(8]\Uoo0haU5S>&=sLEsNcZM26JCYAQhBK#/_?5c7KUe&-B3+%_`5Z`*BWIgb:PosiG-TWWVg[HrQj3WNqD#5]H(RghjFI_;mCTSnbUkB;TNF?o)dmF(s@.jbWe9`n~>endstream
|
||||||
|
endobj
|
||||||
|
16 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 359
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
GasK8heU(_&-q]Ks,&Jr70eaqO!aR?dqoNe[_cAIP3H\]23g"fi*X7+)q1K'JKu5jkI<U6,Tbh"o.BHnA,O9]"nEtL@LDo]*qMZ>(Q_3)QhhQ\^Hefec9rF4,%`-(9\a*%o54Z]KUTu;&b7gMgHR<VR<4tWliLi52URsD-uG@13pjb8)h[<'^t()$I,j^-*VS(\P,cM$$KmT%/=!1q8i'g+!u;Sa*\%4OZrA^I9!\+I.nNm>jO&:[>B6Q_.tl6WNR[S(`A"2aBO!:Wm--&*mes/RcAL!a?Q-nnOlE0P:[UJ4%9%ZKNSh*SZb(!r#J)bIITP>PcUOC89IhP8"OkA0dhbkkI=bkr%K(g1cN~>endstream
|
||||||
|
endobj
|
||||||
|
17 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 289
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
GasK79hWAh&-h'>J&Me%<+MKOO4iYFkX?#6$XUJ^gBl@fC"S+<IQ*0%-%[ZVbJ<u`1P@5B.Ws>EpAsSM!bm;lA<fT.`^<jn^4rVa^>ZUq?[uY*[BB*kk>YIE@#O?O2bD'B%"4$'G_>L:E;RoA0q4$KV#C@BV)HP.@G*/,ljEM_hW*iGLJBO^Z1"OdbqA%2Pr$_2n^gWK5N!aMcq+!TW1;"U1BT;p]KJh:*CS=0ik-9W>pehHqq*&`+4F+?)j^Y%k?[FYf8?[bcs!^KjNBZpjrXk0T71Qg^]~>endstream
|
||||||
|
endobj
|
||||||
|
18 0 obj
|
||||||
|
<<
|
||||||
|
/Filter [ /ASCII85Decode /FlateDecode ] /Length 239
|
||||||
|
>>
|
||||||
|
stream
|
||||||
|
GarW36&G^u&4Q>bi\*fafThI3ZP@SWb?Q0b2:1%t,ouLOVLpi1,6^O+U#+fCRPIk:B`PR_X$)"jr"$js"+S87cYBW12H/K'Db;[uRM@pOb+[![j3$D4Y<sBu_JMORN&d[bE=RJL?bE($[[EeWe-E'le:sA"$sR;"f+ko]1hM,j;>MmP*g3Z=cV'dd/I("u\JmlmNKPQe&&R%0lM+0<S79sUcs!]^A?1_lr!.i,'+2uV3<~>endstream
|
||||||
|
endobj
|
||||||
|
xref
|
||||||
|
0 19
|
||||||
|
0000000000 65535 f
|
||||||
|
0000000061 00000 n
|
||||||
|
0000000102 00000 n
|
||||||
|
0000000209 00000 n
|
||||||
|
0000000321 00000 n
|
||||||
|
0000000526 00000 n
|
||||||
|
0000000731 00000 n
|
||||||
|
0000000936 00000 n
|
||||||
|
0000001141 00000 n
|
||||||
|
0000001346 00000 n
|
||||||
|
0000001551 00000 n
|
||||||
|
0000001621 00000 n
|
||||||
|
0000001883 00000 n
|
||||||
|
0000001973 00000 n
|
||||||
|
0000002284 00000 n
|
||||||
|
0000002720 00000 n
|
||||||
|
0000003147 00000 n
|
||||||
|
0000003597 00000 n
|
||||||
|
0000003977 00000 n
|
||||||
|
trailer
|
||||||
|
<<
|
||||||
|
/ID
|
||||||
|
[<ac7de3f3a6a4e42b2eb0900dbad51a23><ac7de3f3a6a4e42b2eb0900dbad51a23>]
|
||||||
|
% ReportLab generated PDF document -- digest (opensource)
|
||||||
|
|
||||||
|
/Info 11 0 R
|
||||||
|
/Root 10 0 R
|
||||||
|
/Size 19
|
||||||
|
>>
|
||||||
|
startxref
|
||||||
|
4307
|
||||||
|
%%EOF
|
||||||
36
docs/presentation/intro-talk.md
Normal file
36
docs/presentation/intro-talk.md
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Intro talk (5 minuten)
|
||||||
|
|
||||||
|
## Opening
|
||||||
|
|
||||||
|
Welkom. In deze workshop bouwen we een kleine maar complete GitOps-keten op een lokale Kubernetes-VM.
|
||||||
|
|
||||||
|
Doel: niet alleen "iets werkend krijgen", maar snappen waarom dit patroon in echte omgevingen werkt.
|
||||||
|
|
||||||
|
## Wat we gaan doen
|
||||||
|
|
||||||
|
1. Een k3s-cluster opzetten in Vagrant.
|
||||||
|
2. ArgoCD installeren en een app-of-apps structuur gebruiken.
|
||||||
|
3. Networking toevoegen (Ingress + MetalLB) zodat apps bereikbaar zijn.
|
||||||
|
4. Een Tekton pipeline draaien die een wijziging naar Git terugschrijft.
|
||||||
|
5. (Bonus) Monitoring bekijken.
|
||||||
|
|
||||||
|
## Wat je onderweg leert
|
||||||
|
|
||||||
|
- Waarom "Git als bron van waarheid" nuttig is.
|
||||||
|
- Hoe ArgoCD drift detecteert en herstelt.
|
||||||
|
- Hoe CI (Tekton) en CD (ArgoCD) op elkaar aansluiten.
|
||||||
|
- Welke workshopkeuzes je in productie anders zou doen.
|
||||||
|
|
||||||
|
## Verwachting voor vandaag
|
||||||
|
|
||||||
|
Aan het eind heb je:
|
||||||
|
|
||||||
|
- Een reproduceerbaar lokaal platform-opzet.
|
||||||
|
- Begrip van de GitOps-loop van commit tot running workload.
|
||||||
|
- Een basis om dit patroon later uit te breiden naar meerdere clusters.
|
||||||
|
|
||||||
|
## Praktisch
|
||||||
|
|
||||||
|
- We werken met korte stappen en veel verificatie.
|
||||||
|
- Als iets niet meteen werkt: eerst status checken, dan pas fixen.
|
||||||
|
- Onthoud: fouten in deze workshop zijn juist nuttig, ze laten zien hoe het systeem reageert.
|
||||||
Loading…
Add table
Reference in a new issue