Proč kontejnerizace změnila způsob, jak vyvíjíme a provozujeme software
Kontejnerizace standardizuje balení aplikací a jejich závislostí do přenositelných jednotek, které běží konzistentně v různých prostředích (vývoj, testování, produkce, edge). V praxi to znamená rychlejší releasy, snadnější škálování a vyšší odolnost vůči chybám. Klíčovými technologiemi jsou Docker (build, image, lokální běh) a Kubernetes (orchestrace, škálování, self-healing). Tento text pokrývá architekturu, provozní vzory, bezpečnost, observabilitu i nákladovou optimalizaci.
Containers vs. virtuální stroje
- Izolace: kontejnery sdílejí kernel hostitele, virtuální stroje mají vlastní kernel; kontejnery startují v řádu milisekund až sekund.
- Hustota: na stejném hardwaru pojmete více kontejnerů než VM; lepší využití zdrojů.
- Imutabilita: image je neměnný artefakt; změna znamená novou verzi image.
- Napojení na CI/CD: buildy produkují image a metadata (tagy, SBOM), release je deklarativní změna.
Docker: image, vrstvy a build pipeline
- Image vrstvy: každá instrukce v
Dockerfiletvoří vrstvu; správné pořadí minimalizuje přerušení cache a velikost image. - Multi-stage build: první fáze kompiluje, druhá kopíruje pouze artefakty; výsledný image je malý a bezpečnější.
- Base image: preferujte minimalní základ (například distroless, alpine s rozmyslem); explicitně fixujte verze.
- Runtime uživatel: nepoužívejte
root; nastavteUSER, definujteWORKDIR,ENTRYPOINTaHEALTHCHECK. - Registries: Docker Hub, GHCR, ECR, GCR; promyslete retenci tagů, podpisy (cosign), zálohy a geo-replikaci.
Networking a perzistence v Dockeru
- Sítě: bridge (implicitní), host, overlay (Swarm); jasně mapujte porty (
-p 8080:80) a významEXPOSE. - Volumes: rozlišujte bind mount (lokální vývoj) vs. named volume (produkční perzistence).
- Secrets a konfigurace: nepřidávejte je do image; načítejte je z prostředí, souborů či externích trezorů.
Typické anti-patterny při práci s Dockerem
- Monolit v jednom kontejneru: rozdělte aplikaci podle domén; jeden proces = jedna odpovědnost.
- „Mutable“ kontejnery: žádné ssh & apt install za běhu; změna znamená nový build.
- Gigantické image: čistěte cache, používejte multi-stage buildy a vrstvy s rozmyslem.
Kubernetes: základní stavebnice a řídicí smyčky
- Pod: nejmenší běhová jednotka; sdílí síťový jmenný prostor a volume.
- Deployment & ReplicaSet: deklarativní rollout, rollback, počet replik, strategie RollingUpdate.
- Service: stabilní virtuální IP a DNS jméno; typy ClusterIP, NodePort, LoadBalancer.
- Ingress / Gateway API: L7 směrování, TLS, rate-limit, WAF; moderní cesta je Gateway API.
- ConfigMap & Secret: konfigurace a citlivá data (base64 není šifrování; využijte KMS/SealedSecrets/SOPS).
- StatefulSet & PersistentVolume: stabilní identity a perzistentní storage přes PersistentVolumeClaim a CSI drivery.
- DaemonSet, CronJob, Job: agenty na každém uzlu, plánované úlohy a dávkové úlohy.
Plánování, škálování a dostupnost
- Requests/limits: definujte CPU a paměť; scheduler je využívá k umístění podů.
- HPA/VPA: horizontální vs. vertikální škálování na základě metrik; kombinujte s podmínkami auto-scaleru uzlů.
- PodDisruptionBudget & PodTopologySpread: zabrání nechtěné nedostupnosti a rozloží zátěž napříč zónami.
- Probes:
liveness,readiness,startupzabraňují posílání provozu nezdravým podům.
Networking v Kubernetes: CNI, služby a politiky
- CNI pluginy: Calico, Cilium, Weave; volba ovlivňuje výkon, bezpečnost (eBPF) i síťové politiky.
- DNS a service discovery: CoreDNS zajišťuje interní jmennou službu; dbejte na TTL a caching.
- NetworkPolicy: definujte, kdo smí komunikovat s kým; deny-all jako výchozí postoj pro citlivé workloady.
Storage: perzistence a výkon
- CSI: rozhraní pro storage drivery (cloudové disky, on-prem SAN/NAS, Ceph, Longhorn).
- Access modes:
RWO,RWX,ROX; podle nich volte typ a architekturu aplikace. - Snapshoty a replikace: plánujte RPO/RTO, snapshot class, zálohovací operátory.
Observabilita: logy, metriky, trasování
- Logy: standardní výstup; agregace přes Fluent Bit/Vector do OpenSearch/Elastic.
- Metriky: Prometheus + Alertmanager; definujte SLO/SLI, exportéry pro infrastrukturu i aplikace.
- Tracing: OpenTelemetry + Jaeger/Tempo; sledujte latence a závislosti mezi mikroslužbami.
- Dashboards: Grafana pro korelace; propojte metriky, logy a trasování do jednoho přehledu.
Service mesh: kdy dává smysl
- Důvody pro mesh: nulové změny kódu pro mTLS, retry, circuit breaking, traffic shaping, A/B testování a canary deployment.
- Varianty: Istio, Linkerd, Cilium Service Mesh; zvažte režii sidecarů vs. ambient/eBPF modely.
Bezpečnost: supply chain, běhové politiky, izolace
- SBOM a podpisy: generujte SBOM (CycloneDX, SPDX), podepisujte image (cosign), ověřujte v admission vrstvě.
- Policy as code: OPA/Gatekeeper nebo Kyverno; vynucujte pravidla (žádný root, read-only filesystem, drop
CAP_NET_RAW). - Pod Security: používejte Pod Security Standards (Baseline/Restricted),
seccomp,AppArmor. - Správa secretů: KMS integrované s clusterem (AWS KMS, HashiCorp Vault); rotace klíčů, audit.
- Supply chain skenování: Trivy/Grype pro image; pravidelné rescany, blokace kritických CVE.
CI/CD a release strategie
- Build: deterministické buildy, cache, multi-architektura (amd64/arm64); artefakty s metadaty (git SHA, datum).
- Testy: unit/integration, testcontainers, kontrakty mezi službami; smoke test po nasazení.
- Release: blue-green, canary, progressive delivery (Argo Rollouts); automatické rollbacky na základě SLO.
GitOps: deklarativní správa prostředí
- Princip: zdroj pravdy v Gitu; agent (Argo CD/Flux) synchronizuje manifesty do clusteru.
- Výhody: auditní stopa, jednoduché rollbacky, schvalovací brány (pull requesty), méně driftu.
- Struktura repozitáře: oddělte app (Helm/Kustomize šablony) a env (overlays, hodnoty).
Architektonické vzory pro mikroslužby
- 12-factor a dále: konfigurace přes prostředí, stateless procesy, disposability, health endpoints.
- Backpressure a timeouts: definujte limity, retry s jitterem, idempotenci.
- Event-driven: fronty a streamy (Kafka, NATS, RabbitMQ) s operátory pro Kubernetes.
Multi-tenancy, compliance a governance
- Izolace: Namespaces + NetworkPolicy + ResourceQuota; oddělte RBAC role a přístupy k secretům.
- Compliance: audit logy API serveru, retenční politiky, kryptografie v souladu s normami (např. ISO 27001).
- Zásady životního cyklu: správa verzí clusteru, upgrady, deprecace API (pohlídejte změny v
apiextensions.k8s.io).
Hybrid cloud, edge a workloady s GPU
- Hybridní a multi-cloud: jednotná vrstva deploymentu, přenositelná observabilita, srovnatelné bezpečnostní politiky.
- Edge: menší clustery s omezenými zdroji; důraz na offline toleranci, OTA aktualizace a bezpečné bootování.
- GPU/AI workloady: device pluginy, plánování podle GPU paměti, NUMA-aware umístění.
Optimalizace nákladů a výkonu
- Správná velikost: měřte reálné spotřeby, upravujte requests/limits a velikosti nodů.
- Autoscaling uzlů: automatické přidávání a odebírání kapacity; pozor na fragmentaci zdrojů (bin-packing).
- Cache a CDN: odložení statiky, snížení latence a nákladů na egress.
- Životní cyklus logů: retenční politiky, sampling v trasování, komprese.
Troubleshooting: systematický postup
- Reprodukce: ověřte manifesty, image, proměnné prostředí; porovnejte očekávané a reálné runtime prostředí.
- Probes a eventy: zkontrolujte events, stav podu, důvody restartů (
OOMKilled,CrashLoopBackOff). - Síť: ověřte DNS, NetworkPolicy, Service/Endpoints, readiness backendů.
- Storage: PVC bound? IOPS/latence? Práva v mountu, typ souborového systému.
- Regrese: vraťte se k předchozímu Git commitu (GitOps), ověřte změny v závislostech a konfiguraci.
Checklist produkční připravenosti
- Imutabilní image s non-root uživatelem, podepsaná a s SBOM.
- Requests/limits,
readiness/liveness/startuppro každou službu. - NetworkPolicy a šifrované secrety; rotace klíčů.
- Logy → centralizované úložiště; metriky a alerty navázané na SLO.
- Automatické rollouty s canary/blue-green a definovaným rollbackem.
- Zálohy a obnovy: testovaný restore runbook, snapshoty PersistentVolume.
Závěr: kontejnerový ekosystém jako provozní operační systém
Docker zjednodušuje build a transport aplikací, Kubernetes přináší standardizovanou vrstvu orchestrace a řízení. Spolu vytvářejí „operační systém datacentra“, kde je infrastruktura deklarativní, odolná a auditovatelná. Dlouhodobý úspěch závisí na disciplíně v oblasti bezpečnosti, observability, automatizace a kvalitě vývojářské praxe. Pokud tyto oblasti skloubíte, získáte rychlejší inovaci, stabilnější provoz a predikovatelné náklady.



























