Kubernetes CI/CD dan GitOps: Automasi Deploy Modern dengan ArgoCD & Flux

Tinggalkan metode deployment push-based yang rentan. Pelajari bagaimana filosofi GitOps mengubah repositori Git menjadi sumber kebenaran tunggal yang otomatis, serta bagaimana ArgoCD dan Flux mengimplementasikannya untuk Continuous Delivery Kubernetes yang aman.

Evolusi dari CI/CD Tradisional ke GitOps

 

Dalam dunia cloud-native yang didominasi oleh Kubernetes, proses Continuous Integration (CI) dan Continuous Delivery (CD) tradisional sering kali menghadapi keterbatasan yang signifikan. Metode lama mengandalkan pipeline CI untuk push perubahan langsung ke klaster Kubernetes, biasanya menggunakan perintah kubectl atau skrip yang kompleks. Pendekatan push-based ini memiliki kelemahan:

  1. Risiko Keamanan: Pipeline CI perlu memiliki kredensial klaster tingkat tinggi (full-access) untuk melakukan deployment, menciptakan celah keamanan yang signifikan.

  2. Kurangnya Rekonsiliasi: Jika status klaster menyimpang (configuration drift) dari state yang didefinisikan (misalnya, seseorang menggunakan kubectl secara manual), pipeline CI tidak akan memperbaikinya secara otomatis.

Pada tahun 2025, standar industri telah bergeser ke GitOps, sebuah paradigma yang diciptakan oleh Weaveworks. GitOps mengubah repositori Git menjadi sumber kebenaran tunggal (Single Source of Truth) untuk infrastruktur dan aplikasi.

Prinsip Inti GitOps:

  • Deklaratif: Seluruh sistem dijelaskan secara deklaratif melalui kode (YAML, Helm, Kustomize).

  • Versioned dan Immutable: Konfigurasi disimpan di Git, menyediakan riwayat audit yang lengkap, kemampuan rollback instan, dan versioning yang tidak dapat diubah.

  • Pull-Based Deployment: Alih-alih push dari luar, agen di dalam klaster (ArgoCD atau Flux) secara aktif pull konfigurasi dari Git.

  • Observability: State aktual klaster terus dibandingkan (reconciled) dengan state yang didefinisikan di Git.

GitOps menyelaraskan operasional dengan DevOps tradisional, namun dengan penekanan pada otomasi, auditabilitas, dan keamanan yang melekat pada workflow Git.


 

Mekanisme GitOps: Mengapa Pull Lebih Baik daripada Push

 

Model Pull-Based adalah pembeda utama GitOps.

 

Keamanan yang Ditingkatkan

 

Dalam model Push-Based tradisional, tool CI (misalnya Jenkins, GitLab Runner) perlu memiliki kredensial klaster untuk mengirim manifest Kubernetes. Jika runner CI disusupi, seluruh klaster berisiko.

Dalam Pull-Based GitOps, tool CD (ArgoCD/Flux) berada di dalam klaster Kubernetes itu sendiri (sebagai Controller). Mereka hanya membutuhkan akses keluar (ke GitHub/GitLab) untuk membaca konfigurasi. Ini secara drastis mengurangi surface area serangan dan mendukung prinsip Least Privilege.

 

Deteksi dan Pemulihan Drift Otomatis

 

Keunggulan operasional utama GitOps adalah Deteksi Drift.

  1. Controller GitOps (ArgoCD/Flux) terus menerus memeriksa repositori Git untuk status Desired State (D).

  2. Ia membandingkannya dengan Actual State (A) klaster yang berjalan.

  3. Jika A $\ne$ D (misalnya, seseorang melakukan kubectl edit secara manual), Controller akan secara otomatis menerapkan kembali (reconcile) konfigurasi dari Git, mengembalikan klaster ke Desired State yang dideklarasikan.

Kemampuan Self-Healing ini memastikan konsistensi lingkungan di setiap saat, yang sangat penting untuk mencapai Disaster Recovery yang andal.


 

Implementasi GitOps: Duel ArgoCD Melawan Flux

 

Dua proyek CNCF Graduated (status tertinggi) mendominasi ruang GitOps: ArgoCD (dari Argo Project) dan Flux (dari Weaveworks). Meskipun keduanya mencapai tujuan yang sama, mereka memiliki filosofi arsitektur dan pengalaman pengguna yang berbeda.

 

ArgoCD: Desain yang Berorientasi Aplikasi dan UI yang Kaya

 

ArgoCD beroperasi sebagai aplikasi terpusat di dalam cluster Anda. Filosofi desainnya sangat berfokus pada Aplikasi (Application) sebagai entitas tunggal yang dapat dilihat dan dikelola.

  • Antarmuka Pengguna (UI) yang Kuat: Ini adalah fitur pembeda terbesar. ArgoCD dilengkapi dengan UI web yang built-in dan berfitur lengkap, memungkinkan operator untuk memvisualisasikan seluruh klaster, melihat status sinkronisasi, membandingkan perbedaan live vs. Git (diff), dan melakukan rollback secara manual.

  • ApplicationSet: Untuk multi-cluster deployment atau multi-tenant, ArgoCD menggunakan objek ApplicationSet yang dapat men-template Application yang berbeda ke berbagai target.

  • Pengelolaan Terpusat: ArgoCD berfungsi sebagai pusat kendali (hub) tempat semua deployment dikelola, memberikan pandangan holistik bagi tim operasi.

 

Flux: Arsitektur Modular dan Kubernetes-Native

 

Flux (sering disebut Flux CD v2) adalah toolset GitOps yang sangat modular, terdiri dari berbagai Controller yang lebih kecil (misalnya, source-controller, kustomize-controller, helm-controller).

  • Kubernetes-Native Design: Flux menggunakan Custom Resource Definitions (CRDs) dan Controller Kubernetes untuk setiap fungsi. Ini membuatnya terasa lebih “asli” Kubernetes dan memungkinkan integrasi yang lebih dalam dengan tooling K8s lainnya.

  • CLI-Centric: Meskipun ada tool UI dari pihak ketiga (Weave GitOps), Flux lebih mengutamakan interaksi melalui Command Line Interface (CLI) dan konfigurasi melalui YAML.

  • Dukungan Multi-Sumber: Flux unggul dalam menangani berbagai sumber konfigurasi di luar Git, termasuk registri OCI (seperti Helm Charts yang disimpan sebagai artifacts OCI) dan bucket S3.


 

Matriks Perbandingan GitOps: ArgoCD vs. Flux

 

Memilih tool yang tepat bergantung pada prioritas tim Anda—apakah itu kemudahan penggunaan visual atau arsitektur yang sangat modular.

Fitur PembedaArgo CDFlux CD
ArsitekturMonolitik (Berpusat pada Application Controller)Modular (Berbagai Controller K8s independen)
Antarmuka UtamaWeb UI (Kuat, built-in) dan CLICLI (Utama); UI Opsional (Pihak ketiga/Tambahan)
Sistem KonfigurasiCRD Application (Berorientasi Aplikasi)Custom Resources (Kustomization, HelmRelease)
Multi-ClusterKuat, menggunakan ApplicationSet untuk templatingMenggunakan Kustomize Overlays dan CRD tradisional
Hooks / Life CycleMendukung Hooks (PreSync, Sync, PostSync) dengan fitur Rollout yang canggih (Argo Rollouts)Hooks dasar terbatas pada Helm Hooks
Kemudahan PenggunaanLebih mudah bagi pemula dan tim Ops karena UI visualLebih disukai Platform Engineers yang berorientasi pada CLI
Status CNCFGraduated (Desember 2022)Graduated (November 2022)

 

Mengintegrasikan GitOps dengan CI Pipeline

 

Penting untuk dicatat bahwa GitOps tidak menghilangkan CI, tetapi memisahkannya dari CD.

FasaCI (Continous Integration)CD (Continuous Delivery/GitOps)
Lokasi AksiDi luar klaster (GitLab, Jenkins, GitHub Actions)Di dalam klaster (ArgoCD/Flux Controller)
Tindakan KunciBuild Image Container, Test, Push Image ke RegistryPull Config dari Git, Sync klaster dengan Desired State
TriggerCommit kode aplikasiCommit ke repositori konfigurasi (mengubah Image Tag)

Workflow idealnya: Tim developer membuat commit kode $\rightarrow$ CI membangun Image baru dan memperbarui Image Tag di manifest GitOps $\rightarrow$ Perubahan pada manifest di Git memicu Controller GitOps untuk Pull dan melakukan deployment otomatis.


 

Manfaat Operasional GitOps di Tahun 2025

 

Adopsi GitOps bukan hanya tren, melainkan standar operasional di lingkungan Kubernetes skala besar karena manfaat berikut:

  1. Auditabilitas Penuh: Setiap perubahan infrastruktur dan aplikasi adalah commit Git, lengkap dengan waktu, penulis, dan review Pull Request. Hal ini tak ternilai untuk investigasi insiden dan kepatuhan.

  2. Kemudahan Rollback: Untuk kembali ke state sebelumnya, cukup lakukan git revert pada commit terakhir. Controller GitOps akan secara otomatis melakukan rollback klaster dalam hitungan detik.

  3. Akselerasi Deployment: Setelah manifest di-merge ke branch utama, deployment otomatis dan rekonsiliasi terjadi tanpa intervensi manusia atau pipeline eksternal yang lambat.

  4. Pemberdayaan Developer: Developer dapat deploy aplikasi mereka dengan hanya memodifikasi kode YAML di Git, tanpa perlu akses kubectl langsung ke klaster produksi.


 

Kesimpulan: GitOps sebagai Jantung Platform Engineering

 

Pada tahun 2025, GitOps adalah metodologi wajib bagi tim Platform Engineering yang bertanggung jawab mengelola klaster Kubernetes. Filosofi pull-based yang diimplementasikan oleh ArgoCD atau Flux memberikan jaminan bahwa state klaster selalu konsisten dengan state yang dideklarasikan, menawarkan tingkat keamanan dan Disaster Recovery yang jauh melebihi pipeline CI/CD tradisional. Memilih antara ArgoCD (untuk fokus visual) atau Flux (untuk pendekatan Kubernetes-native yang modular) adalah keputusan implementasi, bukan keputusan metodologi.

 

Perintah Kunci GitOps untuk Operasi Harian

 

Bash
 
# Perintah ArgoCD untuk melihat status sinkronisasi
argocd app list
argocd app get my-app --refresh

# Perintah Flux untuk memverifikasi sumber dan kustomisasi
flux get sources git
flux get kustomizations

# Perintah umum untuk rollback melalui Git
git revert <last_commit_hash> --no-edit && git push
Share the Post:

Related Posts