Proč nasazovat mikroservisy na Kubernetes
Mikroservisní architektura rozděluje aplikaci na autonomní služby s jasnými rozhraními a nezávislým životním cyklem. Kubernetes (K8s) nabízí deklarativní orchestraci kontejnerů, škálování, samoléčení, izolaci a bohatý ekosystém nástrojů. V kombinaci s GitOps, service meshem a observabilitou umožňuje rychlé a bezpečné releasy s vysokou spolehlivostí a kontrolou nákladů.
Doménový návrh a kontrakty služeb
- Bounded Contexts: mapujte domény na samostatné služby; omezte sdílení schémat a databází.
- Kontrakty API: specifikace (OpenAPI/AsyncAPI), verzování (semver), backward compatibility, contract testing.
- Idempotence a konzistence: at-least-once zprávy vyžadují idempotentní zpracování; event sourcing a outbox pattern pro spolehlivé publikování událostí.
Kontejnerizace a image hygiena
- Dockerfile „least privilege“:
USERne-root,HEALTHCHECK,READONLYFS, minimal base (distroless/ubi-minimal). - Determinismus: image referujte digestem (
@sha256), tag immutability, reproducibilní buildy. - Supply chain: SBOM (CycloneDX/SPDX), sken CVE v CI/CD, podpisy (cosign) a atestace (SLSA).
Manifesty a balíčkování: Kustomize, Helm, Operators
- 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: kódované provozní znalosti (CRD + controller) pro databáze, fronty a middleware.
Základní objekty Kubernetes pro mikroservisy
- Deployment: deklaruje repliky, RollingUpdate, readiness/liveness pro self-healing.
- Service: stabilní virtuální IP a DNS;
ClusterIP(interní),NodePort,LoadBalancer. - Ingress/IngressClass: L7 routování, TLS, přepis cest a rate limit přes controller (NGINX, Traefik, HAProxy, Gateway API).
- ConfigMap & Secret: 12-factor konfigurace; envelope šifrování a CSI Secrets.
- StatefulSet: perzistentní identita podů, stabilní storage (PVC) pro stavové komponenty; s rozmyslem v mikroservisním světě.
Bezpečnost nasazení
- Pod Security Standards (PSS): profil restricted –
runAsNonRoot,readOnlyRootFilesystem,allowPrivilegeEscalation: false, seccomp RuntimeDefault. - RBAC a minimální práva: oddělené ServiceAccounts, Role a RoleBinding per-namespace.
- NetworkPolicy: default-deny a explicitní povolení mezi službami a do externí sítě.
- mTLS a identita služby: service mesh (Istio/Linkerd) nebo SPIFFE/SPIRE pro silnou identitu a šifrování L7.
- Secrets a klíče: krátké TTL, rotace, přístup přes volume místo env; integrace s Vault/KMS.
Škálování a hospodaření se zdroji
- Requests/Limits: definujte CPU/RAM pro férový scheduling a ochranu proti OOM; sledujte throttling.
- HPA/VPA/KEDA: horizontální škálování podle metrik (CPU, paměť, vlastní), vertikální doporučení, event-driven škálování (fronty, Kafka, SQS).
- Strategie replikační odolnosti: topologySpreadConstraints, PodDisruptionBudget, anti-affinity vůči nodům/zónám.
Observabilita: logy, metriky, trasování
- Strukturované logy: JSON s korelačním ID; sidecar/agent sběr (Fluent Bit), centralizace.
- Metriky: Prometheus/OpenMetrics; RED (Rate, Errors, Duration) a USE (Utilization, Saturation, Errors).
- Tracing: OpenTelemetry SDK + collector; distributed tracing přes gateway/mesh pro korespondenci požadavků.
- Dashboards a alerty: SLO/SLA, error budget, alerting na p95/p99 latenci a chybovost.
Service mesh pro provozní řízení
- Traffic management: canary, blue/green, traffic shifting, retry/backoff, circuit breaker.
- Bezpečnost: mTLS by default, autorizace politikami na úrovni služby, policy as code.
- Telemetrie: jednotné metriky a trace bez změny aplikačního kódu.
GitOps a řízení životního cyklu
- Single source of truth: repozitář manifestů; Argo CD/Flux sleduje a synchronizuje do clusteru.
- Workflow: PR review, podepsané commity, progressive delivery (Argo Rollouts) a automatický rollback při degradaci SLO.
- Více prostředí: overlays pro dev/stage/prod, promotion přes PR; drift detection.
Release strategie a testování
- RollingUpdate: výchozí stratégie; hlídejte
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 deploy, chaos experimenty a DR cvičení.
Datová vrstva a stav v mikroservisech
- Databáze per službu: minimalizace sdílených tabulek; migrační nástroje (Liquibase/Flyway), schémata jako kód.
- Operátoři: Postgres/Kafka/Redis operátoři pro automatizaci HA, záloh, upgradů; monitorujte lag a latenci.
- Cache a eventing: Redis pro read-through cache, Kafka/NATS pro asynchronii; exactly-once je drahé – preferujte idempotenci.
Síť a hraniční vrstvy
- Ingress/Gateway API: sjednocené L7 řízení s rate limit, WAF a TLS politikami.
- API Gateway: autentizace/autorizace (OAuth2/OIDC), kvóty, transformace; kontrakty a verze.
- Egress řízení: egress gateway s allowlisty; audit odchozí komunikace do třetích stran.
Plánování, scheduler a dostupnost
- Affinity/anti-affinity: rozložení replik; ochrana proti společnému selhání.
- Taints/Tolerations: oddělení „horkých“ workloadů, dedikované nody pro citlivé služby.
- Node autoscaling: Cluster Autoscaler + HPA; pozor na warm-up a bin packing.
Více clusterů, více regionů a multitenancy
- Multi-cluster topologie: per-region cluster pro latenci a suverenitu; failover přes DNS/Anycast/GSLB.
- Federace konfigurací: opakované nasazení přes GitOps a sdílené charty; meziregionální secrets a klíče.
- Tenancy: namespace izolace, dedikované network policies, oddělené identity a kvóty.
Compliance, audit a řízení rizik
- Policy as Code: OPA Gatekeeper/Kyverno – zákaz
hostPath, povinné readOnlyFS, labely a anotace pro trace. - Audit logy: Kubernetes audit + aplikační audit; uchování a korelace s naceněním incidentů.
- Data governance: klasifikace dat, šifrování at-rest/in-transit, data residency a retenční politiky.
Náklady a výkon
- Right-sizing: profilace, VPA návrhy, request tuning; vyhněte se CPU throttlingu.
- Spot/Preemptible nody: nenáročné práce na levných instancích s PDB a graceful shutdown.
- Optimalizace sítí a I/O: HTTP keep-alive, connection pooly, gzip/brotli dle profilu CPU.
Zálohování a obnova
- Backup objektů: nástroje typu Velero; pravidelné snapshoty PVC a etcd.
- DR plány: RPO/RTO pro klíčové služby, cross-region replikace, cvičení obnovy.
Kontrolní seznam pro nasazení mikroservis na Kubernetes
- Image je podepsaný, se SBOM a bez
root; manifest splňuje PSS restricted. - Definované
readiness/liveness/startuppro spolehlivý rollout a self-healing. - Requests/limits nastavené; HPA a PDB aktivní; rozložení replik napříč zónami.
- NetworkPolicy (default-deny) a mTLS mezi službami; RBAC a minimální práva.
- Logy/metry/trace sbírané (OpenTelemetry); SLO a alerty na p95/p99 a chybovost.
- GitOps (Argo/Flux) a automatický rollback; canary/blue-green podle metrik.
- Secrets v KMS/Vault; rotace klíčů a audit přístupů.
- Backup PVC/etcd, DR playbook a pravidelný test obnovy.
Závěr: platformové myšlení a disciplína
Úspěšné nasazení mikroservis na Kubernetes není jen o kontejnerizaci, ale o disciplíně v návrhu domén, bezpečnosti, observabilitě a automatizaci. Kombinace deklarativní správy, GitOps, service meshe a promyšlené datové vrstvy poskytuje základ pro rychlé releasy s vysokou spolehlivostí, predikovatelností nákladů a připraveností na růst i změny.