DevOps & Cloud Native – Cursusmateriaal
Auteur
Milan Dima
milan.dima@vives.be
Licentie
Deze cursus valt onder de Creative Commons BY 4.0-licentie.
Iedereen mag dit materiaal gratis gebruiken, delen en aanpassen,
mits correcte bronvermelding naar: Milan Dima (milan.dima@vives.be).
Meer info: https://creativecommons.org/licenses/by/4.0/
Inhoudstafel
- Docker Fundamentals - Introductie & Motivatie, Wat is Docker?, Containers vs VMs
- Praktische Oefeningen - Hands-on labs en experimenteren
- Onderwerpen:
- Belangrijkste Docker commando’s (
docker run, docker ps, docker stop, docker rm)
- Opties:
--rm, --name, -d, -p, -v
docker inspect
- Data & Volumes: ephemeral, named, bind mounts,
--volumes-from
- Networking: bridge, poortmapping, container-naar-container communicatie
- Eigen images maken met
docker commit
- Publiceren naar Docker Hub
- Dockerfile Tutorial - Van Docker run naar distribueerbare images
- Dockerfile Advanced - Geavanceerde Dockerfile technieken en optimalisaties
- Dockerfile Multiplatform - Multi-platform builds voor ARM en x86 architecturen
- Onderwerpen:
- Images bouwen met Dockerfile
- Docker layer systeem en caching
- Dockerfile keywords en best practices
- Multi-stage builds en optimization
- Van handmatige containers naar scripted builds
- Geavanceerde Dockerfile instructies en optimalisatie technieken
- Security best practices en image hardening
- Build context optimalisatie en .dockerignore
- Multi-platform builds voor ARM (macOS M1/M2/M3) en x86_64 architecturen
- BuildKit en buildx voor cross-platform image creation
- Van Docker run naar Compose - Multi-container orchestratie
- Compose bestanden - Praktische voorbeelden
- Onderwerpen:
- Multi-container applicaties
- YAML configuratie en service definitie
- Container communicatie via service names
- Volumes en networking in Compose
- Van handmatige linking naar geautomatiseerde orchestratie
- Docker Networking Tutorial - Complete netwerkgids
- Onderwerpen:
- Netwerkmodi: bridge, host, overlay, none
- Container-naar-container communicatie
- Custom networks aanmaken en beheren
- Network drivers en gebruik cases
- Externe toegang en poort forwarding
- Praktische voorbeelden met netcat
- IaC Tutorial - Ansible en Terraform mastery
- IaC bestanden - Praktische voorbeelden en templates
- Onderwerpen:
- Van handmatige naar geautomatiseerde infrastructuur
- Ansible: Configuration Management, Playbooks, inventory, modules en roles
- Terraform/OpenTofu: Infrastructure Provisioning, declaratieve vs imperatieve benaderingen
- State management en lifecycle workflows
- Resource cleanup en destroy best practices
- Tool integratie: Terraform + Ansible workflows
- Praktische cloud deployment (GCP/AWS/Azure)
- Waarom Kubernetes? Container orchestratie uitdagingen
- Managed Kubernetes: Linode Kubernetes Engine (LKE) quick start
- Cloud deployment: van Docker Compose naar Kubernetes
- Basic deployment op managed cluster
- LoadBalancer services en external access
- Kubernetes Architectuur: control plane, nodes, pods
- Core Concepts Deep Dive: Pods, Services, Deployments
- Kubernetes Manifests: YAML configuratie en best practices
- Service Discovery: load balancing mechanismen
- ConfigMaps en Secrets: configuration management
- Namespaces: resource isolation en multi-tenancy
- Labels & Selectors: resource organization en targeting
- Three-tier Application: frontend, backend, database deployment
- Local Development: Minikube en Kind (Kubernetes in Docker)
- Development Workflows: hot reloading en debugging
- Troubleshooting: praktische debugging technieken
- Minikube Setup: installatie en configuratie op macOS, Linux, Windows
- 3-Tier Pet Shelter Applicatie: Frontend (Express/HTML) + Backend (Node.js REST API) + MongoDB database deployment
- Secrets & ConfigMaps: gevoelige data en configuratie management
- Deployments & Services: complete applicatie orchestratie met frontend, backend en database tiers
- Service Toegang: NodePort, port forwarding, minikube tunnel, ingress
- Monitoring & Debugging: logs, events, resource usage, pod execution
- Troubleshooting: veelvoorkomende problemen en oplossingen
- Praktische Workflow: van lokale development tot volledige deployment
- Repository: volledige working example met PetShelter-minimal in minikube-demo
- Helm Tutorial - Kubernetes package management fundamentals
- Helm PetShelter Migration - Praktische migratie van Kubernetes naar Helm
- Onderwerpen:
- Kubernetes applicatie packaging en templating
- Helm charts en custom chart development
- Package management en versioning strategieën
- Helm repositories en chart distribution
- Complex deployments met Helm dependency management
- Stap-voor-stap migratie van PetShelter applicatie naar Helm
- Values.yaml configuratie en template development
- Helper templates en best practices
- Ingress Controllers - Complete Kubernetes ingress fundamentals
- Traefik Tutorial - Modern reverse proxy met automatische SSL
- Nginx Tutorial - Klassieke reverse proxy configuratie
- Traefik Examples - Praktische Traefik configuraties
- Nginx Examples - Praktische Nginx voorbeelden
- Onderwerpen:
- Ingress controllers en routing mechanismen
- Kubernetes Ingress resources en controllers (NGINX, Traefik, HAProxy)
- Ingress architectuur en deployment patterns
- Traefik als modern reverse proxy met automatische SSL certificates (Let’s Encrypt)
- Nginx reverse proxy configuratie met port redirection en upstream servers
- Load balancing strategieën en algoritmes
- SSL/TLS certificate management (automatisch en manueel)
- External DNS en domain management voor production
- Container-naar-container proxy routing
- Path-based en host-based routing configuraties
- Health checks en monitoring van ingress traffic
- Best practices voor production ingress setups
- GitHub Actions Basics - GitHub Actions fundamentals en workflow syntax
- Complete Pipeline Example - GitHub Actions CI/CD voor frontend/backend deployment
- GitHub Container Registry (GHCR) - Container images automatisch pushen naar GHCR
- Onderwerpen:
- GitHub Actions Fundamentals:
- Workflow syntax en triggers (push, pull_request, schedule)
- Jobs, steps en actions marketplace
- Environment variables en secrets management
- Matrix builds voor multi-platform testing
- Artifact sharing tussen jobs
- Complete CI/CD Pipeline:
- Docker image building en versioning strategieën
- Docker Hub registry management en authentication
- Automated deployment naar production servers via SSH
- SSH key configuratie en GitHub secrets setup
- Zero-downtime deployments met docker compose
- Environment-specific configurations
- GitHub Container Registry (GHCR):
- Personal Access Token (PAT) configuratie voor GHCR
- Docker login naar ghcr.io en image naming conventions
- Container images bouwen en pushen naar GHCR
- GitHub Actions workflow voor automatische GHCR deployments
- Package visibility management (public/private)
- Troubleshooting GHCR authentication en build errors
- Advanced CI/CD Concepts:
- GitOps principes en workflow patterns
- ArgoCD voor declaratieve Kubernetes deployments
- Flux voor continuous delivery automation
- Infrastructure as Code in CI/CD pipelines
- Multi-environment deployment strategieën (dev, staging, prod)
- Canary deployments en blue-green deployment patterns
- Rollback strategieën en disaster recovery
- Service Mesh Tutorial - Advanced microservices communication
- Onderwerpen:
- Service mesh architectuur en use cases
- Istio: traffic management, security, observability
- Linkerd als lightweight alternatief
- Service-to-service communication patronen
- Circuit breakers en resilience patterns
- Microservices observability en debugging
- Onderwerpen:
- Container security best practices
- Image vulnerability scanning (Trivy, Snyk)
- Kubernetes security: RBAC, PodSecurityPolicies
- Policy as Code met Open Policy Agent (OPA)
- Secrets management en encryption
- Security monitoring en compliance automation
- Onderwerpen:
- Observability: metrics, logs, distributed tracing
- Prometheus voor metrics collection en alerting
- Grafana voor visualization en dashboards
- Jaeger voor distributed tracing
- Application Performance Monitoring (APM)
- SLA/SLO/SLI definitie en monitoring
- Onderwerpen:
- Kubernetes auto-scaling: HPA, VPA, Cluster Autoscaler
- Load testing strategieën (K6, Artillery)
- Performance optimization technieken
- Resource management en capacity planning
- Multi-cloud en hybrid cloud strategieën
- Disaster recovery en business continuity planning
Introductie
Deze cursus DevOps & Cloud Native biedt een praktijkgerichte inleiding in de moderne manier van software ontwikkelen, uitrollen en beheren.
We starten met Docker als basis van containerisatie, gevolgd door Dockerfile en Docker Compose voor multi-container applicaties. Vervolgens leren we Docker Networking voor complexe communicatie patronen.
Een belangrijke stap is Infrastructure as Code (IAC) met Ansible en Terraform, waarmee we complete infrastructuur automatiseren. Daarna bouwen we verder naar Kubernetes voor enterprise orchestratie, CI/CD pipelines, en cloud-native tools zoals Helm, Traefik en monitoring oplossingen.
Doelstellingen
- Begrijpen waarom containerisatie en orkestratie essentieel zijn voor moderne software development.
- Leren werken met Docker ecosysteem voor development, testing en productie.
- Infrastructure as Code beheersen voor geautomatiseerd infrastructuur beheer.
- Inzicht krijgen in Kubernetes als standaard voor cloud deployment en orchestratie.
- Kennismaken met CI/CD pipelines, monitoring en enterprise-ready infrastructuurtools.
- Praktische ervaring opbouwen met industry-standard DevOps workflows.
Voor wie?
- Studenten en professionals die inzicht willen krijgen in DevOps en Cloud Native development.
- Basiskennis Linux en command line is een pluspunt.
- Interesse in automatisering, cloud platforms en moderne development practices.
- Voorbereiding op DevOps Engineer, Site Reliability Engineer of Cloud Infrastructure rollen.