Proč nasazovat mikroslužby na Kubernetes
Mikroslužbová architektura rozděluje aplikaci na autonomní služby s jasně definovanými rozhraními a nezávislým životním cyklem. Kubernetes (K8s) nabízí deklarativní orchestraci kontejnerů, škálování, samoopravu, izolaci a bohatý ekosystém nástrojů. V kombinaci s GitOps, service meshem a observabilitou umožňuje rychlá a bezpečná nasazení s vysokou spolehlivostí a kontrolou nákladů.
Doménový návrh a kontrakty služeb
- Ohraničené kontexty: mapujte domény na samostatné služby; omezte sdílení schémat a databází.
- Kontrakty API: specifikace (OpenAPI/AsyncAPI), verzování (semver), zpětná kompatibilita, testování kontraktů.
- Idempotence a konzistence: zprávy typu at-least-once vyžadují idempotentní zpracování; event sourcing a outbox pattern pro spolehlivé publikování událostí.
Kontejnerizace a hygiena obrazů
- Dockerfile podle principu „nejmenších oprávnění“:
USERbez oprávnění root,HEALTHCHECK, souborový systémREADONLY, minimální základní obraz (distroless/ubi-minimal). - Determinismus: obrazy odkazujte pomocí digestu (
@sha256), neměnných tagů (tag immutability) a reprodukovatelných sestavení. - Dodavatelský řetězec: SBOM (CycloneDX/SPDX), skenování CVE v CI/CD, podpisy (cosign) a atestace (SLSA).
Manifesty a balíčkování: Kustomize, Helm, operátoři
- Helm charts: šablonování, values, lint, helm test a závislosti; vhodné pro produktové balíčky.
- Kustomize: overlays pro prostředí (dev/stage/prod), patches bez šablonovací logiky.
- Operátoři: zakódované provozní znalosti (CRD + controller) pro databáze, fronty a middleware.
Základní objekty Kubernetes pro mikroslužby
- Deployment: deklaruje repliky, RollingUpdate, readiness/liveness pro samoopravu.
- Service: stabilní virtuální IP adresa a DNS;
ClusterIP(interní),NodePort,LoadBalancer. - Ingress/IngressClass: směrování na L7, TLS, přepisování cest a rate limit prostřednictvím controlleru (NGINX, Traefik, HAProxy, Gateway API).
- ConfigMap & Secret: konfigurace podle principů 12-factor; šifrování envelope a CSI Secrets.
- StatefulSet: trvalá identita podů, stabilní úložiště (PVC) pro stavové komponenty; v mikroslužbové architektuře používejte uvážlivě.
Zabezpečení nasazení
- Pod Security Standards (PSS): profil restricted –
runAsNonRoot,readOnlyRootFilesystem,allowPrivilegeEscalation: false, seccomp RuntimeDefault. - RBAC a minimální oprávnění: oddělené ServiceAccounts, Role a RoleBinding pro každý namespace.
- NetworkPolicy: výchozí zákaz komunikace a její explicitní povolení mezi službami i do externí sítě.
- mTLS a identita služby: service mesh (Istio/Linkerd) nebo SPIFFE/SPIRE pro silnou identitu a šifrování na L7.
- Secrets a klíče: krátká TTL, rotace, přístup prostřednictvím volume místo proměnných prostředí; integrace s Vault/KMS.
Škálování a hospodaření se zdroji
- Requests/Limits: definujte CPU/RAM pro spravedlivé plánování a ochranu před OOM; sledujte throttling.
- HPA/VPA/KEDA: horizontální škálování podle metrik (CPU, paměť, vlastní metriky), vertikální doporučení, škálování řízené událostmi (fronty, Kafka, SQS).
- Strategie odolnosti replik: topologySpreadConstraints, PodDisruptionBudget, anti-affinity vůči nodům/zónám.
Observabilita: logy, metriky, trasování
- Strukturované logy: JSON s korelačním ID; sběr pomocí sidecaru/agenta (Fluent Bit), centralizace.
- Metriky: Prometheus/OpenMetrics; RED (Rate, Errors, Duration) a USE (Utilization, Saturation, Errors).
- Trasování: OpenTelemetry SDK + collector; distribuované trasování přes gateway/mesh pro sledování souvislostí mezi požadavky.
- Dashboardy a upozornění: SLO/SLA, error budget, upozorňování při latenci p95/p99 a chybovosti.
Service mesh pro provozní řízení
- Řízení provozu: canary, blue/green, traffic shifting, retry/backoff, circuit breaker.
- Zabezpečení: mTLS ve výchozím nastavení, autorizace prostřednictvím zásad na úrovni služby, policy as code.
- Telemetrie: jednotné metriky a trasování bez změn aplikačního kódu.
GitOps a řízení životního cyklu
- Jediný zdroj pravdy: repozitář manifestů; Argo CD/Flux sleduje změny a synchronizuje je do clusteru.
- Pracovní postup: kontrola PR, podepsané commity, progresivní nasazování (Argo Rollouts) a automatický rollback při zhoršení SLO.
- Více prostředí: overlays pro dev/stage/prod, promotion prostřednictvím PR; drift detection.
Strategie nasazování a testování
- RollingUpdate: výchozí strategie; sledujte
maxSurge/maxUnavailablea readiness gates. - Canary a blue/green: řízené směrování provozu, metriky dopadu, feature flags pro rychlé vypnutí funkcí.
- Provozní testy: smoke a synthetic testy po nasazení, experimenty s chaosem a cvičení DR.
Datová vrstva a stav v mikroslužbách
- Databáze pro každou službu: minimalizujte sdílené tabulky; migrační nástroje (Liquibase/Flyway), schémata jako kód.
- Operátoři: operátoři pro Postgres/Kafka/Redis automatizují HA, zálohování a upgrady; sledujte lag a latenci.
- Cache a zpracování událostí: Redis pro cache typu read-through, Kafka/NATS pro asynchronní komunikaci; exactly-once je nákladné – upřednostňujte idempotenci.
Síť a hraniční vrstvy
- Ingress/Gateway API: jednotné řízení na L7 s rate limit, WAF a zásadami TLS.
- API Gateway: autentizace/autorizace (OAuth2/OIDC), kvóty, transformace; kontrakty a verze.
- Řízení odchozí komunikace: egress gateway se seznamy povolených cílů; audit odchozí komunikace se třetími stranami.
Plánování, scheduler a dostupnost
- Affinity/anti-affinity: rozložení replik; ochrana před společným selháním.
- Taints/Tolerations: oddělení „horkých“ workloadů, dedikované nody pro citlivé služby.
- Automatické škálování nodů: Cluster Autoscaler + HPA; pozor na warm-up a bin packing.
Více clusterů, více regionů a multitenancy
- Topologie více clusterů: cluster pro každý region kvůli latenci a suverenitě; failover prostřednictvím DNS/Anycast/GSLB.
- Federace konfigurací: opakované nasazování přes GitOps a sdílené charty; meziregionální secrets a klíče.
- Tenancy: izolace pomocí namespace, dedikované network policies, oddělené identity a kvóty.
Soulad s předpisy, audit a řízení rizik
- Policy as Code: OPA Gatekeeper/Kyverno – zákaz
hostPath, povinné readOnlyFS, štítky a anotace pro trasování. - Auditní logy: audit Kubernetes + aplikační audit; uchovávání a korelace s oceněním incidentů.
- Správa dat: klasifikace dat, šifrování v klidovém stavu i při přenosu, data residency a zásady uchovávání.
Náklady a výkon
- Správná velikost prostředků: profilování, doporučení VPA, ladění request; vyhněte se škrcení CPU.
- Spot/Preemptible nody: nenáročné úlohy na levných instancích s PDB a řádným (graceful) ukončením.
- Optimalizace sítí a I/O: HTTP keep-alive, connection pooly, gzip/brotli podle profilu CPU.
Zálohování a obnova
- Zálohování objektů: nástroje typu Velero; pravidelné snapshoty PVC a etcd.
- Plány DR: RPO/RTO pro klíčové služby, replikace mezi regiony, cvičení obnovy.
Kontrolní seznam pro nasazení mikroslužeb na Kubernetes
- Obraz je podepsaný, obsahuje SBOM a neběží pod uživatelem
root; manifest splňuje PSS restricted. - Jsou definované kontroly
readiness/liveness/startuppro spolehlivé nasazování a samoopravu. - Requests/limits jsou nastavené; HPA a PDB jsou aktivní; repliky jsou rozloženy napříč zónami.
- NetworkPolicy (default-deny) a mTLS mezi službami; RBAC a minimální oprávnění.
- Logy/metriky/trasování se sbírají (OpenTelemetry); SLO a upozornění při latenci p95/p99 a chybovosti.
- GitOps (Argo/Flux) a automatický rollback; canary/blue-green podle metrik.
- Secrets jsou v KMS/Vault; rotace klíčů a audit přístupů.
- Zálohy PVC/etcd, postupy DR a pravidelné testování obnovy.
Závěr: platformové myšlení a disciplína
Úspěšné nasazení mikroslužeb na Kubernetes není jen otázkou kontejnerizace, ale také disciplíny při návrhu domén, zabezpečení, observabilitě a automatizaci. Kombinace deklarativní správy, GitOps, service meshe a promyšlené datové vrstvy poskytuje základ pro rychlá nasazení s vysokou spolehlivostí, předvídatelnými náklady a připraveností na růst i změny.
