Дастгирии монорепо ва мултирепо дар werf ва Реестри Docker бо он чӣ иртибот дорад

Дастгирии монорепо ва мултирепо дар werf ва Реестри Docker бо он чӣ иртибот дорад

Мавзӯи монорепо борҳо муҳокима карда шудааст ва чун қоида, баҳсҳои хеле фаъолро ба вуҷуд меорад. верф Ҳамчун як воситаи кушодаасос, ки барои беҳтар кардани раванди сохтани коди барномаҳо аз Git ба тасвирҳои Docker (ва баъдан онҳоро ба Kubernetes расонидан) тарҳрезӣ шудааст, мо вақти зиёд сарф намекунем, ки кадом интихоб беҳтар аст. Вазифаи аввалиндараҷаи мо таъмин намудани ҳама чизи зарурӣ барои тарафдорони ақидаҳои гуногун мебошад (ба шарте, ки ин ба ақли солим мухолиф набошад, албатта).

Дастгирии ба наздикӣ иловашудаи моно-репо дар werf намунаи хуби ин аст. Аммо аввал, биёед бифаҳмем, ки ин дастгирӣ бо истифодаи werf чӣ гуна алоқаманд аст ва Реестри Docker бо он чӣ иртибот дорад…

Масъалаҳо

Биёед ин вазъиятро тасаввур кунем. Ширкат дорои гурӯҳҳои сершумори рушдест, ки дар лоиҳаҳои мустақил кор мекунанд. Аксари барномаҳо дар Kubernetes кор мекунанд ва аз ин рӯ контейнерҳо мебошанд. Барои нигоҳ доштани контейнерҳо ва тасвирҳо феҳрист лозим аст. Ширкат Docker Hub-ро ҳамчун феҳристи худ бо ҳисоби ягона истифода мебарад. COMPANY. Монанд ба аксари системаҳои нигаҳдории коди манбаъ, Docker Hub ба иерархияи анбори лона гузошташуда иҷозат намедиҳад., ба мисли COMPANY/PROJECT/IMAGEДар ин ҳолат... чӣ гуна мо метавонем барномаҳои ғайримонолитро дар реестр бо ин маҳдудият нигоҳ дорем, бидуни сохтани ҳисоби алоҳида барои ҳар як лоиҳа?

Дастгирии монорепо ва мултирепо дар werf ва Реестри Docker бо он чӣ иртибот дорад

Ин ҳолат шояд ба баъзеҳо шинос бошад, аммо биёед бе истинод ба мисоли боло ва Docker Hub масъалаи ташкили нигаҳдории барномаҳоро дар маҷмӯъ дида бароем.

Ҳалли

Агар ариза яклухт, дар як тасвир пешниҳод карда мешавад, пас ҳеҷ саволе ба миён намеояд ва мо танҳо тасвирҳоро дар феҳристи контейнерҳои лоиҳа захира мекунем.

Вақте ки барнома ҳамчун ҷузъҳои сершумор пешниҳод карда мешавад, хизматрасониҳои хурд, пас равиши мушаххас бояд интихоб карда шавад. Бо истифода аз мисоли як барномаи маъмулии веб, ки аз ду тасвир иборат аст: frontend и backend - имконоти имконпазир инҳоянд:

  1. Тасвирҳоро дар анборҳои ҷудогона нигоҳ доред:

    Дастгирии монорепо ва мултирепо дар werf ва Реестри Docker бо он чӣ иртибот дорад

  2. Ҳама чизро дар як анбор нигоҳ доред ва номи тасвирро ба тег дохил кунед, масалан, ба ин монанд:

    Дастгирии монорепо ва мултирепо дар werf ва Реестри Docker бо он чӣ иртибот дорад

NB: Дар асл, як варианти дигаре вуҷуд дорад, ки дар анборҳои гуногун нигоҳ дошта мешавад, PROJECT-frontend и PROJECT-backend, аммо мо онро аз сабаби мураккабии дастгирӣ, ташкил ва тақсими ҳуқуқҳо байни корбарон баррасӣ намекунем.

Дастгирӣ дар werf

Дар аввал, werf худро ба анборҳои лона гузошташуда маҳдуд мекард - хушбахтона, аксари реестрҳо ин хусусиятро дастгирӣ мекунанд. Аз версия сар карда v1.0.4-alpha.3, илова кор бо реестр, ки дар он лона кардан дастгирй карда намешавад, ва Docker Hub яке аз онҳост. Аз ҳоло корбарон интихоби тарзи нигоҳ доштани тасвирҳои барномаро доранд.

Татбиқ ҳамчун вариант дастрас аст --images-repo-mode=multirepo|monorepo (бо нобаёнӣ multirepo(яъне, нигоҳдорӣ дар анборҳои лона). Он шаблонҳоеро муайян мекунад, ки тавассути онҳо тасвирҳо дар реестр нигоҳ дошта мешаванд. Ҳангоми истифодаи фармонҳои асосӣ танҳо ҳолати дилхоҳро интихоб кунед ва ҳама чиз бетағйир мемонад.

Азбаски аксари имконоти werf метавонанд танзим карда шаванд тағирёбандаҳои муҳити зистДар системаҳои CI/CD режими нигоҳдорӣ одатан дар саросари ҷаҳон барои тамоми лоиҳа осон аст. Барои намуна, дар мавриди GitLab Илова кардани тағирёбандаи муҳити зист дар танзимоти лоиҳа кофӣ аст: Танзимот -> CI / CD -> Тағйирёбанда: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Сухан дар бораи интишори тасвирҳо ва паҳн кардани барномаҳо (шумо метавонед дар бораи ин равандҳо дар мақолаҳои дахлдори ҳуҷҷатҳо муфассал хонед: Раванди нашр и Раванди ҷойгиркунӣ), пас режим танҳо қолаберо муайян мекунад, ки тавассути он шумо бо тасвир кор карда метавонед.

Шайтон дар тафсилот аст

Фарқият ва мушкилии асосӣ ҳангоми илова кардани усули нави нигоҳдорӣ дар раванди тоза кардани феҳрист аст (барои қобилиятҳои тозакунӣ, ки werf дастгирӣ мекунад, нигаред Раванди тозакунӣ).

Ҳангоми тозакунӣ, werf тасвирҳои дар кластерҳои Kubernetes истифодашаванда ва инчунин сиёсатҳои аз ҷониби корбар танзимшударо ба назар мегирад. Сиёсатҳо ба тақсимоти тегҳо ба стратегияҳо асос ёфтаанд. Стратегияҳои дар айни замон дастгирӣшаванда:

  1. 3 стратегияи марбут ба ибтидоии Git ба монанди тег, филиал ва commit;
  2. 1 стратегия барои барчаспҳои фармоишӣ.

Мо маълумоти стратегияи барчаспро ҳангоми нашри тасвир дар тамғакоғазҳои тасвири ниҳоӣ нигоҳ медорем. Худи арзиши он ба ном аст мета тег - барои татбиқи баъзе сиёсатҳо зарур аст. Масалан, ҳангоми нест кардани шоха ё барчасп аз анбори Git, нест кардани шохаҳои алоқаманд низ маъно дорад. истифоданашуда тасвирҳо аз феҳрист, ки дар қисми сиёсати мо фаро гирифта шудааст.

Ҳангоми захира кардан дар як анбор (monorepo), илова ба мета тег, теги тасвир инчунин метавонад номи тасвирро нигоҳ дорад: PROJECT:frontend-META-TAGБарои ҷудо кардани онҳо, мо ягон ҷудокунандаи мушаххасро ҷорӣ накардаем, балки танҳо ҳангоми нашр ба нишони ниҳоии тасвир арзиши заруриро илова кардем.

NB: Агар шумо ба дидани ҳама чизе, ки дар коди сарчашмаи werf тавсиф шудааст, таваҷҷӯҳ дошта бошед, пас нуқтаи ибтидоӣ метавонад бошад PR 1684.

Дар ин мақола, мо ба мушкилот ва асоснокии равиши худ бештар таваҷҷӯҳ нахоҳем кард: дар бораи стратегияҳо, нигоҳ доштани маълумот дар тамғакоғазҳо ва умуман раванди интишор - ҳамаи ин дар гузориши охирини Дмитрий Столяров ба таври муфассал тавсиф шудааст: "werf воситаи мо барои CI/CD дар Kubernetes аст".

Барои чамъбаст кардан

Набудани дастгирӣ барои реестрҳои лонанашуда барои мо ё ягон корбарони верф, ки мо медонем, ҳалкунанда набуд - он ҳамеша имконпазир аст, ки феҳристи тасвирҳои алоҳидаро таъсис диҳед (ё ба чизе ба монанди Реестри Контейнерӣ дар Google Cloud гузаред). Аммо, бартараф кардани ин маҳдудият мантиқӣ ба назар мерасид, ки асбобро барои ҷомеаи васеътари DevOps бештар қобили истифода гардонад. Ҳангоми татбиқи он, мо бо мушкилоти асосӣ дар таҷдиди механизми тозакунии феҳристи контейнерҳо дучор шудем. Ҳоло, ки ҳама чиз омода аст, хуш аст донистани он, ки корҳо барои касе осонтар шудаанд ва мо (ҳамчун таҳиягарони пешбари лоиҳа) дар дастгирии минбаъдаи ин хусусият ягон мушкилии назаррасро пешбинӣ намекунем.

Бохабар бошед ва мо дар ояндаи наздик ба шумо дар бораи навовариҳои дигар нақл хоҳем кард. верф!

PS

Инчунин дар блоги мо хонед:

Манбаъ: will.com

Хостинги боэътимодро барои сайтҳо бо муҳофизати DDoS, серверҳои VPS VDS харед 🔥 Харидани хостинги боэътимоди вебсайт бо муҳофизати DDoS, серверҳои VPS VDS | ProHoster