Lewati ke konten utama

Apa itu GitOps? Panduan Sederhana untuk Mengotomatisasi Manajemen Infrastruktur

Pelajari tentang GitOps, pentingnya, berbagai pendekatan, dan cara mengintegrasikannya ke dalam proyek AI.
· 10 mnt Baca

Jelajahi bersama AI

Anda mungkin pernah mendengar tentang DevOps (Developer Operations), yang mengotomatisasi proses penerapan aplikasi. Jika Anda seorang profesional data, Anda mungkin akrab dengan MLOps (Machine Learning Operations), yang menyederhanakan penerapan model. Lalu bagaimana dengan GitOps?

Dalam blog ini, kita akan membahas GitOps, mengapa hal ini penting, berbagai model GitOps, dan akhirnya, cara mengintegrasikan GitOps ke dalam proyek model bahasa besar. 

Gambar Unggulan Panduan Sederhana GitOps

Gambar oleh Penulis

Anda juga dapat mempelajari teori di balik konsep DevOps dan MLOps dengan mengikuti dua kursus singkat terbaik kami, DevOps Concepts dan MLOps Concepts.

Apa Itu GitOps?

GitOps adalah kerangka operasional yang memperluas prinsip DevOps ke automasi infrastruktur. Ini menekankan pelajaran kunci dari DevOps, seperti kontrol versi, kolaborasi, kepatuhan, CI/CD, dan observabilitas, serta menerapkannya pada penyediaan dan pengelolaan infrastruktur, khususnya di lingkungan cloud modern.

Pada intinya, GitOps mengotomatisasi manajemen infrastruktur dengan memperlakukan konfigurasi sebagai kode, yang sering disebut sebagai Infrastructure as Code (IaC). Sama seperti tim pengembang menggunakan kode sumber untuk membangun biner aplikasi secara konsisten, tim operasi menggunakan berkas konfigurasi yang disimpan di repositori Git untuk memastikan lingkungan infrastruktur yang sama diterapkan setiap saat. Pendekatan ini menjamin konsistensi, keandalan, dan keterulangan.

Komponen Utama Alur Kerja GitOps:

  1. Repositori Git: Menyimpan kode sumber aplikasi dan berkas konfigurasi infrastruktur.
  2. Pipeline continuous delivery (CD): Mengotomatisasi pembuatan, pengujian, dan penerapan perubahan aplikasi serta infrastruktur.
  3. Alat penerapan aplikasi: Memastikan aplikasi diterapkan dengan benar dan efisien berdasarkan konfigurasi di repositori Git.
  4. Sistem pemantauan: Melacak kinerja dan kesehatan aplikasi untuk menjaga keandalan sistem.

GitOps vs DevOps vs MLOps

AspekDevOpsGitOpsMLOps
DefinisiSerangkaian praktik yang menggabungkan pengembangan perangkat lunak (Dev) dan operasi TI (Ops) untuk mempersingkat siklus pengembangan.Sebuah kerangka operasional yang menerapkan prinsip DevOps pada pengelolaan infrastruktur dengan menggunakan Git sebagai sumber kebenaran.Serangkaian praktik yang menerapkan prinsip DevOps pada pengembangan dan penerapan model machine learning (ML).
Fokus UtamaMengotomatisasi dan meningkatkan pengembangan, pengujian, dan penerapan perangkat lunak.Mengotomatisasi infrastruktur dan penerapan aplikasi melalui alur kerja berbasis Git.Mengotomatisasi pengembangan model ML, penerapan, dan manajemen siklus hidup.
Prinsip KunciKolaborasi, Continuous Integration/Continuous Deployment (CI/CD), Infrastructure as Code (IaC).Infrastructure as Code (IaC), Konfigurasi Deklaratif, Rekonsiliasi Berkelanjutan, Kontrol Versi.Versioning Model, Pemantauan Model, Reproduksibilitas, Pelatihan & Penerapan Berkelanjutan.
Alat & TeknologiJenkins, GitHub Actions, Terraform, Ansible, Docker, Kubernetes.Argo CD, Flux, Kubernetes, Helm, Terraform, GitHub Actions.MLflow, Kubeflow, TensorFlow Extended (TFX), SageMaker, Airflow.
Use CasePengembangan perangkat lunak, penerapan aplikasi, aplikasi cloud-native.Mengelola infrastruktur cloud, penerapan Kubernetes, mengotomatisasi pembaruan konfigurasi.Pelatihan, penerapan, pemantauan, dan pipeline pelatihan ulang model ML.
Cakupan OtomatisasiMengotomatisasi build aplikasi, pengujian, dan penerapan ke produksi.Mengotomatisasi penyediaan infrastruktur, manajemen konfigurasi, dan penerapan aplikasi.Mengotomatisasi pelatihan, validasi, penerapan, dan pemantauan model ML.
Kontrol VersiBasis kode yang dikendalikan versi untuk pengembangan perangkat lunak dan konfigurasi aplikasi.Git adalah satu-satunya sumber kebenaran untuk status dan konfigurasi infrastruktur.Kontrol versi diterapkan pada model ML, dataset, dan pipeline pelatihan.
Integrasi CI/CDPrinsip inti dengan pengujian, build, dan pipeline penerapan otomatis.Sangat terintegrasi dengan pipeline CI/CD untuk mengotomatisasi pembaruan infrastruktur.Terintegrasi dengan CI/CD tetapi memerlukan pipeline ML khusus untuk pelatihan dan validasi berkelanjutan.
Manajemen InfrastrukturMendukung infrastructure as code (IaC) namun lebih berfokus pada penerapan aplikasi.Mengelola infrastruktur melalui konfigurasi yang dikendalikan versi.Mendukung infrastruktur ML sekaligus mengelola eksperimen model dan drift.
Pemantauan & ObservabilitasObservabilitas melalui logging, monitoring, dan tracing menggunakan alat seperti Prometheus dan Grafana.Pemantauan berkelanjutan dan self-healing melalui controller GitOps seperti Argo CD.Berfokus pada pemantauan kinerja model, deteksi drift data, dan pemicu pelatihan ulang.
TantanganPergeseran budaya, membutuhkan kolaborasi antara tim dev dan ops, kompleksitas dalam integrasi rantai alat.Membutuhkan pergeseran ke infrastruktur deklaratif, kompleksitas dalam skala lingkungan besar.Kompleksitas infrastruktur yang tinggi, tantangan manajemen data, integrasi dengan pipeline DevOps.

Mengapa Menggunakan GitOps?

Manajemen infrastruktur secara tradisional bersifat manual, tetapi cloud modern memerlukan automasi untuk menangani kecepatan dan skala aplikasi cloud-native. Dengan GitOps, infrastruktur menjadi elastis dan andal, memungkinkan tim menerapkan perubahan dengan cepat dan konsisten. Ini menghilangkan kesalahan manual, meningkatkan efisiensi, dan memastikan infrastruktur serta aplikasi selalu sinkron, mendukung kebutuhan alur kerja pengembangan modern yang serba cepat.

Manfaat Utama GitOps:

  1. Kontrol versi: Semua perubahan pada infrastruktur dan aplikasi dikendalikan versinya di Git, sehingga memudahkan rollback dan menyediakan jejak audit yang komprehensif.
  2. Kolaborasi yang lebih baik: Tim dapat berkolaborasi lebih efektif menggunakan alur kerja Git yang familier, seperti pull request.
  3. Peningkatan keandalan: Konfigurasi deklaratif memastikan status sistem yang diinginkan dapat dipulihkan secara otomatis jika terjadi kegagalan.
  4. Automasi: Meminimalkan kebutuhan intervensi manual, sehingga mengurangi risiko kesalahan manusia.
  5. Keamanan: Riwayat commit Git memberikan catatan yang tidak dapat diubah, meningkatkan keamanan dan keterlacakan.

Model GitOps Berbasis Pull vs Berbasis Push

Dalam pendekatan GitOps, terdapat dua model utama untuk menerapkan dan mengelola konfigurasi infrastruktur dan aplikasi: berbasis pull dan berbasis push. Kedua model ini berbeda dalam cara menangani perubahan konfigurasi dan menerapkannya ke lingkungan target.

Model Berbasis Pull (GitOps Tipikal)

Pendekatan berbasis pull bergantung pada penyimpanan status yang diinginkan dari sistem di repositori Git. Operator GitOps, seperti Flux atau Argo CD, secara kontinu memantau repositori untuk perubahan. Saat pembaruan terdeteksi, operator secara otomatis menarik konfigurasi yang diperbarui dan menerapkannya ke lingkungan target. 

Model berbasis pull juga menawarkan deteksi drift dan self-healing, karena klaster terus-menerus “menarik” status yang diinginkan dari Git. Ini memastikan bahwa setiap perubahan yang tidak diinginkan atau drift konfigurasi di lingkungan akan dikoreksi secara otomatis, menjaga konsistensi dan stabilitas

Model Berbasis Push (Menggunakan Alat CI/CD)

Pendekatan berbasis push mengandalkan alat seperti GitHub Actions atau layanan CI/CD lainnya untuk mendorong pembaruan ke klaster setiap kali perubahan dikomit. Berbeda dengan model berbasis pull, pendekatan berbasis push tidak memiliki rekonsiliasi berkelanjutan, artinya tidak ada deteksi drift bawaan atau rollback otomatis. Ini membuatnya kurang tangguh terhadap perubahan yang tidak diinginkan di lingkungan. Namun, model berbasis push sering kali lebih sederhana untuk diterapkan dan memberikan kontrol granular atas penerapan.

Mengintegrasikan GitOps ke dalam Proyek LLM 

Kami akan berfokus pada pendekatan GitOps berbasis push menggunakan GitHub Actions, karena lebih sederhana untuk disiapkan dan memerlukan pengetahuan awal yang minimal. Meskipun sistem berbasis push mungkin tidak menawarkan semua keunggulan pendekatan berbasis pull, sistem ini tetap menyediakan fitur GitOps penting seperti konfigurasi yang dikendalikan versi, penerapan otomatis, dan rollback yang disederhanakan.

Pada bagian ini, kita akan menerapkan prinsip GitOps pada proyek dari tutorial How to Deploy LLM Applications Using Docker: A Step-by-Step Guide. Proyek ini mencakup kode untuk aplikasi Gradio, Dockerfile, dan requirements.txt. Ini menunjukkan cara menerapkan aplikasi AI ke cloud menggunakan Docker.

How to Deploy LLM Applications Using Docker: A Step-by-Step Guide

Sumber: How to Deploy LLM Applications Using Docker: A Step-by-Step Guide

Adopsi pola pikir MLOps untuk melatih, mendokumentasikan, memelihara, dan menskalakan model machine learning Anda secara efektif dengan mendaftar di kursus Developing Machine Learning Models for Production with an MLOps Mindset.

Struktur proyek

Proyek GitOps ini dirancang untuk menerapkan aplikasi Large Language Model (LLM) menggunakan Docker, Kubernetes, dan GitHub Actions. Proyek mengorganisasi semua berkas proyek LLM ke dalam folder app, membuat folder infra untuk konfigurasi Kubernetes, dan menggunakan .github/workflows/ untuk automasi CI/CD dengan GitHub Actions.

  • Docker memastikan aplikasi berjalan konsisten di berbagai lingkungan dengan memaketkannya beserta semua dependensi.
  • Kubernetes mengotomatisasi penerapan, penskalaan, dan pengelolaan aplikasi.
  • GitHub Actions mengotomatisasi pengujian, pembuatan, dan penerapan aplikasi.

Ikuti kursus Introduction to Kubernetes dan pelajari dasar-dasar Kubernetes serta terapkan dan orkestrasi container menggunakan Manifest dan instruksi kubectl.

Struktur ini memastikan penerapan yang otomatis, dapat diskalakan, dan spesifik lingkungan untuk aplikasi LLM Anda, mengikuti prinsip GitOps modern.

Deploying-LLM-Applications-with-Docker/
├── app/
│   ├── requirements.txt      <-- Python dependencies for your LLM app
│   ├── main.py               <-- Your LLM application code
│   └── Dockerfile            <-- Docker instructions for building the app
├── infra/
│   ├── dev/                  <-- Dev environment configs (YAML or Helm)
│   ├── staging/              <-- Staging environment configs
│   └── production/           <-- Production environment configs
└── .github/
    └── workflows/
        ├── ci.yaml           <-- GitHub Actions workflow for continuous integration
        └── cd.yaml           <-- GitHub Actions workflow for continuous deployment

Berikut ringkasan sederhananya:

  • app/: Berisi kode aplikasi (main.py), dependensi (requirements.txt), dan Dockerfile untuk membangun aplikasi menjadi container.
  • infra/: Menyimpan konfigurasi Kubernetes untuk berbagai lingkungan:
    • folder dev/, staging/, dan production/ untuk pengaturan spesifik lingkungan.
  • .github/workflows/: Mengotomatisasi CI/CD dengan GitHub Actions:
    • ci.yaml: Membangun aplikasi dan image docker.
    • cd.yaml: Menerapkan aplikasi dengan mendorong image Docker dan menerapkan konfigurasi Kubernetes.

Pelajari perbedaan antara Kubernetes dan Docker dengan membaca tutorial Kubernetes vs Docker.

Gambaran umum workflow GitHub Actions

Berikut yang terjadi dalam workflow GitHub Actions:

Developer commits code + config to GitHub
               |
               v
      GitHub Actions CI (ci.yaml)
       - Builds Docker image
       - (Optional) pushes Docker image
               |
               v
     GitHub Actions CD (cd.yaml)
       - Deploys updated app/config
       - kubectl apply or helm upgrade
               |
               v
      Kubernetes Cluster Updated
  1. Pengembang Melakukan Commit Perubahan: Pembaruan kode dan konfigurasi didorong ke GitHub.
  2. Pipeline CI (ci.yaml):
    • Membangun image Docker.
    • Secara opsional mendorong image ke container registry.
    • Menjalankan pengujian untuk memvalidasi aplikasi.
  3. Pipeline CD (cd.yaml):
    • Menerapkan aplikasi atau konfigurasi yang diperbarui.
    • Menjalankan kubectl apply atau helm upgrade untuk memperbarui manifest Kubernetes.
  4. Klaster Kubernetes Diperbarui: Klaster menjalankan versi aplikasi yang baru.

Pelajari cara mengotomatisasi pelatihan, evaluasi, versioning, dan penerapan model menggunakan GitHub Actions dan buat sebuah berkas dengan mengikuti tutorial A Beginner's Guide to CI/CD for Machine Learning.

Keunggulan Utama dan Kompromi Menggunakan Pendekatan GitOps Berbasis Push

Jika Anda memiliki pengalaman sebelumnya dengan GitHub Actions, menyiapkan metodologi GitOps menggunakan pendekatan berbasis push bisa jadi mudah. Yang perlu Anda lakukan hanyalah menambahkan berkas konfigurasi infrastruktur, menyiapkan pipeline CI/CD, dan Anda siap berjalan. Namun, meskipun pendekatan ini sederhana, ada beberapa kompromi penting yang perlu dipertimbangkan.

Keunggulan

  • Sederhana: Anda hanya memerlukan GitHub Actions untuk menerapkan pendekatan ini—tidak perlu operator GitOps tambahan seperti Argo CD atau Flux.
  • Satu tempat untuk semua: GitHub Actions menyediakan satu platform untuk membangun, menguji, dan menerapkan aplikasi Anda, menyederhanakan seluruh proses.

Kompromi

  • Bukan true pull-based: Tidak seperti alat GitOps berbasis pull seperti Argo CD, pendekatan ini tidak memiliki "rekonsiliasi berkelanjutan". Artinya, status klaster tidak dipantau dan direkonsiliasi secara otomatis dengan status yang diinginkan di Git.
  • Tidak ada deteksi drift: Jika seseorang memodifikasi resource di klaster secara manual, perubahan ini tidak akan otomatis dikembalikan untuk menyesuaikan dengan repositori Git. Seiring waktu, hal ini dapat menyebabkan drift konfigurasi.
  • Keamanan: Untuk mengizinkan GitHub Actions menerapkan ke klaster Anda, Anda harus menyimpan kredensial klaster di GitHub secrets atau menggunakan metode autentikasi berbasis OIDC. Keduanya memerlukan penanganan yang cermat untuk menghindari risiko keamanan.

Transisi ke model berbasis pull

Seiring skala proyek Anda bertambah atau kebutuhan Anda menjadi lebih menuntut, beralih ke model GitOps berbasis pull dapat menawarkan banyak keunggulan. Jika tim Anda memerlukan fitur seperti self-healing, rekonsiliasi berkelanjutan, atau dasbor visual, mengadopsi alat berbasis pull seperti Argo CD atau Flux mungkin menjadi langkah logis berikutnya.

  • Self-healing: Mengembalikan status klaster secara otomatis jika terjadi drift.
  • Rekonsiliasi berkelanjutan: Memantau repositori Git Anda untuk perubahan konfigurasi 24/7.
  • Dasbor visual: Untuk memeriksa status aplikasi dan log.

Anda dapat beralih ke alat berbasis pull seperti Argo CD atau Flux. Mereka akan terus memantau repositori Anda dan memastikan klaster selalu sesuai dengan yang ada di Git—tanpa langkah “push” manual yang diperlukan setelah commit awal.

Kesimpulan

Untuk menerapkan GitOps secara efektif, sebaiknya mulai dari yang kecil dan secara bertahap mengadopsi teknologinya. Mulailah dengan Dockerfile sederhana untuk mengontainerisasi aplikasi Anda dan menerapkannya ke cloud. Lalu, perkenalkan Kubernetes untuk memungkinkan skalabilitas dan keandalan melalui penerapan dan pengelolaan otomatis. 

Setelah nyaman, adopsi pendekatan GitOps berbasis push menggunakan alat seperti GitHub Actions untuk mengotomatisasi baik infrastruktur cloud maupun penerapan aplikasi. Terakhir, saat proyek Anda matang dan memerlukan stabilitas setingkat produksi, beralihlah ke model berbasis pull dengan alat seperti Argo CD atau Flux untuk mencapai rekonsiliasi berkelanjutan, deteksi drift, dan kemampuan self-healing. 

Kemajuan bertahap ini memastikan kurva pembelajaran yang mulus sekaligus memanfaatkan GitOps sepenuhnya untuk aplikasi cloud-native modern.

Dalam blog ini, kita telah membahas GitOps, pentingnya, berbagai model GitOps, dan cara mengintegrasikan GitOps ke dalam proyek AI. Jika Anda baru dalam AI, kami sangat merekomendasikan mengikuti jalur keterampilan AI Fundamentals yang membahas dasar-dasar AI, menelusuri model seperti GPT-4o, dan mengungkap rahasia AI generatif untuk menavigasi lanskap AI yang terus berkembang.

Abid Ali Awan

Penulis

Abid Ali Awan

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik

Terkait

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026