Vodič kroz DevOps na tri platforme
Vanilla Kubernetes, Tanzu i OpenShift
Ovaj vodič povezuje zajedničke cloud-native i DevOps temelje sa načinima na koje se oni primenjuju u tri različita okruženja: Vanilla Kubernetesu, VMware Tanzu platformi i Red Hat OpenShiftu. Gradivo prati put od kontejnerizacije, Kubernetes arhitekture i razmene podataka do radnih opterećenja, alata, storage-a, mreže, sigurnosti, operacionalizacije, GitOps-a, observability-ja i AI/ML scenarija.
Sadržaj je organizovan kao tehnički vodič i praktična mapa učenja. Svaka oblast najpre objašnjava zajednički koncept, a zatim ukazuje na razlike u alatima, administrativnom iskustvu i enterprise mogućnostima tri platforme. Praktikumi omogućavaju da se znanje proveri kroz instalaciju, konfiguraciju, deployment, monitoring, zaštitu i oporavak cloud-native aplikacija i infrastrukture.
Prvi deo: Uvod u Cloud-Native i DevOps svet
1. Kubernetes: Nastanak, razvoj i Geek biseri 2. Cloud Native Computing Foundation (CNCF) 3. Evolucija IT infrastrukture: Od monolita do mikroservisa 4. Pregled najčešćih izazova u DevOps transformaciji 5. Uloga CI/CD u modernom razvoju softvera 6. Savremeni IT trendovi: Serverless tehnologije, Edge Computing i AI/ML integracije 7. Digitalna transformacija infrastrukture: Observability, AIOps, GitOps i Policy-Driven pristup 8. Cloud Native Maturity Model – Na kom nivou zrelosti u cloud okruženju je Vaša kompanija?Drugi deo: Kontejnerizacija i Kubernetes
9. Kontejnerizacija aplikacija
9.1. Arhitekture aplikacija 9.2. Arhitektura kontejnera 9.3. Kontejnerizovana aplikacija 9.4. Razlike između tehnologija za kontejnerizaciju, orkestraciju i upravljanje kontejnerima 9.5. Vanilla Kubernetes – dobar temelj platforme za obuku10. Tehnologije za kontejnerizaciju i Container Runtime
10.1. Docker sa CLI primerima 10.2. containerd sa CLI primerima 10.3. CRI-O sa CLI primerima 10.4. Podman sa CLI primerima 10.5. Uporedna analiza: Docker, containerd, CRI-O i Podman 10.6. Container Runtimes u Kubernetesu: Pregled za Vanilla Kubernetes, Tanzu i OpenShift11. Tehnologije za orkestraciju i upravljanje kontejnerima
11.1. Alati i platforme koje omogućavaju kontejnerizaciju i orkestraciju 11.2. Orkestrator kontejnera i enterprise platforma 11.3. Poređenje platformi: open-source Vanilla Kubernetes sa enterprise OpenShift i Tanzu12. Kubernetes – sažetak arhitekture, servisa i komunikacije
12.1. Kubernetes i njegovi ključni zadaci u upravljanju kontejnerizovanim aplikacijama 12.2. Koncepti u Kubernetes klasteru: Node, Pod i kontejner 12.3. Servisi na Master Node-u u Kubernetesu 12.4. kubectl komunikacija, REST API i HTTPS13. Kubernetes: Odabir između cloud i on-premise rešenja
13.1. Odabir između cloud i on-premise rešenja za VMware Tanzu 13.2. Odabir između cloud i on-premise rešenja za OpenShift 13.3. Odabir između cloud i on-premise rešenja za Vanilla Kubernetes i alati za različita okruženja 13.4. Multi-cloud strategija i hibridni pristup za Tanzu, OpenShift i Vanilla Kubernetes 13.5. Multi-cloud strategija i hibridni pristup: Primena u zdravstvu, finansijama i telekomunikacijamaTreći deo: Razmena podataka (YAML & JSON) i specifičnosti Kubernetes terminologije
14. Podrška za razvoj i razmenu podataka (YAML & JSON)
14.1. Deklarativni vs. imperativni pristup u Kubernetesu 14.2. Formati za razmenu podataka: XML, JSON i drugi 14.3. Kubernetes: YAML vs. JSON 14.4. YAML zanimljivosti15. Pojmovi u Kubernetesu koji znače nešto drugo nego u opštem IT-u
15.1. Service u Kubernetesu: Apstrakcija za pristup Pod-ovima 15.2. Deployment u Kubernetesu: Objekat koji upravlja Pod-ovima 15.3. ReplicaSet u Kubernetesu: Održavanje broja Pod-ova 15.4. Node u Kubernetesu: Mašina koja pokreće Pod-ove 15.5. Cluster u Kubernetesu: Skup međusobno povezanih resursa 15.6. Namespace u IT-u i u Kubernetesu 15.7. Controller-i u Kubernetesu 15.8. Volume u Kubernetesu: Trajno skladište za Pod-ove 15.9. Secret u Kubernetesu: Bezbedno čuvanje osetljivih podataka 15.10. ConfigMap u Kubernetesu: Upravljanje parametrima za aplikacije 15.11. Label u Kubernetesu: Organizacija i selekcija resursa 15.12. Annotation u Kubernetesu: Dodatne informacije o resursima 15.13. Ingress u Kubernetesu 15.14. DaemonSet u Kubernetesu 15.15. Job i CronJob u KubernetesuČetvrti deo: Kubernetes: Temelji, resursi i arhitektura
16. Uvod: Control Plane vs. Data Plane17. Arhitektura Kubernetesa: Klasteri, čvorovi i Podovi
17.1. Komponente čvorova (Nodes) 17.2. Kubernetes Scheduler: Orkestracija radnih opterećenja 17.3. Node pool-ovi i raspodela resursa18. Ključne komponente klastera
18.1. Kubelet: Upravljanje čvorovima i životnim ciklusom Pod-ova 18.2. kube-proxy: Upravljanje mrežnom komunikacijom 18.3. Container Runtime (CRI): Pokretanje kontejnera 19. Kubernetes API Server u detalje 20. etcd: Distribuirana ključ-vrednost baza podataka 21. Kube Controller Manager vs. Cloud Controller Manager22. Admission Controller i Webhook-ovi
22.1. Kubernetes Request Processing Pipeline: Authentication, Authorization and Admission Control23. Podovi, Deployment-i i Init kontejneri
23.1. Podovi vs. Deployment-i 23.2. Init kontejneri 23.3. Infrastruktura kao kod: Uvod u Kustomize – CLI primeri i upotreba24. Servisi i umrežavanje u Kubernetesu
24.1. Tipovi servisa: ClusterIP, NodePort, LoadBalancer, Headless 24.2. ExternalName servis 24.3. Balansiranje opterećenja (LoadBalancer) 24.4. DNS u Kubernetesu 24.5. Network Policies 25. Namespaces i Label selektori26. Registri kontejnera i Image Management
26.1. Registri kontejnera: Suštinska komponenta modernog razvoja 26.2. Razlika: naziv image-a vs. kontejnera 27. Rad sa lokalnim klasterima: MicroK8s, Kind, Minikube 28. Redovna ažuriranja i održavanje klasteraPeti deo: Alati u Kubernetesu: upotreba i razlike kroz Vanilla Kubernetes, Tanzu i OpenShift
29. CLI alati i alati za administraciju Kubernetes klastera
Alati za upravljanje klasterima i kontekstima
29.1. kubectl 29.2. kubectx 29.3. kubens 29.4. kind 29.5. k9s 29.6. kubeadmAlati za rad sa kontejnerima i runtime-om
29.7. crictl 29.8. nerdctl 29.9. ctrAlati za paket menadžment i deployment
29.10. Helm 29.11. Helmfile 29.12. Kustomize 29.13. Skaffold 29.14. kptGUI i vizuelni alati
29.15. Lens 29.16. Kubernetes Dashboard 29.17. Octant 29.18. PortainerNapredni CLI alati za observability i debug
29.19. stern 29.20. kubetail 29.21. kubectl-debug 29.22. kubectl top 29.23. kube-ps1 29.24. Velero 29.25. Telepresence 29.26. Upotreba specifičnih CLI alata za administraciju na Vanilla Kubernetes, Tanzu i OpenShift platformama30. Alati za CI/CD i GitOps
30.1. Argo CD 30.2. Flux 30.3. Jenkins X 30.4. Tekton 30.5. Drone CI 30.6. GitLab CI/CD 30.7. Harness 30.8. Upotreba specifičnih CI/CD i GitOps alata na tri platforme31. Alati za monitoring i observability
31.1. Prometheus 31.2. Grafana 31.3. Loki 31.4. Promtail 31.5. Fluent Bit 31.6. Jaeger 31.7. OpenTelemetry 31.8. Upotreba specifičnih monitoring i observability alata na tri platforme32. Alati za sigurnost i compliance
32.1. OPA/Gatekeeper 32.2. Kyverno 32.3. kube-bench 32.4. Trivy 32.5. kubesec 32.6. Upotreba specifičnih sigurnosnih i compliance alata na tri platforme33. Alati za upravljanje resursima i HA konfiguraciju
33.1. Kured 33.2. Descheduler 33.3. Cluster Autoscaler 33.4. Karpenter 33.5. Upotreba specifičnih alata na tri platforme34. Alati za migraciju, backup i Disaster Recovery
34.1. Velero 34.2. Kopia 34.3. Stash by AppsCode 34.4. Upotreba specifičnih alata na tri platforme35. Platform Engineering & Developer Experience alati
35.1. Backstage 35.2. Tilt 35.3. Garden 35.4. DevSpace 35.5. Codefresh 35.6. Upotreba specifičnih Platform Engineering & Developer Experience alata na tri platformeŠesti deo: Radna opterećenja
36. Tipovi i vrste radnih opterećenja (Workloads) 37. Objekti koji iniciraju radno opterećenje38. Radna opterećenja u Tanzu, OpenShift i Kubernetes okruženjima
38.1. Podovi (Pods) 38.2. ReplicaSet 38.3. Deployments 38.4. StatefulSet 38.5. DaemonSet 38.6. Job i CronJob 38.7. CLI primeri specifičnih opterećenja u OpenShift, Tanzu i Vanilla Kubernetes okruženjima39. Mehanizmi za upravljanje radnim opterećenjem
39.1. Skaliranje Pod-ova u Kubernetesu 39.2. Upravljanje resursima: requests, limits, quotas 39.3. Scheduling i raspoređivanje: Node affinity, tolerations itd. 39.4. Health Checks: liveness i readiness probe 39.5. PodDisruptionBudget i kontinuitet servisa 39.6. Replikacija i oporavak 39.7. Monitoring i observability: Metrics Server, Prometheus40. Strategije deployment-a aplikacija
40.1. Rolling Update 40.2. Recreate 40.3. Blue-Green Deployment 40.4. Canary Deployment 40.5. A/B Testing 40.6. Shadow Deployment (Mirroring) 40.7. Progressive DeliverySedmi deo: Hands-On Deck: Kubernetes Praktikum
41. Uvod u Kubernetes praktikumIzgradnja Kubernetes klastera
42. Instalacija containerd-a 43. Instalacija Kubernetes alata 44. Inicijalizacija klastera na control-plane nodu 45. Instalacija CNI 46. Dodavanje worker čvorova 47. Provera klasteraOd aplikacije do DevOps platforme
48. DevOps mašina – alati za kontejnerizaciju i CI/CD 49. Primer kontejnerizacije aplikacije 50. Deployment Helm chart-ova 51. Metrics Server i Horizontal Pod Autoscaling – prvi praktični HPA scenario 52. Ingress Controller 53. Volumes: hostPath, NFS, CSI 54. RBAC, Namespaces i NetworkPolicies 55. GitOps sa Argo CD 56. Monitoring sa Prometheus i GrafanaProduction operacije
57. Logovanje u Kubernetes hibridnim arhitekturama 58. CI/CD sa staging i production okruženjima 59. Canary Deployment sa Argo Rollouts 60. Sigurnost i kontrola pristupa u Kubernetesu 61. Podešavanje storage sistema za rad sa persistentnim volumenima 62. Backup i Restore u Kubernetes okruženju 63. Napredno autoskaliranje: HPA v2, VPA i Cluster Autoscaler 64. Test performansi aplikacijaZavršni integracioni praktikum
65. DevOps serijal: Korak po korakOsmi deo: Storage, Networking i Sigurnost u Kubernetesu
66. STORAGE u Kubernetesu
66.1. Kubernetes Storage model: Volumes, PV, PVC i StorageClass 66.2. CSI (Container Storage Interface): arhitektura, drajveri i storage backend-i 66.3. Statičko i dinamičko provisionovanje, Volume Expansion i Volume Cloning 66.4. Ephemeral, Generic Ephemeral i Projected Volumes 66.5. VolumeSnapshot, VolumeGroupSnapshot, Backup, Restore i Disaster Recovery67. NETWORKING u Kubernetesu
67.1. Kubernetes Networking model – detaljan pregled 67.2. Pod mreža: Pod-to-Pod komunikacija, CIDR i routing 67.3. CNI plugini i data plane: Calico, Cilium, Flannel, Antrea i eBPF 67.4. Antrea: Agent, Controller i primena u Tanzu okruženjima 67.5. Service Networking: ClusterIP, NodePort, LoadBalancer, ExternalName i Headless Service 67.6. kube-proxy, EndpointSlice i Service backend-i 67.7. DNS i Service Discovery: CoreDNS u Kubernetesu 67.8. Pristup aplikacijama i Podovima iz klastera i van klastera 67.9. Ingress i Ingress Controller – postojeći model i ograničenja 67.10. Gateway API – savremeni Kubernetes model za upravljanje saobraćajem 67.11. NetworkPolicy: Ingress, Egress, Default-Deny i praktični primeri 67.12. Egress saobraćaj: NAT, SNAT/DNAT i Egress Gateway 67.13. Service Mesh: Istio, Linkerd, Sidecar i Ambient modeli68. SIGURNOST u Kubernetesu
68.1. Kubernetes Security model: Authentication, Authorization i Admission Control 68.2. PKI i TLS sertifikati Kubernetes klastera 68.3. TLS za aplikacije: cert-manager, ACME, Ingress/Gateway i automatska obnova 68.4. ServiceAccount, tokeni, OIDC i Workload Identity 68.5. RBAC i princip najmanjih privilegija 68.6. SecurityContext, Linux Capabilities, seccomp, AppArmor i User Namespaces 68.7. Pod Security Standards (PSS) i Pod Security Admission (PSA) 68.8. Kubernetes Secrets: CLI i bezbedne prakse 68.9. Encryption at Rest i KMS v2 68.10. Spoljno upravljanje tajnama: Vault i Secrets Store CSI Driver 68.11. Privatna PKI, Self-Signed CA i Trust Chain 68.12. trust-manager i upravljanje CA Trust Bundle-ovima 68.13. Keycloak, OIDC i eksterni Identity Provider-i 68.14. Admission politike: CEL, ValidatingAdmissionPolicy, MutatingAdmissionPolicy, OPA/Gatekeeper i Kyverno 68.15. Software Supply Chain Security: Image Scanning, SBOM, potpisi i Provenance 68.16. Runtime Security, Audit Logging i Kubernetes HardeningDeveti deo: Operacionalizacija i održavanje cloud-native aplikacija i infrastrukture
69. Administracija i pristup klasteru
69.1. Pristup i dijagnostika Kubernetes čvorova: SSH, kubectl debug i platform-native pristup 69.2. Upravljanje korisnicima, kontekstima i kubeconfig fajlovima 69.3. Pristup kontrolnoj ravni i API serveru 69.4. Backup i Restore etcd baze podataka 69.5. Skaliranje i nadogradnja klastera 69.6. Planiranje nadogradnje: Version Skew, API Deprecations i kompatibilnost verzija 69.7. Održavanje čvorova: cordon, drain, uncordon i PodDisruptionBudget 69.8. Health Check i troubleshooting čvorova i komponenti 69.9. Monitoring performansi čvorova 69.10. kubeadm, K3s i RKE2: bootstrap alat i Kubernetes distribucije 69.11. Cluster API (CAPI): deklarativno upravljanje lifecycle-om klastera 69.12. Rad sa kubectl, k9s i shell-based alatima 69.13. Pristup višestrukim klasterima kroz kubeconfig i kontekste70. Arhitektura aplikacija i mikroservisa
70.1. Keširanje i baze podataka sa replikacijom i šardovanjem 70.2. Envoy Proxy za mikroservisne arhitekture 70.3. Service Mesh vs. API Gateway 70.4. Sidecar vs. sidecarless i ambient Service Mesh arhitekture 70.5. Operacionalni workload patterns: stateless, stateful i operator-managed aplikacije 70.6. Horizontal i Vertical Pod Autoscaler (HPA/VPA) 70.7. KEDA: Event-Driven Autoscaling Kubernetes aplikacija 70.8. Node Autoscaling: Cluster Autoscaler i Karpenter 70.9. Service Discovery, DNS i komunikacija između mikroservisa 70.10. Visoka dostupnost: PodDisruptionBudget, Topology Spread i Graceful Shutdown 70.11. Primeri mikroservisnih aplikacija: Bookinfo, Online Boutique i Astronomy Shop 70.12. CI i GitOps CD: Jenkins, Tekton i Argo CD 70.13. Progressive Delivery: Canary, Blue-Green i Argo Rollouts 70.14. Resilience patterns: Circuit Breaker, Retries, Timeouts, Fallback, Backpressure i Idempotency71. Upravljanje identitetima i pristupom (IAM & Security Integration)
71.1. Keycloak: Identity and Access Management za cloud-native okruženja 71.2. trust-manager: upravljanje CA Trust Bundle-ovima 71.3. Pinniped i Identity Management u Tanzu okruženju 71.4. Upravljanje tajnama pomoću HashiCorp Vault-a 71.5. Kubernetes Secrets: bezbedno upravljanje tajnama 71.6. PKI i Self-Signed sertifikati u cloud-native okruženju 71.7. K3s PKI: CA, sertifikati, rok važenja i rotacija 71.8. cert-manager: automatizacija TLS sertifikata 71.9. Integracija sa OIDC provajderima 71.10. RBAC i princip najmanjeg pristupa (Least Privilege) 71.11. mTLS komunikacija između servisa 71.12. External Secrets Operator (ESO) 71.13. Native Admission Policies sa CEL-om, Gatekeeper i Kyverno 71.14. Workload Identity i IAM federacija na nivou platforme i providera 71.15. Pod Security Standards (PSS) i Pod Security Admission (PSA) 71.16. SPIFFE/SPIRE i identitet radnih opterećenja72. Monitoring, observability i logovanje
72.1. Prometheus – monitoring modernih aplikacija 72.2. Alertmanager – upravljanje alertima i notifikacijama 72.3. PromQL – uvod i Cheat Sheet 72.4. Grafana – vizualizacija metrika i Observability dashboardi 72.5. OpenTelemetry Collector: prijem, obrada i eksport telemetrije 72.6. Fluentd, Fluent Bit, Vector i Grafana Alloy: prikupljanje logova 72.7. Elastic, OpenSearch i Loki: skladištenje i pretraga logova 72.8. Kibana, OpenSearch Dashboards i Grafana: analiza i vizualizacija logova 72.9. OpenTelemetry i distribuirani tracing: Jaeger v2 i Tempo 72.10. Alert Routing i On-Call: Slack, PagerDuty, Jira Service Management i Webhooks 72.11. Incident Management u DevOps i SRE timovima 72.12. Alert Fatigue i kreiranje pametnih pravila 72.13. SLA, SLO i SLI: Error Budget i Burn-Rate Alerting 72.14. Integracija Prometheus-a sa Service Mesh-om 72.15. Blackbox i Synthetic Monitoring 72.16. Integracija metrika i observability-ja sa CI/CD pipeline-ovima 72.17. Custom Metrics i instrumentacija aplikacijaDeseti deo: Napredne tehnike: AI/ML, GitOps i performanse u Kubernetesu
73. AI/ML u Kubernetes okruženju
73.1. AI/ML i GenAI workload-i na Kubernetesu: arhitektura i lifecycle 73.2. Kubeflow: Pipelines, Training, Model Registry i AI lifecycle na Kubernetesu 73.3. MLflow: eksperimenti, Model Registry, evaluacija i AI observability 73.4. KServe: skalabilni predictive i generative AI inference 73.5. GPU workload-i u Kubernetesu: GPU Operator, DRA, MIG i GPU sharing 73.6. Kueue: queueing, kvote i scheduling AI/ML workload-a 73.7. Distribuirani AI/ML training: Kubeflow Trainer, multi-node i multi-GPU workload-i 73.8. KubeRay i Ray: distribuirani AI workload-i na Kubernetesu 73.9. Resource Optimization za AI workload-e: CPU, memorija, GPU, scheduling i autoscaling 73.10. AI inference runtime-i: vLLM, NVIDIA Triton, TensorRT-LLM i TensorFlow Serving 73.11. LLM inference na Kubernetesu: batching, KV cache i multi-GPU serving74. GitOps i automatizacija deployment procesa
74.1. Šta je GitOps? Principi, deklarativno stanje i reconciliation 74.2. FluxCD i Argo CD: GitOps alati za Kubernetes 74.3. GitOps za AI/ML pipeline-ove, modele i inference servise 74.4. GitOps sa Helm-om, Kustomize-om i OCI artifactima 74.5. Integracija CI pipeline-a sa GitOps CD procesom 74.6. Reconciliation, Drift Detection i Desired vs. Live State 74.7. Rollback, Roll-Forward i Git History u GitOps okruženju 74.8. Multi-Cluster i Multi-Environment GitOps 74.9. Automatizacija Image Update-a u GitOps procesu 74.10. Progressive Delivery: Canary, Blue-Green i Argo Rollouts 74.11. Bezbednost GitOps procesa: Secrets, potpisivanje artifakata i Policy Enforcement75. Optimizacija performansi i skaliranja
75.1. Resource Requests, Limits, QoS i Rightsizing 75.2. CPU, Memory i NUMA-aware optimizacija 75.3. In-Place Resize i dinamičko upravljanje resursima 75.4. gRPC performanse: Streaming, Load Balancing i Observability 75.5. GPU Performance: MIG, Time-Slicing i Dynamic Resource Allocation 75.6. Load Balancing, Batching i Request Scheduling za AI inference 75.7. Traffic Management za AI inference: Routing, Canary i Model Versions 75.8. Autoscaling inference workload-a na osnovu metrika 75.9. LLM Performance: TTFT, Token Throughput, KV Cache i Latency 75.10. Multi-Node i Multi-GPU inference 75.11. AI Inference Observability: Latency, Throughput, GPU i Token metrike 75.12. Model Drift, AI Quality Monitoring i automatizovane evaluacije 75.13. Performance Testing, Benchmarking i Capacity PlanningJedanaesti deo: Geek anegdote iz sveta DevOps-a, Kubernetes-a i open-source kulture
Geek anegdote iz sveta DevOps-a, Kubernetes-a i open-source kultureZaključak