GitOps: başqa bir söz və ya avtomatlaşdırmada sıçrayış?

GitOps: başqa bir söz və ya avtomatlaşdırmada sıçrayış?

Əksəriyyətimiz İT-bloqosferində və ya konfransında başqa bir yeni termini görəndə gec-tez oxşar sualı veririk: “Bu nədir? Sadəcə başqa bir səs-küy, “buzzword” və ya həqiqətən diqqətə, öyrənməyə və yeni üfüqlər vəd etməyə layiq bir şey? Terminlə eyni şey mənim başıma gəldi GitOps bir müddət əvvəl. Bir çox mövcud məqalələrlə, eləcə də şirkətdəki həmkarlarının bilikləri ilə silahlanmışdır GitLab, Mən bunun hansı heyvan olduğunu və onun istifadəsinin praktikada necə görünə biləcəyini anlamağa çalışdım.

Yeri gəlmişkən, terminin yeniliyi haqqında GitOps Son sorğumuz da deyir: sorğuda iştirak edənlərin yarıdan çoxu hələ də onun prinsipləri ilə işləməyə başlamamışdır.

Deməli, infrastrukturun idarə olunması problemi yeni deyil. Bir çox bulud provayderləri on ildir ki, geniş ictimaiyyət üçün əlçatandır və görünür, infrastruktura cavabdeh olan komandaların işini sadə və sadə etməli idi. Bununla belə, proqramların işlənib hazırlanması prosesi ilə (avtomatlaşdırmanın getdikcə yeni səviyyələrə çatdığı yerlərdə) müqayisə edildikdə, infrastruktur layihələri hələ də tez-tez bir çox əl işlərini əhatə edir və xüsusi bilik və təcrübə tələb edir.

Bulud xidmətləri bu tələbləri çox uğurla yerinə yetirdi və yanaşmanın inkişafına əhəmiyyətli təkan verən də məhz onlar oldu IaC. Bu başa düşüləndir. Axı, onlar tamamilə virtual məlumat mərkəzini konfiqurasiya etməyə imkan verdilər: fiziki serverlər, raflar və ya şəbəkə komponentləri yoxdur; bütün infrastruktur skriptlərdən və konfiqurasiya fayllarından istifadə edərək təsvir edilə bilər.

Beləliklə, fərq nədir? GitOps etibarən IaC? Məhz bu sualla araşdırmaya başladım. Həmkarlarımla söhbət etdikdən sonra aşağıdakı müqayisəyə gələ bildim:

GitOps

IaC

Bütün kodlar git deposunda saxlanılır

Kod versiyası isteğe bağlıdır

Deklarativ Kod Təsviri / Idempotency

Həm deklarativ, həm də imperativ təsvirlər məqbuldur

Dəyişikliklər Birləşdirmə Sorğusu / Çəkmə Sorğusu mexanizmlərindən istifadə etməklə qüvvəyə minir

Razılaşma, təsdiq və əməkdaşlıq isteğe bağlıdır

Yeniləmənin yayılması prosesi avtomatlaşdırılıb

Yeniləmə prosesi standartlaşdırılmayıb (avtomatik, əl ilə, faylların surətinin çıxarılması, əmr satırından istifadə və s.)

Başqa sözlə GitOps məhz prinsiplərin tətbiqi ilə doğulmuşdur IaC. Birincisi, infrastruktur və konfiqurasiyalar indi tətbiqlərlə eyni şəkildə saxlanıla bilər. Kodu saxlamaq asandır, paylaşmaq, müqayisə etmək və versiya imkanlarından istifadə etmək asandır. Versiyalar, filiallar, tarix. Və bütün bunlar bütün komanda üçün açıq bir yerdə. Buna görə versiyaya nəzarət sistemlərinin istifadəsi tamamilə təbii bir inkişafa çevrildi. Xüsusilə, git, ən populyar kimi.

Digər tərəfdən, infrastrukturun idarə edilməsi proseslərinin avtomatlaşdırılması mümkün oldu. İndi bunu daha sürətli, daha etibarlı və daha ucuz etmək olar. Üstəlik, CI / CD prinsipləri proqram tərtibatçıları arasında artıq məlum və populyar idi. Sadəcə artıq məlum olan bilik və bacarıqları yeni sahəyə köçürmək və tətbiq etmək lazım idi. Bununla belə, bu təcrübələr İnfrastrukturun kod kimi standart tərifindən, dolayısıyla konsepsiyadan kənara çıxdı GitOps.

GitOps: başqa bir söz və ya avtomatlaşdırmada sıçrayış?

Maraq GitOps, əlbəttə ki, hər hansı bir satıcı ilə əlaqəli bir məhsul, plagin və ya platforma olmadığı üçün. Bu, daha çox tanış olduğumuz başqa bir terminə bənzər bir paradiqma və prinsiplər toplusudur: DevOps.

Şirkət GitLab biz bu yeni terminin iki tərifini hazırlamışıq: nəzəri və praktiki. Nəzəri ilə başlayaq:

GitOps, versiyaya nəzarət, əməkdaşlıq, orkestrləşdirmə, CI/CD kimi proqramların inkişafı üçün istifadə olunan ən yaxşı DevOps prinsiplərini götürən və onları infrastrukturun idarə edilməsinin avtomatlaşdırılması problemlərinə tətbiq edən metodologiyadır.

Bütün proseslər GitOps Mövcud vasitələrdən istifadə edərək işləyirəm. Bütün infrastruktur kodu artıq tanış olan git repozitoriyada saxlanılır, dəyişikliklər hər hansı digər proqram kodu kimi eyni təsdiqləmə prosesindən keçir və təqdimetmə prosesi avtomatlaşdırılmışdır ki, bu da insan səhvlərini minimuma endirməyə, etibarlılığı və təkrar istehsal imkanlarını artırmağa imkan verir.

Praktik baxımdan biz təsvir edirik GitOps belədir:

GitOps: başqa bir söz və ya avtomatlaşdırmada sıçrayış?

Biz artıq bu formulun əsas komponentlərindən biri kimi kod kimi infrastrukturu müzakirə etdik. Qalan iştirakçıları təqdim edək.

Birləşdirmə sorğusu (alternativ ad Pull Request). Proses baxımından, MR kod dəyişikliklərini tətbiq etmək və sonra filialları birləşdirmək tələbidir. Lakin istifadə etdiyimiz alətlər baxımından bu, edilən bütün dəyişikliklərin tam təsvirini əldə etmək üçün daha çox fürsətdir: yalnız müəyyən sayda öhdəliklərdən toplanan kod fərqi deyil, həm də kontekst, test nəticələri və gözlənilən yekun nəticə. Əgər biz infrastruktur kodundan danışırıqsa, o zaman biz infrastrukturun dəqiq necə dəyişəcəyi, nə qədər yeni resursun əlavə və ya çıxarılacağı, dəyişdiriləcəyi ilə maraqlanırıq. Tercihen daha rahat və oxunması asan formatda. Bulud provayderləri üçün bu dəyişikliyin maliyyə təsirinin nə olacağını bilmək yaxşı fikirdir.

Lakin MR həm də əməkdaşlıq, qarşılıqlı əlaqə və ünsiyyət vasitəsidir. Yoxlama və tarazlıq sisteminin işə düşdüyü yer. Sadə şərhlərdən rəsmi təsdiq və təsdiqlərə qədər.

Yaxşı, sonuncu komponent: CI/CD, artıq bildiyimiz kimi, infrastruktur dəyişiklikləri və sınaqların aparılması prosesini avtomatlaşdırmağa imkan verir (sadə sintaksis yoxlamasından daha mürəkkəb statik kod təhlilinə qədər). Həm də sürüşmənin sonrakı aşkarlanmasında: sistemin real və istənilən vəziyyəti arasındakı fərqlər. Məsələn, icazəsiz əl ilə edilən dəyişikliklər və ya sistem nasazlığı nəticəsində.

Bəli, termin GitOps bizi tamamilə yeni bir şeylə tanış etmir, təkəri yenidən kəşf etmir, sadəcə olaraq artıq toplanmış təcrübəni yeni sahədə tətbiq edir. Amma onun gücü buradadır.

Və birdən bütün bunların praktikada necə göründüyü ilə maraqlanırsınızsa, mən sizi bizimkilərə baxmağa dəvət edirəm master-klassGitLab-dan necə istifadə edəcəyinizi sizə addım-addım izah edirəm:

  • GitOps-un əsas prinsiplərini həyata keçirin

  • Bulud infrastrukturunu yaradın və dəyişikliklər edin (Yandex Bulud nümunəsindən istifadə etməklə)

  • Aktiv monitorinqdən istifadə edərək sistemin istənilən vəziyyətdən sürüşməsinin aşkar edilməsini avtomatlaşdırın

GitOps: başqa bir söz və ya avtomatlaşdırmada sıçrayış?https://bit.ly/34tRpwZ

Mənbə: www.habr.com

Добавить комментарий