Belajar Kubernetes #

Web ini merupakan portal pembelajaran terstruktur yang dirancang untuk mendampingi engineer memahami ekosistem Kubernetes secara mendalam. Portal ini tidak hanya membahas teori dasar, melainkan juga menyajikan praktik terbaik (best practices) serta dokumentasi arsitektur produksi yang siap diimplementasikan di dunia nyata. Halaman awal ini berfungsi sebagai kompas utama untuk mengarahkan perjalanan belajar kita di seluruh materi dokumentasi yang tersedia.

Dokumentasi ini disusun secara bertahap, runut, dan modular. Dengan pendekatan ini, materi yang disajikan dapat dimanfaatkan secara optimal baik oleh pemula yang baru bermigrasi dari arsitektur aplikasi tradisional, maupun oleh engineer berpengalaman yang membutuhkan referensi teknis mendalam untuk mengoptimalkan keandalan (reliability), keamanan (security), serta efisiensi biaya (cost efficiency) cluster skala besar di lingkungan produksi.


Mengapa Kita Harus Menguasai Kubernetes? #

Di era modern software engineering, tuntutan untuk merilis fitur baru dengan cepat tanpa mengorbankan stabilitas sistem telah mendorong pergeseran paradigma infrastruktur secara masif. Kita telah melewati masa di mana aplikasi di-deploy langsung di atas server fisik (bare metal), berpindah ke era virtualisasi dengan Virtual Machine (VM), hingga akhirnya mengadopsi teknologi kontainerisasi menggunakan Docker atau container runtime lainnya.

Kontainer memecahkan masalah portabilitas dengan membungkus aplikasi beserta seluruh dependensinya ke dalam satu unit independen. Namun, ketika jumlah kontainer berkembang dari puluhan menjadi ratusan atau ribuan di lingkungan produksi, tantangan baru pun muncul:

  • Bagaimana cara mendistribusikan kontainer ini ke puluhan mesin server secara efisien?
  • Bagaimana memastikan kontainer yang mati otomatis berjalan kembali (self-healing)?
  • Bagaimana cara memperbarui versi aplikasi tanpa menyebabkan downtime bagi pengguna?
  • Bagaimana cara mengelola alokasi kapasitas CPU, memory, storage, serta komunikasi jaringan antar kontainer?

Di sinilah Kubernetes (sering disingkat K8s) hadir sebagai standar industri (de facto standard) untuk penataan kontainer (container orchestration). Dengan menguasai Kubernetes, kita tidak hanya belajar menggunakan sebuah alat (tool), tetapi juga mengadopsi metodologi pengelolaan infrastruktur berbasis deklaratif (declarative infrastructure), di mana kita mendefinisikan state sistem yang diinginkan dan membiarkan Kubernetes bekerja secara otomatis untuk mencapai dan menjaga state tersebut.

Meskipun menawarkan solusi yang sangat kuat, Kubernetes terkenal memiliki kurva pembelajaran yang cukup curam (steep learning curve). Dokumentasi ini dirancang khusus untuk memecah kompleksitas tersebut agar lebih mudah dicerna tanpa mengurangi kedalaman materi teknis yang diperlukan di tingkat produksi.


Filosofi Penulisan & Pembelajaran Portal Ini #

Dalam menyusun setiap artikel di portal ini, kita memegang teguh tiga filosofi penulisan utama yang membedakan dokumentasi ini dari panduan teknis biasa:

1. Mengapa Sebelum Bagaimana #

Kita percaya bahwa memahami latar belakang masalah jauh lebih penting daripada sekadar menyalin perintah terminal atau manifes YAML. Sebelum kita membahas cara menulis manifes Deployment atau mengonfigurasi Ingress, setiap artikel akan menjelaskan terlebih dahulu masalah arsitektur apa yang sedang kita selesaikan, apa konsekuensinya jika masalah tersebut diabaikan, dan mengapa solusi dekoratif Kubernetes menjadi pendekatan yang paling elegan.

2. Pendekatan Berbasis Anti-Pattern #

Menunjukkan cara yang salah di dunia nyata sering kali memberikan efek pembelajaran yang jauh lebih kuat daripada hanya memperlihatkan dokumentasi cara yang benar. Oleh karena itu, hampir di setiap bab, kita menyandingkan contoh Anti-Pattern (kesalahan konfigurasi yang umum dilakukan namun berbahaya di produksi) dengan Solusi Terbaik (Best Practice). Pola ini membantu kita mendeteksi kesalahan pada cluster yang sudah ada dan mencegahnya terulang di kemudian hari.

3. Komprehensif dan Modular #

Setiap artikel ditulis dengan target pembahasan yang mendalam (minimal 15.000 karakter) agar topik yang dibahas tuntas dan tidak menggantung. Meskipun mendalam, struktur penulisan dirancang secara modular. Kita tidak harus membaca seluruh portal dari awal hingga akhir dalam satu waktu; kita dapat langsung menuju bab spesifik untuk dijadikan panduan referensi cepat saat menghadapi masalah nyata di pekerjaan sehari-hari.


Peta Jalan Pembelajaran (Learning Roadmap) #

Untuk mempermudah navigasi, alur belajar di portal ini telah dipetakan ke dalam struktur logis yang bertahap. Diagram alir berikut menunjukkan urutan domain pembelajaran yang direkomendasikan, mulai dari konsep paling dasar hingga strategi manajemen produksi tingkat lanjut:

flowchart TD
    subgraph Fase_1 ["Fase 1: Fondasi Konseptual"]
        direction TB
        A["Basic (Weight 10)"] --> B["Concept (Weight 20)"]
        B --> C["Architecture (Weight 30)"]
    end

    subgraph Fase_2 ["Fase 2: Implementasi Workload & Storage"]
        direction TB
        D["Workload & Scheduling (Weight 40)"] --> E["Storage (Weight 50)"]
    end

    subgraph Fase_3 ["Fase 3: Jaringan & Konfigurasi"]
        direction TB
        F["Networking (Weight 60)"] --> G["Configuration & Secret (Weight 70)"]
    end

    subgraph Fase_4 ["Fase 4: Rilis & Pengamanan"]
        direction TB
        H["Deployment Strategy (Weight 80)"] --> I["Security (Weight 90)"]
    end

    subgraph Fase_5 ["Fase 5: Operasional Produksi Skala Besar"]
        direction TB
        J["Observability (Weight 100)"] --> K["Ecosystem & Tooling (Weight 110)"]
        K --> L["Production Strategy (Weight 120)"]
    end

    Fase_1 --> Fase_2
    Fase_2 --> Fase_3
    Fase_3 --> Fase_4
    Fase_4 --> Fase_5

    style Fase_1 stroke:#0288d1,stroke-width:2px
    style Fase_2 stroke:#388e3c,stroke-width:2px
    style Fase_3 stroke:#f57c00,stroke-width:2px
    style Fase_4 stroke:#d32f2f,stroke-width:2px
    style Fase_5 stroke:#7b1fa2,stroke-width:2px

Panduan Belajar Berdasarkan Persona #

Tanggung jawab di sekitar infrastruktur Kubernetes berbeda-beda tergantung pada peran pekerjaan kita. Untuk menghemat waktu, gunakan panduan rute belajar yang disesuaikan dengan kebutuhan spesifik peran profesional kita berikut ini:

🧑‍💻 Rute Software Engineer (Application Developer) #

Sebagai pengembang aplikasi, fokus utama kita adalah bagaimana menulis kode yang “cloud-native friendly”, membungkusnya ke dalam kontainer, serta mendeploy-nya dengan aman tanpa mengganggu stabilitas sistem keseluruhan.

  • Fokus Utama:
    • Workload & Scheduling untuk memahami siklus hidup Pod, cara kerja resource request/limit, serta perbedaan Deployment dan StatefulSet.
    • Configuration & Secret untuk memisahkan konfigurasi dari kode aplikasi menggunakan ConfigMap dan mengamankan kredensial dengan Secret.
    • Deployment Strategy untuk memahami mekanisme rilis aplikasi tanpa downtime (seperti Rolling Update atau Canary) serta penanganan migrasi database.
    • Observability (Bab Health Check) untuk mengimplementasikan Liveness, Readiness, dan Startup probes secara benar di dalam aplikasi kita.

🧑‍🔧 Rute DevOps & Platform Engineer #

Jika kita bertanggung jawab untuk merancang, membangun, dan memelihara platform internal organisasi, kita harus memahami setiap detail mekanisme internal Kubernetes untuk memastikan keandalan, skalabilitas, dan efisiensi biaya infrastruktur.

  • Fokus Utama:
    • Architecture untuk menguasai interaksi internal komponen Control Plane dan Worker Node.
    • Networking & Storage sebagai dua pilar terpenting dalam pengelolaan infrastruktur terdistribusi.
    • Security untuk mengamankan akses cluster via RBAC, membatasi hak akses container via Pod Security Standards, dan membatasi traffic dengan Network Policy.
    • Observability untuk membangun infrastruktur monitoring terpusat (Prometheus, Grafana, Jaeger, Loki).
    • Production Strategy untuk mengelola kapasitas resource secara otomatis melalui autoscaling dan merancang strategi Disaster Recovery.

🧑‍🏫 Rute Tech Lead, Architect, & Engineering Manager #

Peran kepemimpinan teknis membutuhkan pemahaman tingkat tinggi mengenai arsitektur, trade-off antar solusi, estimasi biaya, serta kelayakan organisasi sebelum mengadopsi suatu teknologi.


Eksplorasi 12 Domain Utama: Detail Kurikulum & Artikel #

1. Basic (Weight: 10) #

Section ini meletakkan batu pertama dalam memahami teknologi orkestrasi kontainer. Kita akan mempelajari sejarah perkembangan infrastruktur dari era bare-metal hingga microservices, menganalisis masalah-masalah nyata yang melahirkan Kubernetes, membandingkannya dengan solusi alternatif (seperti Nomad atau Docker Swarm), dan yang terpenting: menggunakan kerangka keputusan (decision framework) untuk menentukan kapan sistem kita siap bermigrasi ke Kubernetes.

Daftar materi pembelajaran:

  • Apa itu Kubernetes? (Weight: 10) — Pengenalan Kubernetes sebagai container orchestrator — apa yang dikerjakannya, mengapa diciptakan, komponen utama yang dilibatkan, dan gambaran besar cara kerjanya.
  • Problem yang Diselesaikan (Weight: 20) — Masalah-masalah nyata yang mendorong lahirnya Kubernetes — operasional container di skala besar, deployment manual, kegagalan tanpa pemulihan otomatis, dan kompleksitas infrastruktur modern.
  • Alternatif Kubernetes (Weight: 30) — Perbandingan Kubernetes dengan alternatif container orchestration — Docker Swarm, Nomad, ECS, dan platform managed — beserta decision tree untuk memilih yang tepat sesuai skala dan kebutuhan.
  • Kapan Dibutuhkan? (Weight: 40) — Panduan memutuskan kapan Kubernetes worth it dan kapan tidak — tanda-tanda kesiapan organisasi, sinyal bahwa infrastruktur mulai bermasalah, dan kapan alternatif yang lebih simpel lebih tepat.

2. Concept (Weight: 20) #

Sebelum menyentuh manifes YAML yang rumit, kita harus memiliki model mental (mental model) yang benar tentang cara kerja Kubernetes secara konseptual. Bab ini mengupas konsep dasar di dalam Kubernetes, mulai dari definisi kluster, peran node, anatomi dasar Pod sebagai unit komputasi terkecil, hingga pemahaman mendalam tentang konsep deklaratif serta kontrak kolaborasi infrastruktur antara tim pengembang dengan tim operasi.

Daftar materi pembelajaran:

  • Cluster (Weight: 50) — Konsep cluster di Kubernetes — apa itu cluster, komponen penyusunnya, bagaimana control plane dan worker node berinteraksi, serta pola deployment cluster untuk berbagai skenario.
  • Node (Weight: 60) — Konsep Node di Kubernetes — perbedaan control plane node dan worker node, komponen yang berjalan di setiap node, cara Kubernetes memonitor kondisi node, dan pengelolaan node dalam cluster.
  • Pod (Weight: 70) — Konsep Pod di Kubernetes — unit deployment terkecil, anatomi Pod, siklus hidup, pola single vs multi-container, dan alasan Pod bukan container itu sendiri.
  • Konfigurasi (Weight: 80) — Konsep konfigurasi di Kubernetes — pendekatan declarative vs imperative, cara Kubernetes menyimpan dan menerapkan konfigurasi, ConfigMap, Secret, dan prinsip separation of configuration dari kode.
  • Kontrak Infrastruktur (Weight: 90) — Konsep kontrak infrastruktur di Kubernetes — bagaimana developer dan platform team berbagi tanggung jawab, resource request & limit sebagai kontrak resource, health check sebagai kontrak ketersediaan, dan label sebagai kontrak identitas.

3. Architecture (Weight: 30) #

Bab ini merupakan ruang bedah arsitektur untuk melihat jeroan dan mekanisme internal sistem Kubernetes. Kita akan mengeksplorasi secara detail komponen-komponen penting di dalam Control Plane (seperti API Server, Scheduler, Controller Manager, dan basis data konsistensi Etcd) serta komponen-komponen di dalam Worker Node (kubelet, kube-proxy, dan container runtime). Memahami alur kerja internal ini sangat krusial untuk melakukan diagnosis masalah tingkat lanjut.

Daftar materi pembelajaran:

  • Overview (Weight: 100) — Gambaran menyeluruh arsitektur Kubernetes — bagaimana control plane dan worker node bekerja bersama, alur request dari kubectl hingga container berjalan, dan prinsip desain yang mendasari seluruh sistem.
  • Control Plane (Weight: 110) — Anatomi control plane Kubernetes secara mendalam — peran setiap komponen, bagaimana API Server memproses request, cara Controller Manager menjalankan reconciliation loop, dan desain high availability control plane.
  • Worker Node (Weight: 120) — Anatomi worker node Kubernetes secara mendalam — cara kerja kubelet, peran kube-proxy dalam networking, container runtime interface, dan bagaimana worker node berinteraksi dengan control plane.
  • API Server (Weight: 130) — Cara kerja kube-apiserver secara mendalam — pipeline request, mekanisme autentikasi dan otorisasi, admission controllers, watch mechanism, dan pola interaksi yang perlu dipahami developer dan operator.
  • Scheduler (Weight: 140) — Cara kerja kube-scheduler secara mendalam — proses filtering dan scoring, faktor-faktor yang mempengaruhi keputusan scheduling, node affinity dan taint/toleration, serta pola scheduling lanjutan untuk kebutuhan produksi.
  • Controller Manager (Weight: 150) — Cara kerja kube-controller-manager secara mendalam — pola reconciliation loop, controller-controller utama yang berjalan di dalamnya, leader election untuk HA, dan cara menulis custom controller untuk kebutuhan spesifik.
  • Etcd & Cluster Consistency (Weight: 160) — Peran Etcd sebagai sumber kebenaran cluster Kubernetes — cara kerja Raft consensus, model konsistensi eventual vs strong consistency, strategi backup dan restore, serta implikasi Etcd terhadap performa dan ketersediaan cluster.

4. Workload & Scheduling (Weight: 40) #

Di sini kita mulai mempraktikkan bagaimana menjalankan aplikasi di Kubernetes. Pembahasan meliputi siklus hidup kontainer, penggunaan init container dan sidecar pattern, hingga kontroler replikasi seperti ReplicaSet, Deployment, StatefulSet, DaemonSet, dan Job. Kita juga akan membahas secara mendalam bagaimana scheduler memutuskan penempatan beban kerja berdasarkan alokasi resource requests/limits dan kelas Quality of Service (QoS).

Daftar materi pembelajaran:

  • Anatomi Pod (Weight: 170) — Anatomi Pod Kubernetes secara lengkap — struktur manifest, metadata dan label, spec container, resource requests dan limits, volume, restart policy, dan field-field penting yang sering diabaikan.
  • Single & Multi Container (Weight: 180) — Kapan menggunakan single container Pod vs multi-container Pod — trade-off, pola yang valid, cara container berbagi network dan storage dalam satu Pod, dan kesalahan umum dalam memutuskan batas Pod.
  • Init Container (Weight: 190) — Init container di Kubernetes — cara kerja, perbedaan dengan container biasa, use case yang tepat seperti dependency check dan database migration, serta pola penulisan init container yang robust.
  • Sidecar Pattern (Weight: 200) — Sidecar pattern di Kubernetes — konsep, use case konkret seperti service mesh dan log shipping, cara sidecar berbagi network dan storage dengan container utama, serta kapan sidecar tepat digunakan dan kapan tidak.
  • ReplicaSet (Weight: 210) — ReplicaSet di Kubernetes — cara kerjanya menjaga jumlah replica Pod, hubungannya dengan Deployment, selector dan ownership Pod, serta kapan perlu berinteraksi langsung dengan ReplicaSet.
  • Deployment (Weight: 220) — Deployment di Kubernetes — struktur manifest, strategi RollingUpdate dan Recreate, cara melakukan update dan rollback, scaling, serta pola operasional Deployment yang benar untuk aplikasi stateless di produksi.
  • StatefulSet (Weight: 230) — StatefulSet di Kubernetes — perbedaan dengan Deployment, identitas stabil Pod, ordered deployment dan scaling, penggunaan PersistentVolumeClaim per Pod, serta kapan StatefulSet tepat digunakan untuk aplikasi stateful.
  • DaemonSet (Weight: 240) — DaemonSet di Kubernetes — cara kerja, use case untuk node-level agent seperti log collector dan monitoring, update strategy, penggunaan tolerations untuk DaemonSet di semua node termasuk control plane, dan kapan DaemonSet tepat digunakan.
  • Job & CronJob (Weight: 250) — Job dan CronJob di Kubernetes — perbedaan dengan Deployment, konfigurasi completions dan parallelism, failure handling dan backoff, CronJob untuk task terjadwal, serta pola yang benar untuk batch processing di Kubernetes.
  • Scheduler Workflow (Weight: 260) — Alur kerja scheduler Kubernetes secara end-to-end — dari Pod dibuat hingga berjalan di node, antrian scheduling, filtering dan scoring pipeline, binding, dan cara mendiagnosis masalah scheduling di produksi.
  • Resource Request & Limit (Weight: 270) — Resource request dan limit di Kubernetes — perbedaan semantik dan implikasinya terhadap scheduling dan runtime, cara menentukan nilai yang tepat, LimitRange untuk default cluster, ResourceQuota untuk batas namespace, dan anti-pattern yang harus dihindari.
  • QoS Class (Weight: 280) — Quality of Service class di Kubernetes — tiga kelas Guaranteed, Burstable, dan BestEffort, bagaimana QoS ditentukan secara otomatis dari resource request dan limit, urutan eviction saat node kehabisan resource, dan implikasi desain untuk produksi.

5. Storage (Weight: 50) #

Mengelola data persisten dalam sistem terdistribusi adalah salah satu tantangan terbesar di Kubernetes. Bab ini mengupas tuntas perbedaan penyimpanan sementara (ephemeral) dan persisten (persistent storage). Kita akan mempelajari siklus hidup volume, relasi antara PersistentVolume (PV), PersistentVolumeClaim (PVC), dan StorageClass, serta mendalami praktik terbaik menjalankan basis data (database) di atas Kubernetes beserta strategi backup dan restore-nya.

Daftar materi pembelajaran:

  • Ephemeral vs Persistent Storage (Weight: 290) — Perbedaan mendasar ephemeral dan persistent storage di Kubernetes — kapan data boleh hilang, kapan harus bertahan, jenis-jenis volume yang tersedia, dan cara memilih pendekatan yang tepat untuk setiap jenis workload.
  • Volume (Weight: 300) — Volume di Kubernetes — jenis-jenis volume yang tersedia, cara mendefinisikan dan me-mount volume di Pod, perbedaan antara volume berbasis node dan volume berbasis cloud, serta pola penggunaan volume yang umum di produksi.
  • Storage Problem di Distributed Systems (Weight: 310) — Tantangan unik storage di distributed systems — konsistensi data saat Pod berpindah node, shared vs per-instance storage, split-brain pada database terdistribusi, dan mengapa storage adalah bagian paling kompleks dari menjalankan workload stateful di Kubernetes.
  • PersistentVolume (Weight: 320) — PersistentVolume di Kubernetes — apa itu PV, cara mendefinisikan PV secara manual (static provisioning), field-field penting seperti capacity dan accessModes, reclaim policy, serta lifecycle PV dari Available hingga Released.
  • PersistentVolumeClaim (Weight: 330) — PersistentVolumeClaim di Kubernetes — cara developer meminta storage tanpa tahu detail infrastruktur, proses binding PVC ke PV, menggunakan PVC di Pod, serta cara mendiagnosis PVC yang stuck di Pending.
  • StorageClass (Weight: 340) — StorageClass di Kubernetes — peran sebagai template dynamic provisioning, parameter provisioner, reclaim policy, volume binding mode, serta cara mendefinisikan StorageClass untuk berbagai backend storage di cloud dan on-premise.
  • Database di Kubernetes (Weight: 350) — Pertimbangan menjalankan database di Kubernetes — kapan masuk akal, kapan tidak, pola StatefulSet untuk database, operator pattern untuk database management, dan perbandingan self-managed vs managed database service.
  • StatefulSet + PVC (Weight: 360) — Kombinasi StatefulSet dan PVC di Kubernetes — cara volumeClaimTemplates bekerja, lifecycle PVC saat StatefulSet di-scale dan dihapus, pola untuk data migration, dan troubleshooting masalah umum StatefulSet dengan persistent storage.
  • Backup & Restore (Weight: 370) — Strategi backup dan restore storage di Kubernetes — backup PVC dengan Volume Snapshot, backup level aplikasi vs level storage, tool seperti Velero untuk backup cluster, dan prosedur restore yang bisa diandalkan di produksi.
  • Dynamic Provisioning (Weight: 380) — Dynamic provisioning di Kubernetes — cara StorageClass dan CSI driver bekerja bersama untuk membuat PV secara otomatis, alur lengkap dari PVC hingga volume tersedia, serta konfigurasi dan troubleshooting dynamic provisioning di cloud dan on-premise.
  • Anti-Pattern Storage (Weight: 390) — Anti-pattern storage di Kubernetes — kesalahan umum dalam mengelola persistent storage yang bisa menyebabkan kehilangan data, degradasi performa, atau masalah operasional di produksi, beserta solusi yang tepat untuk setiap kasus.
  • Storage Performance (Weight: 400) — Pertimbangan performa storage di Kubernetes — metrik storage yang penting (IOPS, throughput, latensi), pengaruh StorageClass terhadap performa, cara mengukur performa storage, dan rekomendasi untuk workload berbeda.

6. Networking (Weight: 60) #

Jaringan di Kubernetes dirancang dengan prinsip “setiap Pod mendapatkan alamat IP-nya sendiri”. Kita akan membedah model jaringan flat ini secara mendalam, mempelajari komunikasi Pod-to-Pod lintas node, abstraksi Service untuk load balancing internal kluster, resolusi nama menggunakan DNS (CoreDNS), hingga perutean traffic dari luar kluster menggunakan Ingress. Bab ini juga membahas pengamanan jaringan kluster menggunakan Network Policy.

Daftar materi pembelajaran:

  • Kubernetes Network Model (Weight: 410) — Model jaringan Kubernetes — empat aturan fundamental yang menjadi fondasi seluruh networking, flat network antar Pod, cara IP Pod dialokasikan, dan mengapa model ini berbeda dari Docker networking tradisional.
  • Pod-to-Pod Communication (Weight: 420) — Cara Pod berkomunikasi satu sama lain di Kubernetes — komunikasi dalam satu node, komunikasi lintas node, peran CNI dalam routing paket, dan mengapa IP Pod tidak cukup untuk komunikasi yang andal.
  • Service (Weight: 430) — Service di Kubernetes — abstraksi jaringan yang stabil di atas Pod, empat tipe Service (ClusterIP, NodePort, LoadBalancer, ExternalName), cara kerja selector dan Endpoints, serta kapan menggunakan tipe mana.
  • DNS & Service Discovery (Weight: 440) — DNS dan service discovery di Kubernetes — cara CoreDNS bekerja, format nama DNS untuk Service dan Pod, cara aplikasi menemukan service lain, FQDN vs short name, dan troubleshooting masalah DNS di cluster.
  • Ingress (Weight: 450) — Ingress di Kubernetes — routing HTTP/HTTPS berbasis rules ke Service, path-based dan host-based routing, TLS termination, pilihan Ingress controller, dan cara Ingress menggantikan banyak LoadBalancer Service.
  • Network Policy (Weight: 460) — Network Policy di Kubernetes — cara mengontrol traffic antar Pod dengan firewall rules berbasis label, pola ingress dan egress rules, default-deny policy untuk zero-trust networking, dan keterbatasan yang perlu diketahui.
  • Load Balancing & kube-proxy (Weight: 470) — Cara load balancing bekerja di Kubernetes — peran kube-proxy dalam implementasi Service, mode iptables vs ipvs, algoritma load balancing, session affinity, dan trade-off performa untuk cluster besar.
  • CNI Plugin (Weight: 480) — CNI (Container Network Interface) plugin di Kubernetes — cara CNI bekerja, perbandingan plugin populer (Calico, Cilium, Flannel), kapan memilih yang mana, dan pertimbangan performa dan fitur untuk cluster produksi.
  • Service Mesh (Weight: 490) — Service mesh di Kubernetes — konsep sidecar proxy, fitur yang disediakan (mTLS, observability, traffic management), perbandingan Istio vs Linkerd vs Cilium, kapan service mesh worth it, dan overhead yang harus diperhitungkan.
  • Ingress Controller Comparison (Weight: 500) — Perbandingan mendalam Ingress Controller populer — NGINX, Traefik, HAProxy, AWS ALB, GCE, dan Istio Gateway — dengan panduan memilih berdasarkan kebutuhan performa, cloud, dan fitur yang dibutuhkan.
  • Network Troubleshooting (Weight: 510) — Panduan troubleshooting jaringan Kubernetes — metodologi sistematis untuk mendiagnosis masalah konektivitas, toolkit debug yang dibutuhkan, skenario masalah yang paling umum beserta cara mengatasinya.
  • Anti-Pattern Networking (Weight: 520) — Anti-pattern networking di Kubernetes — kesalahan umum dalam konfigurasi Service, Ingress, NetworkPolicy, dan komunikasi antar service yang menyebabkan masalah ketersediaan, performa, atau keamanan di produksi.

7. Configuration & Secret (Weight: 70) #

Aplikasi yang baik tidak pernah menyatukan kode program dengan nilai konfigurasi atau kredensial database. Bab ini mengajarkan cara mengimplementasikan pemisahan konfigurasi secara bersih menggunakan ConfigMap untuk data non-sensitif dan Secret untuk data rahasia. Kita juga akan mempelajari pola injeksi konfigurasi, integrasi dengan External Secret Manager (seperti HashiCorp Vault), serta teknik melakukan reload konfigurasi tanpa melakukan restart kontainer (hot reload).

Daftar materi pembelajaran:

  • ConfigMap (Weight: 530) — ConfigMap di Kubernetes — cara menyimpan konfigurasi non-sensitif, menggunakannya sebagai environment variable dan volume, update otomatis saat ConfigMap berubah, serta batasan dan pola terbaik penggunaannya.
  • Secret (Weight: 540) — Secret di Kubernetes — perbedaan dengan ConfigMap, tipe-tipe Secret, cara menyimpan dan menggunakannya dengan aman, enkripsi at-rest, risiko keamanan yang sering diabaikan, dan praktik terbaik pengelolaan Secret di produksi.
  • Environment Variable Pattern (Weight: 550) — Pola penggunaan environment variable di Kubernetes — kapan env var tepat digunakan, cara inject dari ConfigMap dan Secret, Downward API untuk metadata Pod, batasan env var, dan kapan lebih baik gunakan file konfigurasi.
  • Secret Management Best Practice (Weight: 560) — Praktik terbaik pengelolaan Secret di Kubernetes — enkripsi at-rest, RBAC untuk Secret, external secret manager (Vault, AWS Secrets Manager), rotasi otomatis, audit log, dan pola GitOps yang aman untuk Secret.
  • External Secret Manager (Weight: 570) — Integrasi Kubernetes dengan external secret manager — HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager, Azure Key Vault, cara kerja External Secrets Operator, dan panduan memilih solusi yang tepat.
  • ConfigMap vs Secret (Weight: 580) — Panduan praktis memilih antara ConfigMap dan Secret — decision framework berdasarkan jenis data, risiko exposure, kebutuhan enkripsi, dan pola anti-pattern yang sering membuat konfigurasi tidak aman atau sulit di-maintain.
  • Configuration Hot Reload (Weight: 590) — Hot reload konfigurasi di Kubernetes — cara memperbarui ConfigMap tanpa restart Pod, mekanisme inotify untuk deteksi perubahan file, pola sidecar config watcher, signal SIGHUP untuk reload, dan kapan restart Pod lebih aman dari hot reload.
  • Multi-Environment Configuration (Weight: 600) — Mengelola konfigurasi di beberapa environment (dev, staging, production) di Kubernetes — pola namespace isolation, Kustomize untuk overlay konfigurasi, Helm values per environment, dan strategi menghindari konfigurasi drift.
  • Anti-Pattern Configuration (Weight: 610) — Anti-pattern konfigurasi di Kubernetes — kesalahan umum dalam mengelola ConfigMap, Secret, dan environment variable yang menyebabkan masalah keamanan, operasional, atau maintainability di produksi.

8. Deployment Strategy (Weight: 80) #

Proses pembaruan versi aplikasi tidak boleh menyebabkan interupsi layanan bagi pengguna akhir. Kita akan mengeksplorasi berbagai strategi rilis secara detail, mulai dari Rolling Update bawaan, Blue/Green untuk rollback instan, hingga Canary Deployment untuk pengujian fitur baru secara bertahap. Bab ini juga membahas penanganan migrasi skema database yang aman dan konsep otomatisasi deployment berbasis GitOps.

Daftar materi pembelajaran:

  • Deployment Strategy Overview (Weight: 620) — Gambaran menyeluruh strategi deployment di Kubernetes — trade-off antara risiko, downtime, kompleksitas, dan kecepatan rollback dari setiap pendekatan, serta framework memilih strategi yang tepat untuk situasi yang berbeda.
  • Rolling Update (Weight: 630) — Rolling Update di Kubernetes — konfigurasi maxSurge dan maxUnavailable, cara Deployment controller mengelola transisi antar versi, strategi zero-downtime yang tepat, rollback otomatis dan manual, serta diagnosis masalah selama rolling update.
  • Blue/Green Deployment (Weight: 640) — Blue/Green deployment di Kubernetes — dua environment paralel untuk rollback instan, cara implementasi dengan Service selector switching, penggunaan Ingress untuk pemindahan traffic, pertimbangan biaya resource, dan kapan Blue/Green layak digunakan.
  • Canary Deployment (Weight: 650) — Canary deployment di Kubernetes — rilis bertahap ke subset pengguna, implementasi dengan Pod replicas dan Ingress weight, metric-driven progressive delivery, automated rollback berdasarkan error rate, dan integrasi dengan Flagger atau Argo Rollouts.
  • Recreate (Weight: 660) — Strategi Recreate di Kubernetes — kapan downtime deployment justru lebih aman dari zero-downtime, konfigurasi dan perilaku, skenario yang memerlukan Recreate seperti database migration dan perubahan incompatible, serta cara meminimalkan downtime window.
  • Database Migration Strategy (Weight: 670) — Strategi database migration yang aman di Kubernetes — expand-contract pattern untuk zero-downtime migration, urutan deployment yang benar, backward-compatible migration, tooling (Flyway, Liquibase), dan skenario yang memerlukan maintenance window.
  • Rollback Strategy (Weight: 680) — Strategi rollback di Kubernetes — rollback Deployment dengan kubectl, rollback otomatis berbasis health check, pertimbangan rollback saat database sudah di-migrate, revisionHistoryLimit, dan pola rollback cepat untuk berbagai situasi insiden.
  • GitOps (Weight: 690) — GitOps di Kubernetes — Git sebagai single source of truth untuk state cluster, cara kerja pull-based deployment, perbandingan ArgoCD vs Flux, pola sync otomatis dan manual approval, serta integrasi dengan CI/CD pipeline yang sudah ada.
  • Anti-Pattern Deployment (Weight: 700) — Anti-pattern deployment di Kubernetes — kesalahan umum dalam strategi rolling update, pengelolaan image tag, readiness probe, database migration, dan GitOps yang menyebabkan downtime, data loss, atau deployment yang sulit di-rollback.

9. Security (Weight: 90) #

Keamanan cluster harus diterapkan secara berlapis (defense-in-depth). Bab ini membahas cara membatasi hak akses pengguna kluster dan aplikasi melalui Role-Based Access Control (RBAC), menerapkan standar keamanan Pod (Pod Security Standards), mengamankan rantai pasok container image (supply chain security), memantau aktivitas sistem melalui Audit Logging, serta melakukan pengerasan keamanan kluster (cluster hardening) berdasarkan standar industri CIS Benchmark.

Daftar materi pembelajaran:

  • RBAC (Weight: 710) — Role-Based Access Control di Kubernetes — konsep Subject, Role, dan RoleBinding, perbedaan Role vs ClusterRole, cara merancang permission yang minimal, ServiceAccount untuk Pod, dan audit akses yang sudah diberikan.
  • Pod Security (Weight: 720) — Keamanan Pod di Kubernetes — SecurityContext untuk container dan Pod, Pod Security Standards (Privileged/Baseline/Restricted), cara mencegah privilege escalation, runAsNonRoot, read-only filesystem, dan dropping capabilities.
  • Network Security (Weight: 730) — Keamanan jaringan di Kubernetes — zero-trust network dengan NetworkPolicy, isolasi namespace, enkripsi traffic antar Pod dengan mTLS, mencegah akses ke metadata cloud provider, dan hardening Ingress untuk mencegah serangan umum.
  • Supply Chain Security (Weight: 740) — Keamanan supply chain container di Kubernetes — image scanning untuk vulnerability, image signing dengan Cosign, admission controller untuk enforce policy image, Software Bill of Materials (SBOM), dan praktik registry yang aman.
  • Audit Logging (Weight: 750) — Audit logging di Kubernetes — cara mengaktifkan dan mengonfigurasi audit policy API Server, level audit (None/Metadata/Request/RequestResponse), deteksi anomali dari log, integrasi dengan SIEM, dan skenario investigasi insiden menggunakan audit log.
  • Cluster Hardening (Weight: 760) — Hardening cluster Kubernetes — mengamankan API Server, etcd, kubelet, dan node, menonaktifkan fitur yang tidak perlu, admission controllers yang direkomendasikan, update dan patch management, serta checklist CIS Kubernetes Benchmark.
  • Anti-Pattern Security (Weight: 770) — Anti-pattern keamanan di Kubernetes — kesalahan konfigurasi yang paling umum dan paling berbahaya, dari RBAC terlalu permisif, container berjalan sebagai root, hingga Secret yang tidak dikelola dengan benar dan cluster yang tidak di-update.

10. Observability (Weight: 100) #

Kita tidak bisa mengelola apa yang tidak bisa kita ukur. Bab ini memberikan visibilitas penuh terhadap apa yang sedang terjadi di dalam kluster dan aplikasi kita. Pembahasan meliputi agregasi log terpusat, pengumpulan metrik performa menggunakan Prometheus, visualisasi data interaktif dengan Grafana, pelacakan alur permintaan transaksi lintas service (distributed tracing), serta perancangan sistem peringatan (alerting) yang efektif guna menghindari kelelahan menerima peringatan (alert fatigue).

Daftar materi pembelajaran:

  • Logging (Weight: 780) — Logging di Kubernetes — arsitektur logging cluster, structured logging dengan JSON, sidecar log collector, stack EFK dan Loki, log aggregation dari banyak Pod, dan praktik terbaik pengelolaan log di produksi.
  • Metrics dan Prometheus (Weight: 790) — Metrics di Kubernetes dengan Prometheus — arsitektur scraping, tipe metrics (Counter/Gauge/Histogram/Summary), kube-state-metrics, node-exporter, instrumentasi aplikasi, PromQL dasar, dan recording rules untuk query yang efisien.
  • Alerting (Weight: 800) — Alerting di Kubernetes — merancang alert yang actionable, PrometheusRule untuk alerting rules, konfigurasi Alertmanager untuk routing dan silencing, integrasi dengan Slack dan PagerDuty, menghindari alert fatigue, dan SLO-based alerting.
  • Distributed Tracing (Weight: 810) — Distributed tracing di Kubernetes — konsep trace dan span, OpenTelemetry sebagai standar instrumentasi, Jaeger dan Tempo sebagai backend, propagasi context antar service, sampling strategy, dan cara menggunakan trace untuk debug latensi di microservice.
  • Grafana Dashboard (Weight: 820) — Grafana Dashboard di Kubernetes — membangun dashboard yang informatif, visualisasi Four Golden Signals, dashboard Kubernetes cluster overview, variabel dan template untuk reusable dashboard, dan strategi dashboard-as-code dengan provisioning.
  • Health Check (Weight: 830) — Health check di Kubernetes — tiga jenis probe (liveness, readiness, startup), cara kerja masing-masing, kapan menggunakan mana, implementasi endpoint /health yang tepat, menghindari cascade failure dari health check yang salah konfigurasi.
  • Anti-Pattern Observability (Weight: 840) — Anti-pattern observability di Kubernetes — kesalahan umum dalam logging, metrics, alerting, dan health check yang membuat debugging lebih sulit, alert menjadi noise, dan insiden lebih lama terdeteksi dan diselesaikan.

11. Ecosystem & Tooling (Weight: 110) #

Ekosistem Cloud Native Computing Foundation (CNCF) sangat luas dan dinamis. Bab ini membahas peralatan pendukung yang mempermudah operasional kluster sehari-hari. Kita akan mempelajari manajemen paket aplikasi menggunakan Helm, kustomisasi manifes tanpa template menggunakan Kustomize, tips produktivitas menggunakan CLI kubectl, alat bantu pengembangan aplikasi di lokal kluster (Minikube/Kind/Skaffold), serta pemanfaatan Operator Pattern untuk mengelola lifecycle aplikasi stateful yang kompleks secara otomatis.

Daftar materi pembelajaran:

  • Helm (Weight: 850) — Helm — package manager untuk Kubernetes, struktur chart, templating dengan values, lifecycle install/upgrade/rollback, dependency management antar chart, dan praktik terbaik menulis Helm chart yang maintainable.
  • Kustomize (Weight: 860) — Kustomize — overlay-based configuration management bawaan kubectl, struktur base dan overlays, patch strategis dan JSON6902, generator ConfigMap dan Secret, transformers untuk namespace dan label, dan kapan pilih Kustomize vs Helm.
  • kubectl Tips (Weight: 870) — Tips dan trik kubectl untuk produktivitas — shortcut, output formatting dengan jsonpath dan jq, port-forward dan exec untuk debugging, plugin kubectl via krew, konfigurasi multi-cluster dengan kubeconfig, dan alias yang berguna.
  • Local Development Tools (Weight: 880) — Tools untuk development Kubernetes di lokal — perbandingan Minikube, Kind, k3d, dan Docker Desktop, Telepresence untuk debug service di cluster nyata, Skaffold untuk inner development loop yang cepat, dan DevSpace sebagai alternatif.
  • Operator Pattern (Weight: 890) — Operator Pattern di Kubernetes — konsep custom controller dan CRD, mengapa Operator dibutuhkan untuk stateful application, cara kerja reconciliation loop, contoh Operator populer (Prometheus, Cert-Manager, Strimzi), dan kapan menulis Operator sendiri.
  • Managed Kubernetes (Weight: 900) — Managed Kubernetes di cloud — perbandingan GKE, EKS, dan AKS, apa yang dikelola provider vs apa yang masih tanggung jawab kamu, fitur spesifik masing-masing platform, pertimbangan cost dan lock-in, serta praktik terbaik untuk cluster production di cloud.
  • Anti-Pattern Ecosystem & Tooling (Weight: 910) — Anti-pattern dalam penggunaan tools Kubernetes — Helm chart yang terlalu rumit, Kustomize yang berakhir jadi duplikasi, kubectl ke production secara manual, over-engineering toolchain, dan kesalahan umum lain yang memperlambat tim dan menambah kompleksitas tanpa nilai.

12. Production Strategy (Weight: 120) #

Materi penutup ini mengumpulkan seluruh pengetahuan konseptual untuk diterapkan di lingkungan produksi skala besar yang sesungguhnya. Topik yang dibahas meliputi alokasi resource kluster yang optimal, implementasi autoscaling otomatis di level Pod (HPA/VPA/KEDA) dan node (Cluster Autoscaler), desain arsitektur berkatetersediaan tinggi (High Availability), optimasi anggaran infrastruktur cloud, rencana pemulihan bencana (Disaster Recovery), serta strategi isolasi kluster untuk banyak tim (multi-tenancy).

Daftar materi pembelajaran:

  • Resource Management (Weight: 920) — Resource management di Kubernetes production — requests dan limits yang tepat, LimitRange untuk default namespace, ResourceQuota untuk isolasi antar tim, cara menentukan nilai yang realistis dari observasi, dan dampak konfigurasi yang salah pada scheduling dan stability.
  • Autoscaling (Weight: 930) — Autoscaling di Kubernetes — HPA untuk scale Pod berdasarkan CPU/memory/custom metrics, VPA untuk right-size resource requests, KEDA untuk scale berbasis event, Cluster Autoscaler untuk scale node, dan strategi kombinasi untuk sistem yang benar-benar elastis.
  • High Availability (Weight: 940) — High Availability di Kubernetes production — multi-replica dengan Pod anti-affinity, spread Pod ke beberapa availability zone, Pod Disruption Budget untuk melindungi availability saat maintenance, topologySpreadConstraints, dan strategi untuk control plane HA.
  • Cost Optimization (Weight: 950) — Cost optimization Kubernetes di cloud — identifikasi pemborosan resource, Spot/Preemptible node untuk workload toleran, right-sizing dengan VPA, scale ke nol untuk non-production, namespace cost allocation, dan praktik pengelolaan biaya cluster yang berkelanjutan.
  • Disaster Recovery (Weight: 960) — Disaster recovery untuk cluster Kubernetes — backup etcd dan PersistentVolume, Velero untuk backup seluruh namespace, strategi multi-cluster dan failover, RTO dan RPO yang realistis, serta runbook recovery yang bisa dieksekusi saat insiden.
  • Multi-Tenancy (Weight: 970) — Multi-tenancy Kubernetes — isolasi antar tim via namespace, soft vs hard multi-tenancy, penggunaan ResourceQuota dan NetworkPolicy untuk isolasi, vCluster untuk isolasi yang lebih kuat, Hierarchical Namespaces untuk struktur organisasi besar, dan kapan gunakan cluster terpisah.
  • Anti-Pattern Production (Weight: 980) — Anti-pattern di Kubernetes production — kesalahan konfigurasi resource, autoscaling, high availability, dan operasional yang paling sering menyebabkan insiden, biaya tidak terkontrol, dan sistem yang sulit dipulihkan saat terjadi kegagalan.

Cara Menggunakan Portal Ini & Kode Sumber #

Setiap artikel tutorial di website ini dilengkapi dengan contoh manifest YAML, skrip konfigurasi, serta diagram arsitektur yang dirancang untuk dapat langsung dicoba dan dideploy.

Praktik Terbaik dalam Menggunakan Materi #

  1. Gunakan Kluster Lokal untuk Eksperimen: Sebelum menerapkan konfigurasi apa pun ke kluster dev/staging perusahaan, biasakan untuk mencobanya terlebih dahulu di lingkungan lokal kita menggunakan Kind atau Minikube. Ini meminimalkan risiko kesalahan sintaksis manifes yang dapat berdampak buruk.
  2. Periksa File STYLE.md untuk Referensi Format: Jika kita ingin berkontribusi menulis atau memodifikasi artikel di portal ini, pastikan untuk selalu merujuk pada standar yang ditetapkan di dalam STYLE.md.
  3. Gunakan Navigasi “Sebelumnya” & “Berikutnya”: Di setiap akhir halaman artikel, terdapat tombol navigasi cepat. Navigasi ini dirancang agar kita bisa membaca materi secara berurutan sesuai kurikulum terstruktur.

Ringkasan #

  • Panduan Terstruktur — Terdiri dari 12 domain utama yang diurutkan secara logis dari fondasi konsep hingga arsitektur produksi tingkat tinggi.
  • Berorientasi Produksi — Penulisan artikel berfokus pada penyelesaian masalah nyata, best practice industri, dan penyandingan konsep anti-pattern vs solusi yang benar.
  • Modular & Fleksibel — Kita bisa membaca materi secara linier dari awal untuk belajar secara menyeluruh, atau melompat langsung ke bab tertentu sebagai referensi solusi saat terjadi insiden.
  • Visualisasi Mermaid — Setiap penjelasan konsep yang rumit disertai dengan visualisasi arsitektur berbasis diagram Mermaid untuk mempercepat pemahaman alur kerja sistem.
  • Tailored Journey — Pilih fokus pembelajaran berdasarkan peran profesional Anda saat ini: Software Developer, DevOps Engineer, atau Tech Lead & Architect.

Berikutnya: Apa itu Kubernetes? →
About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact