GitOps: тағы бір шумақты сөз немесе автоматтандырудағы серпіліс пе?

GitOps: тағы бір шумақты сөз немесе автоматтандырудағы серпіліс пе?

Біздің көпшілігіміз IT блогосферадағы немесе конференциядағы тағы бір жаңа терминді байқап, ерте ме, кеш пе, осындай сұрақ қоямыз: «Бұл не? Жай ғана тағы бір шумақты сөз, «сөз» немесе шынымен назар аударуға, зерттеуге және жаңа көкжиектерге үміттенуге тұрарлық нәрсе ме? Терминмен де солай болды GitOps біраз уақыт бұрын. Көптеген бар мақалалармен, сондай-ақ компаниядағы әріптестердің білімімен қаруланған GitLab, Мен бұл қандай аң екенін және оны пайдалану іс жүзінде қандай болуы мүмкін екенін анықтауға тырыстым.

Айтпақшы, терминнің жаңалығы туралы GitOps Біздің жақында жүргізген сауалнамамыз да былай дейді: сауалнамаға қатысқандардың жартысынан көбі оның принциптерімен жұмыс істей бастаған жоқ.

Демек, инфрақұрылымды басқару мәселесі жаңалық емес. Көптеген бұлттық провайдерлер он екі жыл бойы жалпы жұртшылыққа қолжетімді болды және инфрақұрылымға жауапты топтардың жұмысын қарапайым және қарапайым ету керек сияқты. Дегенмен, қолданбаларды әзірлеу процесімен салыстырғанда (автоматтандыру барған сайын жаңа деңгейге жетеді), инфрақұрылымдық жобалар әлі де жиі қолмен орындалатын көптеген тапсырмаларды қамтиды және арнайы білім мен тәжірибені қажет етеді, әсіресе ақауларға төзімділік, икемділік, ауқымдылық және икемділікке қойылатын бүгінгі талаптарды ескере отырып.

Бұлттық қызметтер бұл талаптарды өте сәтті орындады және дәл осы тәсілдің дамуына айтарлықтай серпін берді IaC. Бұл түсінікті. Өйткені, олар толығымен виртуалды деректер орталығын конфигурациялауға мүмкіндік берді: физикалық серверлер, тіректер немесе желілік компоненттер жоқ; бүкіл инфрақұрылымды сценарийлер мен конфигурация файлдары арқылы сипаттауға болады.

Сонымен, нақты қандай айырмашылық бар? GitOps от IaC? Дәл осы сұрақтан мен тергеуді бастадым. Әріптестеріммен сөйлескеннен кейін мен келесі салыстыруға келдім:

GitOps

IaC

Барлық код git репозиторийінде сақталады

Код нұсқасы міндетті емес

Декларативті код Сипаттама / Idempotency

Декларативті және императивті сипаттамалар да қолайлы

Өзгерістер Біріктіру сұрауы/Сұраныс тарту механизмдері арқылы күшіне енеді

Келісім, мақұлдау және ынтымақтастық міндетті емес

Жаңартуларды шығару процесі автоматтандырылған

Жаңартуларды шығару процесі стандартталмаған (автоматты, қолмен, файлдарды көшіру, пәрмен жолын пайдалану және т.б.)

Басқа сөздермен айтқанда GitOps принциптерін қолдану арқылы дәл дүниеге келді IaC. Біріншіден, инфрақұрылым мен конфигурацияларды енді қолданбалар сияқты сақтауға болады. Кодты сақтау оңай, бөлісу, салыстыру және нұсқа жасау мүмкіндіктерін пайдалану оңай. Нұсқалар, тармақтар, тарих. Мұның бәрі бүкіл командаға қолжетімді жерде. Сондықтан нұсқаларды басқару жүйелерін пайдалану толығымен табиғи даму болды. Атап айтқанда, git, ең танымал.

Екінші жағынан, инфрақұрылымды басқару процестерін автоматтандыру мүмкін болды. Енді мұны тезірек, сенімдірек және арзанырақ жасауға болады. Сонымен қатар, CI / CD принциптері бағдарламалық жасақтаманы әзірлеушілер арасында бұрыннан белгілі және танымал болды. Тек бұрыннан белгілі білім мен дағдыларды жаңа салаға көшіру және қолдану қажет болды. Дегенмен, бұл тәжірибелер Инфрақұрылымның код ретінде стандартты анықтамасынан, демек тұжырымдамадан шықты GitOps.

GitOps: тағы бір шумақты сөз немесе автоматтандырудағы серпіліс пе?

Қызығушылық GitOps, әрине, бұл өнім, плагин немесе кез келген жеткізушімен байланысты платформа емес екендігінде. Бұл бізге таныс басқа терминге ұқсас парадигма мен принциптер жиынтығы: DevOps.

Компанияда GitLab біз бұл жаңа терминнің екі анықтамасын әзірледік: теориялық және практикалық. Теориялық тұрғыдан бастайық:

GitOps – нұсқаларды басқару, бірлесіп жұмыс істеу, оркестрлеу, CI/CD сияқты қолданбаларды әзірлеу үшін қолданылатын ең жақсы DevOps принциптерін қабылдайтын және оларды инфрақұрылымды басқаруды автоматтандыру қиындықтарына қолданатын әдістеме.

Барлық процестер GitOps Қолданыстағы құралдармен жұмыс істеймін. Барлық инфрақұрылым коды бұрыннан таныс git репозиторийінде сақталады, өзгертулер кез келген басқа бағдарлама коды сияқты бекіту процесінен өтеді және шығару процесі автоматтандырылған, бұл бізге адам қателерін азайтуға, сенімділік пен қайталануды арттыруға мүмкіндік береді.

Практикалық тұрғыдан біз сипаттаймыз GitOps келесідей:

GitOps: тағы бір шумақты сөз немесе автоматтандырудағы серпіліс пе?

Біз инфрақұрылымды код ретінде осы формуланың негізгі құрамдастарының бірі ретінде талқыладық. Қалған қатысушыларды таныстырып өтейік.

Біріктіру сұрауы (балама атау Pull Request). Процесс тұрғысынан, MR - код өзгерістерін қолдану және содан кейін филиалдарды біріктіру сұрауы. Бірақ біз қолданатын құралдарға келетін болсақ, бұл барлық жасалып жатқан өзгерістердің толық бейнесін алуға көбірек мүмкіндік береді: белгілі бір міндеттемелер санынан жиналған код айырмашылығы ғана емес, сонымен қатар контекст, сынақ нәтижелері және соңғы күтілетін нәтиже. Егер біз инфрақұрылымдық код туралы айтатын болсақ, онда бізді инфрақұрылымның қалай өзгеретіні, қанша жаңа ресурстар қосылатыны немесе жойылатыны, өзгеретіні қызықтырады. Ыңғайлы және оқуға оңай пішімде. Бұлттық провайдерлер үшін бұл өзгерістің қаржылық әсері қандай болатынын білу жақсы идея.

Бірақ MR сонымен қатар ынтымақтастық, өзара әрекеттесу және коммуникация құралы болып табылады. Тежеу мен тепе-теңдік жүйесі әрекет ететін орын. Қарапайым түсініктемелерден ресми мақұлдаулар мен бекітулерге дейін.

Ал, соңғы компонент: CI/CD, біз білетіндей, инфрақұрылымды өзгерту және тестілеу процесін автоматтандыруға мүмкіндік береді (қарапайым синтаксистік тексеруден күрделі статикалық кодты талдауға дейін). Сондай-ақ дрейфті кейінгі анықтауда: жүйенің нақты және қалаған күйі арасындағы айырмашылықтар. Мысалы, рұқсат етілмеген қолмен өзгертулер немесе жүйенің істен шығуы нәтижесінде.

Иә, термин GitOps бізді мүлдем жаңа ештеңемен таныстырмайды, доңғалақты қайта ойлап таппайды, жай ғана жинақталған тәжірибені жаңа салада қолданады. Бірақ оның күші де осында.

Егер сіз кенеттен мұның іс жүзінде қалай көрінетініне қызығушылық танытсаңыз, мен сізді біздің мақаламызға қарауға шақырамын мастер-класс, онда мен сізге GitLab-ті қалай пайдалану керектігін айтамын:

  • GitOps негізгі принциптерін іске асыру

  • Бұлтты инфрақұрылымды жасаңыз және оған өзгерістер енгізіңіз (Яндекс Cloud мысалын пайдалана отырып)

  • Белсенді бақылау арқылы жүйенің қалаған күйден ауытқуын анықтауды автоматтандыру

GitOps: тағы бір шумақты сөз немесе автоматтандырудағы серпіліс пе?https://bit.ly/34tRpwZ

Ақпарат көзі: www.habr.com

пікір қалдыру