Sebagian besar dari kita, ketika memperhatikan istilah baru lainnya di dunia blog atau konferensi TI, cepat atau lambat akan menanyakan pertanyaan serupa: βApa ini? Sekadar kata kunci lain, βkata kunciβ atau sesuatu yang benar-benar layak untuk diperhatikan, dipelajari, dan menjanjikan cakrawala baru?β Hal yang sama terjadi pada saya dengan istilah tersebut GitOps beberapa waktu lalu. Berbekal banyak artikel yang ada, serta pengetahuan rekan-rekan dari perusahaan
Berbicara tentang kebaruan istilah tersebut GitOps Survei terbaru kami juga menyatakan: lebih dari separuh responden belum mulai menerapkan prinsip-prinsipnya.
Jadi, permasalahan pengelolaan infrastruktur bukanlah hal baru. Banyak penyedia cloud telah tersedia untuk masyarakat umum selama belasan tahun dan, tampaknya, seharusnya membuat pekerjaan tim yang bertanggung jawab atas infrastruktur menjadi sederhana dan mudah. Namun, jika dibandingkan dengan proses pengembangan aplikasi (dimana otomasi mencapai tingkat yang baru), proyek infrastruktur masih sering melibatkan banyak tugas manual dan memerlukan pengetahuan dan keahlian khusus, terutama mengingat persyaratan saat ini dalam hal toleransi kesalahan, fleksibilitas, skalabilitas, dan elastisitas.
Layanan cloud memenuhi persyaratan ini dengan sangat sukses dan memberikan dorongan signifikan terhadap pengembangan pendekatan ini IaC. Hal ini dapat dimengerti. Bagaimanapun, mereka memungkinkan untuk mengkonfigurasi pusat data virtual sepenuhnya: tidak ada server fisik, rak, atau komponen jaringan; seluruh infrastruktur dapat dijelaskan menggunakan skrip dan file konfigurasi.
Jadi apa sebenarnya perbedaannya? GitOps dari IaC? Dengan pertanyaan inilah saya memulai penyelidikan saya. Setelah berdiskusi dengan rekan-rekan, saya dapat menemukan perbandingan berikut:
GitOps
IaC
Semua kode disimpan dalam repositori git
Pembuatan versi kode bersifat opsional
Deskripsi Kode Deklaratif / Idempotensi
Deskripsi deklaratif dan imperatif dapat diterima
Perubahan berlaku menggunakan mekanisme Permintaan Penggabungan/Permintaan Tarik
Perjanjian, persetujuan, dan kolaborasi adalah opsional
Proses peluncuran pembaruan dilakukan secara otomatis
Proses peluncuran pembaruan tidak terstandarisasi (otomatis, manual, menyalin file, menggunakan baris perintah, dll.)
Dengan kata lain GitOps lahir justru melalui penerapan prinsip-prinsip tersebut IaC. Pertama, infrastruktur dan konfigurasi kini dapat disimpan dengan cara yang sama seperti aplikasi. Kode ini mudah disimpan, mudah dibagikan, dibandingkan, dan menggunakan kemampuan pembuatan versi. Versi, cabang, sejarah. Dan semua ini ada di tempat yang dapat diakses publik oleh seluruh tim. Oleh karena itu, penggunaan sistem kontrol versi menjadi perkembangan yang sepenuhnya alami. Khususnya, git, sebagai yang paling populer.
Di sisi lain, proses pengelolaan infrastruktur menjadi mungkin untuk diotomatisasi. Sekarang hal ini dapat dilakukan dengan lebih cepat, lebih andal, dan lebih murah. Apalagi prinsip CI/CD sudah dikenal dan populer di kalangan pengembang perangkat lunak. Yang perlu dilakukan hanyalah mentransfer dan menerapkan pengetahuan dan keterampilan yang sudah diketahui ke bidang baru. Namun praktik-praktik ini melampaui definisi standar Infrastruktur sebagai kode, sehingga menjadi konsepnya GitOps.
Keingintahuan GitOps, tentu saja, juga fakta bahwa ini bukan produk, plugin, atau platform yang terkait dengan vendor mana pun. Ini lebih merupakan paradigma dan seperangkat prinsip, mirip dengan istilah lain yang kita kenal: DevOps.
Di perusahaan
GitOps adalah metodologi yang mengambil prinsip-prinsip DevOps terbaik yang digunakan untuk pengembangan aplikasi, seperti kontrol versi, kolaborasi, orkestrasi, CI/CD, dan menerapkannya pada tantangan otomatisasi manajemen infrastruktur.
Semua proses GitOps Saya bekerja menggunakan alat yang ada. Semua kode infrastruktur disimpan dalam repositori git yang sudah dikenal, perubahan melalui proses persetujuan yang sama seperti kode program lainnya, dan proses peluncuran dilakukan secara otomatis, yang memungkinkan kami meminimalkan kesalahan manusia, meningkatkan keandalan, dan reproduktifitas.
Dari sudut pandang praktis, kami jelaskan GitOps sebagai berikut:
Kita telah membahas infrastruktur sebagai kode sebagai salah satu komponen kunci dari formula ini. Mari perkenalkan peserta lainnya.
Permintaan Penggabungan (nama alternatif Permintaan Tarik). Dalam istilah proses, MR adalah permintaan untuk menerapkan perubahan kode dan kemudian menggabungkan cabang. Namun dalam hal alat yang kami gunakan, ini lebih merupakan peluang untuk mendapatkan gambaran lengkap tentang semua perubahan yang dilakukan: tidak hanya perbedaan kode yang dikumpulkan dari sejumlah penerapan, tetapi juga konteks, hasil pengujian, dan hasil akhir yang diharapkan. Jika kita berbicara tentang kode infrastruktur, maka kita tertarik pada bagaimana sebenarnya infrastruktur akan berubah, berapa banyak sumber daya baru yang akan ditambahkan atau dihapus, diubah. Sebaiknya dalam format yang lebih nyaman dan mudah dibaca. Bagi penyedia cloud, ada baiknya untuk mengetahui dampak finansial dari perubahan ini.
Namun MR juga merupakan sarana kolaborasi, interaksi, dan komunikasi. Tempat dimana sistem checks and balances berperan. Dari komentar sederhana hingga persetujuan dan persetujuan formal.
Komponen terakhir: CI/CD, seperti yang telah kita ketahui, memungkinkan untuk mengotomatiskan proses pembuatan perubahan dan pengujian infrastruktur (dari pemeriksaan sintaksis sederhana hingga analisis kode statis yang lebih kompleks). Dan juga dalam deteksi penyimpangan selanjutnya: perbedaan antara keadaan sistem yang sebenarnya dan yang diinginkan. Misalnya, akibat perubahan manual yang tidak sah atau kegagalan sistem.
Ya, istilahnya GitOps tidak memperkenalkan kita pada sesuatu yang benar-benar baru, tidak menemukan kembali roda, tetapi hanya menerapkan pengalaman yang sudah terkumpul di bidang baru. Namun di sinilah letak kekuatannya.
Dan jika Anda tiba-tiba tertarik dengan tampilannya dalam praktik, maka saya mengundang Anda untuk melihat kami
-
Menerapkan prinsip dasar GitOps
-
Membuat dan melakukan perubahan pada infrastruktur cloud (menggunakan contoh Yandex Cloud)
-
Otomatiskan deteksi penyimpangan sistem dari keadaan yang diinginkan menggunakan pemantauan aktif
https://bit.ly/34tRpwZ
Sumber: www.habr.com