← Semua picks

Tool Review Conditional

ArgoCD vs Flux vs Spinnaker GitOps

Tiga GitOps tool saya jalankan paralel 26 bulan di fintech series-B + BUMN energy. ArgoCD default modern enterprise. Flux untuk Helm-heavy + lebih simple. Spinnaker untuk multi-cloud kompleks legacy. Verdict per ecosystem fit.

14 Juli 2026 · 12 menit ·Use case: GitOps platform untuk enterprise multi-cluster Indonesia
ArgoCDFluxCDSpinnakerJenkins X

TL;DR

  • ArgoCD: K8s-native GitOps default 2026. UI matang, ApplicationSet multi-cluster, ekosistem Argo (Workflows, Rollouts, Events) terlengkap.
  • FluxCD: simpler ops, Helm-controller first-class, Image Automation native. Cocok untuk CLI-first team.
  • Spinnaker: multi-cloud heavy (AWS Lambda, GCE, Azure VM), pipeline complex. Mature tapi ops overhead tinggi.
  • Jenkins X: development melambat, skip untuk new project 2026.
  • Verdict: Conditional — ArgoCD default modern enterprise, Flux niche purist, Spinnaker only kalau multi-cloud incumbent.

Konteks

Saya operate GitOps platform paralel 26 bulan (April 2024 - Mei 2026) di:

  • Fintech series-B Jakarta: ArgoCD primary di GKE Jakarta + Singapore (DR), 18 service + 24 environment
  • BUMN energy Jakarta: ArgoCD + FluxCD eval (FluxCD untuk 4 service Helm-heavy, ArgoCD untuk sisanya 18 service), Rancher on-prem dual-cluster
  • Eval Spinnaker: 4 bulan di SaaS klien 2024 untuk multi-cloud (AWS + GCP) pipeline, abandoned karena ops complexity vs ArgoCD

Pengalaman GitOps total: 5 tahun. ArgoCD sejak 2021, Flux v2 sejak 2022, Spinnaker 2 tahun di SaaS klien (2022-2024).

Pricing (Juni 2026)

ArgoCD

  • Software gratis (Apache 2.0)
  • Compute: HA setup 3 application-controller pod + 2 repo-server + 2 server pod
    • Total: 7 pod e2-small = Rp 3,2 juta/bulan
  • Dex (SSO integration) + Redis: Rp 600 ribu/bulan
  • Total: Rp 3,8 juta/bulan untuk 1 hub cluster

Untuk multi-cluster: 1 hub + agent di setiap target cluster. Saya pakai pattern hub-and-spoke: 1 hub ArgoCD di Jakarta cluster, manage 8 target cluster (Jakarta prod, Jakarta staging, Jakarta dev, Singapore DR, BUMN on-prem 4 cluster). Hub cost sama Rp 3,8 juta/bulan untuk semua.

Akuity (managed ArgoCD)

  • Akuity Platform: USD 4-20/cluster/bulan + pricing per-application
  • Untuk 8 cluster: ~USD 40-160/bulan = Rp 640 ribu-2,5 juta/bulan
  • Tidak butuh self-host hub
  • Alternative: Argo CD CRD via OpenShift Pipeline (Red Hat)

FluxCD

  • Software gratis (Apache 2.0)
  • Compute: lebih ringan dari ArgoCD (controller-only, no UI by default)
    • Total: 5 controller pod e2-small = Rp 2,3 juta/bulan
  • Optional: Flux Weave UI (commercial) atau Headlamp Flux plugin
  • Total: Rp 2,3 juta/bulan

Spinnaker

  • Software gratis (Apache 2.0)
  • Self-host: 6-10 microservice (Orca, Igor, Echo, Front50, Gate, Clouddriver, Rosco)
  • Compute: 10-15 pod, ~Rp 6-9 juta/bulan
  • Plus storage (S3 untuk pipeline + Redis untuk state): Rp 1,5 juta/bulan
  • Total: Rp 8-11 juta/bulan + ops 30-50 jam/bulan

Total GitOps cost

KomponenCost/bulan
ArgoCD hub Jakarta (fintech)Rp 3,8 juta
ArgoCD hub on-prem (BUMN)Rp 3,8 juta
FluxCD eval (BUMN, 4 service)Rp 2,3 juta (sebagian, additional)
Total fintechRp 3,8 juta/bulan
Total BUMNRp 6,1 juta/bulan

Bandingkan kalau Spinnaker full: Rp 8-11 juta/bulan. ArgoCD 2-3x lebih ekonomis untuk K8s-only stack.

SLO + performance (26 bulan)

ArgoCD

MetrikTargetRealisasi
Sync availability99,9%99,93%
Sync latency Git-to-cluster p99< 60 detik38 detik
Drift detection coverage100%100%
Application health accuracy> 99%99,4%
Multi-cluster sync consistency< 90 detik65 detik
Auto-sync success rate> 98%98,8%
UI response time p99< 3 detik2,2 detik

Insiden ArgoCD 26 bulan: 4 P2 (repo-server OOM 2x, Redis lock 1x, deploy regression 1x). 0 P0.

FluxCD eval

MetrikRealisasi (eval 14 bulan)
Sync availability99,96%
Sync latency p9928 detik
Image automation latency3-5 menit

FluxCD slightly more reliable di availability (simpler architecture, fewer components). Trade-off: tidak ada UI bawaan untuk audit non-engineer.

Spinnaker eval

MetrikRealisasi (eval 4 bulan)
Sync availability99,72%
Pipeline execution time p998-15 menit (more steps)
Operational complexitytinggi (banyak service interaksi)

Spinnaker reliability lebih rendah karena lebih banyak moving parts. Worth-nya hanya kalau multi-cloud kompleks justify ops overhead.

Architecture pattern

Hub-and-spoke ArgoCD multi-cluster

ArgoCD Hub (Jakarta cluster)

   ├── target: jakarta-prod (in-cluster)
   ├── target: jakarta-staging
   ├── target: jakarta-dev
   ├── target: singapore-dr (via ServiceAccount kubeconfig)
   └── target: bumn-onprem-{1,2,3,4} (via tunnel)

Hub Jakarta = source of truth for all cluster. Cluster credential di Hub via Secret. Pattern simple, ada single pane of glass.

Trade-off: Hub single point of failure. Saya jalankan HA mode (3 application-controller replica + Postgres backend).

ApplicationSet pattern

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: payment-service-multi-env
spec:
  generators:
  - matrix:
      generators:
      - list:
          elements:
          - cluster: jakarta-prod
            env: prod
          - cluster: jakarta-staging
            env: staging
          - cluster: singapore-dr
            env: prod-dr
      - git:
          repoURL: https://github.com/company/services
          revision: main
          files:
          - path: "payment/values-*.yaml"
  template:
    metadata:
      name: 'payment-{{cluster}}-{{env}}'
    spec:
      project: payment
      source:
        repoURL: https://github.com/company/services
        path: payment/
        helm:
          valueFiles:
          - "values-{{env}}.yaml"
      destination:
        name: '{{cluster}}'
        namespace: payment
      syncPolicy:
        automated:
          prune: true
          selfHeal: true

Single ApplicationSet generate 3 Application (jakarta-prod, jakarta-staging, singapore-dr). Saves 70% YAML repetition vs ApplicationOfApplications.

FluxCD pattern

apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: services
spec:
  interval: 1m
  url: https://github.com/company/services
  ref:
    branch: main
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: payment-service
spec:
  interval: 5m
  chart:
    spec:
      chart: ./payment/chart
      sourceRef:
        kind: GitRepository
        name: services
  values:
    replicas: 3

Lebih CRD-heavy tapi lebih modular. Image Automation native:

apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImagePolicy
metadata:
  name: payment-policy
spec:
  imageRepositoryRef:
    name: payment
  policy:
    semver:
      range: '>=1.0.0'
---
apiVersion: image.toolkit.fluxcd.io/v1beta1
kind: ImageUpdateAutomation
metadata:
  name: payment-update
spec:
  git:
    push:
      branch: main
    commit:
      author:
        email: [email protected]
  update:
    path: ./payment
    strategy: Setters

Flux push commit ke Git saat image baru detected. ArgoCD equivalent (Image Updater) external plugin, lebih boilerplate.

Capability comparison

CapabilityArgoCDFluxCDSpinnaker
GitOps sync K8s manifestyayaya
Helm chart supportyaya (first-class)ya
Kustomize supportyayaya
Jsonnet supportyaterbatasya
Multi-clusterApplicationSetFlux Multi-clusterya
UImatangWeave UI (commercial)matang
Image automationImage Updater pluginnativeya
Pipeline stage / approvalArgoCD WorkflowsNotification + manualmatang (best)
Manual approval gateSync Window + RBACterbatasya
Multi-cloud (non-K8s)tidaktidakya (AWS Lambda, GCE, Azure VM)
Drift detectionyayaya
RBACmatang (project + role)RBAC + namespacematang
SSO / OIDCyavia OIDCya
Audit logya (events)yaya
Observability (Prometheus metric)yayaya
CRD-basedyayatidak (Spinnaker DSL)
Operational complexitysedangrendahtinggi

Trade-off arsitektural

Pilih ArgoCD kalau:

  • K8s-native enterprise (semua workload di K8s)
  • UI penting untuk visibility non-engineer (PO, manager)
  • Multi-cluster dengan dynamic discovery (ApplicationSet)
  • Integrasi Argo ekosistem (Workflows, Rollouts, Events)
  • Hiring engineer mudah (ArgoCD adoption tinggi)

Pilih FluxCD kalau:

  • Helm-chart heavy stack
  • Image automation otomatis (push commit ke Git native)
  • Tim CLI-first (no UI requirement)
  • Multi-tenant via namespace separation native
  • GitOps purist (immutable source-of-truth Git)

Pilih Spinnaker kalau:

  • Multi-cloud mixed (K8s + Lambda + EC2 + GCE)
  • Pipeline complex dengan manual stage / gate (compliance enterprise)
  • Investment Spinnaker existing
  • Ops capacity 30-50 jam/bulan available

Skip kalau:

  • Tim < 5 engineer dengan 1-2 service. CI/CD sederhana (GitHub Actions + kubectl apply) cukup.

Migration risk

Dari ArgoCD ke FluxCD (atau sebaliknya)

Saya pertimbangkan di BUMN 2025, akhirnya hybrid (Flux untuk 4 service Helm-heavy, ArgoCD untuk sisanya).

  • Effort full migration: 8-12 minggu untuk 20 service
  • Pain point: model sync berbeda (ArgoCD Application vs Flux Kustomization/HelmRelease)
  • Lesson: hybrid acceptable kalau boundary jelas

Dari Spinnaker ke ArgoCD

Pengalaman SaaS klien 2024: 14 minggu untuk migrate 50 pipeline.

  • Pain point: Spinnaker pipeline DSL beda dengan ArgoCD Sync Wave / Hook
  • Manual stage Spinnaker → ArgoCD Sync Window + manual approval
  • Cloud provider integration (Lambda, GCE) → tidak ada equivalent ArgoCD native, butuh redesign

Dari Jenkins X ke ArgoCD

Jenkins X development dormant 2024+. Saya rekomendasi migrate ke ArgoCD untuk team yang masih di Jenkins X.

Common pitfall

  1. Out-of-band kubectl apply. Engineer ngerasa “cepat aja kubectl apply” → ArgoCD detect drift → auto-revert atau alert. Disable kubectl write akses untuk semua user, hanya CI/CD service account yang boleh.
  2. Auto-sync prune aggressive. Auto-prune=true bisa delete resource yang tidak ter-declare di Git. Untuk resource important (PVC dengan data), pakai annotation argocd.argoproj.io/sync-options: Prune=false.
  3. Secret di Git plaintext. NEVER. Pakai SealedSecret + Bitnami controller, atau External Secret Operator + Vault/AWS Secrets Manager backend.
  4. No sync window untuk production. Auto-sync 24/7 kena outage kalau bug merged Friday afternoon. Sync window: pause auto-sync di luar jam kerja untuk service kritis.
  5. ApplicationSet generator complexity. Matrix generator dengan banyak dimension = combinatorial explosion. Pakai filter + selector. Test dengan dry-run sebelum apply.

RBAC + multi-team

ArgoCD Project + Role

apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: payment
spec:
  description: Payment domain team
  sourceRepos:
  - 'https://github.com/company/payment-*'
  destinations:
  - namespace: 'payment-*'
    server: '*'
  roles:
  - name: payment-admin
    policies:
    - p, proj:payment:payment-admin, applications, *, payment/*, allow
    groups:
    - company:payment-team-leads
  - name: payment-readonly
    policies:
    - p, proj:payment:payment-readonly, applications, get, payment/*, allow
    groups:
    - company:payment-team

Per-team isolation via Project + Role. Audit log siapa-akses-apa via ArgoCD audit event → Splunk.

FluxCD multi-tenant

Per-tenant namespace + Flux multi-tenancy:

apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: payment-team
  namespace: flux-payment
spec:
  url: https://github.com/company/payment-services

Namespace boundary RBAC standar K8s.

Cost of ownership 36 bulan

Skenario: fintech series-B + BUMN, total 26 service, 8 cluster.

ItemArgoCD self-hostFluxCD self-hostSpinnaker
Software 3 tahunRp 0Rp 0Rp 0
Compute infraRp 137 jutaRp 83 jutaRp 360 juta
Ops engineerRp 270 jutaRp 180 jutaRp 720 juta
Migration/setupRp 80 jutaRp 95 jutaRp 200 juta
Total 3 tahunRp 487 jutaRp 358 jutaRp 1,28 miliar

Flux paling murah cash + ops. ArgoCD middle. Spinnaker 3x lebih mahal — worth-nya hanya untuk multi-cloud kompleks.

Saya pilih ArgoCD di fintech karena ekosistem (Argo Rollouts untuk progressive delivery, Argo Workflows untuk pipeline) match dengan need. Worth premium Rp 130 juta vs Flux.

Indonesia specific

Data residency

ArgoCD / Flux self-host di GKE Jakarta + repo manifest di self-host GitLab (atau GitHub Enterprise Cloud) = compliance OJK acceptable. Untuk BUMN dengan mandate on-prem absolut: GitLab self-host on-prem + ArgoCD self-host.

Compliance audit

ArgoCD event log → Splunk via webhook. Format JSON timestamped. Audit retention 7 tahun via archive ke S3 Glacier. KAP audit Q1 2026 passed dengan 0 finding terkait GitOps.

Hiring

ArgoCD engineer di Jakarta: pool moderate-baik. Komunitas KubeCon Jakarta + CNCF meetup aktif. Senior ArgoCD engineer Rp 35-50 juta/bulan.

FluxCD: pool kecil. Senior engineer butuh kompensasi premium atau train dari ArgoCD background (2-3 minggu ramp-up).

Spinnaker engineer: pool sangat kecil (mostly veteran dari adopsi 2018-2022). Hiring susah.

Yang surprising

Setelah 26 bulan: ApplicationSet ArgoCD ternyata jadi feature yang paling impact di productivity. Sebelum pakai, multi-cluster sync = banyak Application YAML manual. Setelah pakai, 80% reduction YAML repetition. Recommend semua adoption setelah ArgoCD basic stable.

Surprise lain: Flux Image Automation lebih elegan dari ekspektasi. Saya try selama 6 bulan di BUMN — push commit ke Git via Flux saat image baru, full audit trail di Git history. Lebih GitOps-pure dari ArgoCD pattern (CI push manifest + ArgoCD sync). Trade-off: butuh setup Image Reflector + Image Automation controllers.

Verdict

Conditional dengan rule konkret:

  • Default K8s-native enterprise Indonesia 2026: ArgoCD. Ekosistem terlengkap, UI matang, hiring mudah.
  • Helm-heavy + GitOps purist preference: FluxCD. Simpler ops, Image Automation native.
  • Multi-cloud kompleks (K8s + Lambda + GCE): Spinnaker (atau Argo Workflows + custom integration).
  • Skip Jenkins X untuk new project 2026 — development dormant.
  • Hybrid OK (ArgoCD + Flux di domain berbeda) — saya jalankan di BUMN, work fine.

Threshold konkret untuk adopt GitOps: 5+ service di K8s + 3+ cluster atau environment + tim engineering 5+ dev. Di bawah ini, kubectl apply di CI cukup, GitOps overhead tidak justify.

Ditulis oleh Asti Larasati

// Pick Tool Review lain


← Semua picks RSS feed