- LF9-03 Virtualisierung: Docker Compose + Volume examples - LF6-02 Frontend: To-Do list practical example - LF8-04 ETL: Complete ETL pipeline example - LF6-04 Sicherheit: Express.js security headers - LF2-04 Nutzwertanalyse: Cloud provider selection example - LF9-04 Monitoring: Prometheus alerts + Python logging
3.6 KiB
3.6 KiB
9.3 Virtualisierung
Virtualisierung - Grundlagen
Was ist Virtualisierung?
Virtualisierung
Mehrere virtuelle Maschinen auf einer
physischen Hardware betreiben
Vorteile
| Vorteil | Beschreibung |
|---|---|
| Kosteneinsparung | Weniger Hardware |
| Flexibilität | Schnell bereitgestellt |
| Isolation | Getrennte Umgebungen |
| Skalierung | Leicht erweiterbar |
| Testumgebung | Schnell aufgesetzt |
Virtualisierungstypen
Full Virtualization
Gast-OS läuft unverändert
├── VMware Workstation
├── VirtualBox
└── Hyper-V
Para-Virtualization
Gast-OS weiß von Virtualisierung
├── Xen
└── Citrix XenServer
Container-Virtualisierung
Leichtgewichtige Virtualisierung
├── Docker
├── Podman
└── Kubernetes
Docker
Grundlagen
Docker - Begriffe
├── Image: Vorlage (Template)
├── Container: Laufende Instanz
├── Dockerfile: Image-Beschreibung
├── Registry: Image-Speicher
└── Volume: Persistenter Speicher
Docker-Befehle
# Container starten
docker run -d -p 8080:80 nginx
# Container auflisten
docker ps
docker ps -a
# Container stoppen
docker stop container_id
# Image bauen
docker build -t mein-image .
# Container entfernen
docker rm container_id
Dockerfile
# Basis-Image
FROM node:18-alpine
# Arbeitsverzeichnis
WORKDIR /app
# Dateien kopieren
COPY package*.json ./
COPY . .
# Abhängigkeiten installieren
RUN npm install
# Port freigeben
EXPOSE 3000
# Startbefehl
CMD ["node", "server.js"]
Praktisches Beispiel: Docker Compose
# docker-compose.yml
version: '3.8'
services:
# Webanwendung
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://db:5432/webapp
depends_on:
- db
- redis
# Datenbank
db:
image: postgres:15-alpine
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=geheim
- POSTGRES_DB=webapp
# Cache
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
db_data:
Praktisches Beispiel: Docker Volume
# Volume erstellen
docker volume create mydata
# Volume einhängen
docker run -v mydata:/data ubuntu
# Volumes auflisten
docker volume ls
# Unbenutzte Volumes löschen
docker volume prune
Kubernetes
Architektur
Kubernetes - Komponenten
├── Master Node
│ ├── API Server
│ ├── Scheduler
│ ├── Controller Manager
│ └── etcd
├── Worker Nodes
│ ├── Kubelet
│ ├── Kube Proxy
│ └── Container Runtime
└── Add-ons (DNS, Dashboard)
Kubernetes-Objekte
| Objekt | Beschreibung |
|---|---|
| Pod | Kleinste Einheit (1+ Container) |
| Deployment | Replikate, Updates |
| Service | Netzwerkzugriff |
| Ingress | HTTP-Routing |
| ConfigMap | Konfiguration |
| Secret | Sensitive Daten |
Cloud-Computing
Service-Modelle
Cloud - Modelle
├── IaaS: Infrastructure as a Service
│ └── Virtuelle Maschinen, Netzwerk
├── PaaS: Platform as a Service
│ └── Laufzeitumgebung
└── SaaS: Software as a Service
└── Fertige Anwendung
Anbieter
| Anbieter | Service |
|---|---|
| AWS | EC2, S3, Lambda |
| Azure | VMs, Blob, Functions |
| Google Cloud | Compute Engine, Cloud Storage |
Querverweise
Stand: 2024