GitOps: kolejny modny termin czy przełom w automatyzacji?

GitOps: kolejny modny termin czy przełom w automatyzacji?

Większość z nas, zauważając nowy termin w świecie IT, na blogach lub konferencjach, prędzej czy później zadaje sobie pytanie: „Co to jest? Kolejne modne słowo, „buzzword” czy coś, co naprawdę zasługuje na naszą uwagę i przestudiowanie, obiecując nowe horyzonty?” Tak samo stało się ze mną w przypadku terminu GitOps jakiś czas temu. Uzbrojony w wiele istniejących artykułów oraz wiedzę kolegów z firmy GitLab, próbowałem zrozumieć, czym właściwie jest, i jak jego zastosowanie może wyglądać w praktyce.

A propos nowości terminu GitOps , świadczy również przeprowadzone przez nas ostatnio badanie: ponad połowa ankietowanych jeszcze nie zaczęła pracy z jego zasadami.

Zatem problem zarządzania infrastrukturą nie jest nowy. Wiele dostawców chmurowych jest dostępnych dla szerszej publiczności od ponad dziesięciu lat i wydawałoby się, że powinni uprościć pracę zespołów odpowiedzialnych za infrastrukturę. Jednak w porównaniu do procesu tworzenia aplikacji (gdzie poziom automatyzacji osiąga coraz wyższe horyzonty), projekty infrastrukturalne nadal często obejmują wiele ręcznych zadań i wymagają specjalistycznej wiedzy, szczególnie w obliczu współczesnych wymagań dotyczących odporności, elastyczności, skalowalności i wydolności.

Usługi chmurowe spełniły te wymagania z dużym powodzeniem i to one dały znaczący impuls do rozwoju podejścia IaC. To zrozumiałe. Przecież to one umożliwiły skonfigurowanie całkowicie wirtualnego centrum danych: brak serwerów fizycznych, szaf, komponentów sieciowych, cała infrastruktura może być opisana za pomocą skryptów i plików konfiguracyjnych.

Więc jaka jest właściwie różnica GitOps od IaC? Именно с этого вопроса я и начал свое расследование. Пообщавшись с коллегами, у меня получилось выработать следующее сравнение:

GitOps

IaC

Cały kod jest przechowywany w repozytorium git

Wersjonowanie kodu nie jest obowiązkowe

Deklaratywne opisanie kodu / Idempotencja

Dopuszczalne jest zarówno opis deklaratywny, jak i imperatywny

Zmiany wchodzą w życie za pomocą mechanizmów Merge Request / Pull Request

Zatwierdzenie, akceptacja i współpraca nie są obowiązkowe

Proces wdrażania aktualizacji jest zautomatyzowany

Proces wdrażania aktualizacji nie jest normowany (automatyczny, ręczny, kopiowanie plików, przy użyciu wiersza poleceń itp.)

Innymi słowy GitOps pojawił się na świecie dzięki zastosowaniu zasad IaC. Po pierwsze, infrastrukturę i konfiguracje można teraz przechowywać dokładnie tak samo jak aplikacje. Kod jest łatwy do przechowywania, łatwo się nim dzielić, porównywać, korzystać z możliwości wersjonowania. Wersje, gałęzie, historia. I to wszystko w ogólnodostępnym miejscu dla całego zespołu. Dlatego naturalnym krokiem było zaczęcie używania systemów kontroli wersji, w szczególności git, jako najbardziej popularnego.

Z drugiej strony, pojawiła się możliwość automatyzacji procesów zarządzania infrastrukturą. Można to teraz zrobić szybciej, bardziej niezawodnie i taniej. Zwłaszcza, że zasady CI/CD były już znane i popularne wśród programistów oprogramowania. Konieczne było tylko przeniesienie i zastosowanie już znanej wiedzy i umiejętności w nowym obszarze. Jednak te praktyki wykraczały poza standardową definicję infrastruktury jako kodu, stąd pojawiło się pojęcie. GitOps.

GitOps: kolejny modny termin czy przełom w automatyzacji?

Ciekawość GitOps, oczywiście, tkwi także w tym, że nie jest to produkt, wtyczka lub platforma związana z żadnym dostawcą. Jest to raczej paradygma i zestaw zasad, analogicznie do innego znanego nam terminu: DevOps.

W firmie GitLab Opracowaliśmy dwie definicje tego nowego terminu: teoretyczną i praktyczną. Zacznijmy od teoretycznej:

GitOps to metodologia, która wykorzystuje zaawansowane zasady DevOps stosowane w rozwoju aplikacji, takie jak kontrola wersji, współpraca, zatwierdzanie, CI/CD, i stosuje je do rozwiązywania zadań związanych z automatyzacją zarządzania infrastrukturą.

Wszystkie procesy GitOps działają przy użyciu już istniejących narzędzi. Cały kod infrastrukturalny jest przechowywany w znanym repozytorium git, zmiany przechodzą przez ten sam proces zatwierdzania, co każdy inny kod programistyczny, a proces wdrażania jest zautomatyzowany, co minimalizuje błędy ludzkie, zwiększa niezawodność i powtarzalność.

Z praktycznego punktu widzenia opisujemy GitOps w następujący sposób:

GitOps: kolejny modny termin czy przełom w automatyzacji?

Infrastrukturę jako kod omówiliśmy już jako jeden z kluczowych elementów tego wzoru. Wyobraźmy sobie teraz pozostałych uczestników.

Merge Request (alternatywna nazwa Pull Request). W kontekście procesu MR to prośba o wprowadzenie zmian w kodzie i następne scalanie gałęzi. W zakresie narzędzi, których używamy, to raczej możliwość uzyskania pełnego obrazu wszystkich wprowadzonych zmian: nie tylko różnice kodu, zebrane z kilku commitów, ale także kontekst, wyniki testów i oczekiwany rezultat. Jeśli mówimy o kodzie infrastruktury, to interesuje nas, jak dokładnie zmieni się infrastruktura, ile nowych zasobów zostanie dodanych lub usuniętych i jakie zmiany będą miały miejsce. Wskazane byłoby, aby było to w bardziej przyjaznym i łatwym do odczytania formacie. W przypadku dostawców chmurowych dobrze byłoby wiedzieć, jakie finansowe konsekwencje pociągnie ta zmiana.

Ale MR to także narzędzie do współpracy, interakcji, komunikacji. To miejsce, gdzie wdrażany jest system zajęć i przeciwwag. Od prostych komentarzy po formalne zatwierdzenia i akceptacje.

A ostatni element: CI/CD, jak już wiemy, umożliwia automatyzację procesu wprowadzania zmian w infrastrukturze, testowania (od prostego sprawdzenia składni po bardziej skomplikowaną analizę statyczną kodu). A także w późniejszym wykrywaniu dryfu: różnic między rzeczywistym a pożądanym stanem systemu. Na przykład, w wyniku nieautoryzowanych ręcznych zmian lub awarii systemów.

Tak, termin GitOps nie wprowadza nas w nic zupełnie nowego, nie wymyśla koła na nowo, a jedynie stosuje już zdobyte doświadczenie w nowym obszarze. Ale w tym kryje się jego siła.

A jeśli nagle zainteresuje cię, jak to wszystko wygląda w praktyce, zapraszam do obejrzenia naszego warsztatu, w którym krok po kroku opowiadam, jak za pomocą GitLab:

  • Wdrożyć podstawowe zasady GitOps

  • Tworzyć i wprowadzać zmiany w infrastrukturze chmurowej (na przykładzie Yandex Cloud)

  • Automatyzować wykrywanie dryfu systemu od pożądanego stanu za pomocą aktywnego monitorowania

GitOps: kolejny modny termin czy przełom w automatyzacji?https://bit.ly/34tRpwZ

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster