GitOps menjelaskan cara mengoperasikan dan mengelola perangkat lunak menggunakan metode yang berakar pada sistem kontrol versi Git. Menggunakan alur kerja berbasis GitOps membuatnya lebih mudah untuk membangun, menyebarkan, memelihara, dan berkolaborasi pada perangkat lunak dengan mengharuskan properti sistem untuk didefinisikan sebagai file dalam repositori Git.
Peran Git sebagai satu-satunya sumber kebenaran tersirat oleh terminologi tersebut. Namun, implementasi aktual dari proses yang digerakkan oleh GitOps selalu terbuka untuk interpretasi. Ambiguitas ini sekarang diselesaikan oleh standar OpenGitOps, tes yang didukung CNCF yang mendefinisikan prinsip-prinsip yang mengarah pada sistem GitOps yang dapat diulang.
Dalam artikel ini, kita akan melihat apa prinsipnya, mengapa prinsip itu penting, dan bagaimana Anda dapat menggunakannya untuk membangun perangkat lunak yang skalabel dan berkelanjutan. Standar dikembangkan menggunakan wawasan dari lebih dari 90 perusahaan terkemuka dan pihak yang berkepentingan di Kelompok Kerja GitOps.
1. Pernyataan Negara
Prinsip pertama menyatakan bahwa semua sistem yang dikelola oleh GitOps harus mendeklarasikan statusnya secara deklaratif. Anda harus menentukan seperti apa keadaan ideal pada titik waktu saat ini, daripada memberikan instruksi khusus tentang cara merakit keadaan itu.
Konfigurasi deklaratif memisahkan keadaan sistem yang diinginkan dari metode yang digunakan untuk berpindah ke keadaan itu. Ini lebih mudah dipelihara dan lebih mudah untuk dipikirkan seiring waktu; kontributor hanya perlu menjelaskan sistem sebagaimana mestinya sekarangmenghilangkan kebutuhan untuk menulis transfer yang memengaruhi perubahan status.
Tidak menentukan langkah pasti yang dicapai negara bagian akan menghemat waktu pengembangan dan meningkatkan fleksibilitas penerapan. Anda dapat memulai instance aplikasi Anda di lingkungan baru hanya dengan menerapkan definisi status terbaru dari repositori Anda.
Konfigurasi deklaratif umumnya digunakan dalam alat Infrastruktur-sebagai-Kode seperti Ansible dan Terraform. Anda menulis file konfigurasi yang menentukan komponen infrastruktur yang Anda inginkan tersedia. Alat tersebut mengubah deklarasi Anda menjadi panggilan API dan perintah yang menyediakan sumber daya yang diperlukan. Platform orkestrasi container Kubernetes adalah contoh lain dari sistem deklaratif.
2. Versi dan Kekekalan
Prinsip kedua OpenGitOps menyatakan bahwa status sistem Anda harus sepenuhnya diversi sepanjang masa pakainya. Di sinilah Git benar-benar masuk, memungkinkan Anda mengkomit file konfigurasi Anda, menggabungkan perubahan dari kolaborator lain, dan mengembangkan status Anda dari waktu ke waktu.
Bersama dengan definisi status deklaratif, pembuatan versi memberi Anda cara yang dijamin untuk memulihkan sistem jika terjadi kesalahan. Memeriksa komit yang lebih lama dan menerapkan kembali file konfigurasi Anda akan mengembalikan sistem ke statusnya saat itu.
Menyimpan status dengan cara ini juga membantu mengimplementasikan kekekalan. Itu hanya cara menerapkan perubahan pada infrastruktur Anda harus dengan mengubah file di repositori Anda. Dengan mengikuti prinsip ini, Anda dapat menegaskan status sistem yang benar-benar mencerminkan deklarasi di sumber Anda. Penonaktifan status dengan secara langsung mengubah komponen infrastruktur Anda harus dihindari karena akan membuat perbedaan antara status sistem yang sebenarnya dan status “yang diinginkan” dalam repositori manajemen Anda.
3. Agen Berbasis Tarik
Tujuan akhir dari GitOps adalah untuk mengotomatisasi manajemen sistem sebanyak mungkin. Menggunakan pendekatan berbasis tarik untuk menerapkan perubahan membantu memfasilitasi ini. Agen yang berjalan dalam infrastruktur Anda harus secara berkala menarik status saat ini dari repositori Git Anda dan menerapkan perubahan apa pun.
Model penerapan berbasis push tradisional biasanya bekerja dengan mengirimkan perubahan ke infrastruktur Anda sebagai bagian dari skrip pipeline CI/CD. Meskipun terasa otomatis, ini merupakan langkah ekstra yang menciptakan titik integrasi antara repositori sumber dan infrastruktur Anda. Dalam model berbasis tarikan, agen dalam lingkungan melakukan polling terhadap repositori sumber Anda dan secara otomatis mendeteksi perubahan.
Model ini menciptakan infrastruktur mandiri yang tidak mudah “melayang”. Drift terjadi ketika perubahan dalam lingkungan menimbulkan perbedaan dibandingkan dengan keadaan yang dideklarasikan oleh repositori Anda. Dalam model penerapan berbasis push, penyimpangan tidak diselesaikan hingga skrip Anda berikutnya menjalankan dorongan lain. Metode berbasis tarik meminimalkan penyimpangan dengan polling secara teratur dan menerapkan kembali status terbaru.
Menggunakan agen penarik juga merupakan manfaat keamanan. Pendekatan berbasis push mengharuskan Anda untuk mengekspos infrastruktur Anda dalam beberapa cara. Ini diperlukan agar server kontrol sumber Anda dapat mengirim status yang diperbarui dan menjalankan perintah yang menerapkannya. Dengan menjalankan agen dalam infrastruktur Anda, Anda menghilangkan kebutuhan untuk menyediakan jalur ke sana. Anda dapat memperketat kontrol firewall Anda untuk mengizinkan semua akses eksternal ke lingkungan.
Demikian pula, Anda tidak perlu membuat kredensial yang memberikan akses ke infrastruktur Anda. Kompromi server CI yang digunakan dalam model berbasis push dapat membocorkan kunci yang mengamankan lingkungan langsung Anda. Membalikkan aliran ini dengan memberi agen penarik token akses untuk platform hosting Git Anda kurang berisiko daripada membuka lingkungan Anda ke akses eksternal.
4. Rekonsiliasi Berkelanjutan
Prinsip terakhir OpenGitOps menyangkut rekonsiliasi berkelanjutan. Ini dimungkinkan oleh penggunaan gabungan definisi status deklaratif dengan agen berbasis tarik.
Agen Anda terus memantau keadaan sistem Anda. Mereka mengambil tindakan untuk mendamaikan lingkungan kembali ke keadaan yang diekspresikan saat perubahan dibuat atau penyimpangan alami terjadi. Ini berbeda dengan model tradisional di mana penyebaran adalah proses linier yang dimulai, menjalankan urutan perintah, dan berakhir meninggalkan infrastruktur untuk berdiri sendiri.
Rekonsiliasi berkelanjutan mendefinisikan alur kerja GitOps sebagai proses dinamis yang beradaptasi dengan perubahan kondisi secara real-time. Jauh dari penerapan “setel dan lupakan” yang sederhana, agen GitOps adalah komponen aktif yang bekerja terus menerus untuk mempertahankan status yang diinginkan. Ini memungkinkan Anda mengakhiri hari dengan yakin bahwa penerapan masih berfungsi sebagaimana mestinya.
Kesimpulan
Prinsip OpenGitOps menjelaskan empat karakteristik umum sistem yang dikelola secara efektif menggunakan alur kerja berbasis GitOps. Mereka memformalkan karakteristik utama dari implementasi yang sukses, menawarkan titik referensi bagi tim DevOps untuk membandingkan sistem mereka sendiri.
Seperti yang ditunjukkan oleh prinsip-prinsip ini, GitOps lebih dari sekadar file konfigurasi dalam repositori Git. Ini adalah metode yang koheren untuk mendefinisikan, menerapkan, dan memelihara sistem; sementara repositori Git sangat penting untuk pembuatan versi, komponen lain seperti agen perangkat lunak berbasis tarik membuka potensi penuh dari pendekatan ini.
Penggunaan alur kerja GitOps yang efektif yang menggabungkan prinsip-prinsip OpenGitOps dapat meningkatkan throughput, meningkatkan kesehatan penerapan, dan mengurangi waktu yang dihabiskan untuk mengoperasikan dan memelihara infrastruktur Anda. Pendekatan ini memudahkan untuk memeriksa status sistem dan melakukan atau mengembalikan perubahan menggunakan Git dan editor kode favorit Anda. Terserah integrasi agen infrastruktur Anda untuk mengidentifikasi dan menerapkan perubahan tersebut, menghilangkan interaksi manusia dengan penerapan dan risiko yang menyertainya.