Hadda waxaad ku dhisi kartaa sawirada Docker werf adoo isticmaalaya Dockerfile caadi ah

Ka daahsan waligaa. Ama sida aan ugu dhawaaday qalad halis ah anaga oo aan taageero u helin Dockerfiles caadiga ah si loo dhiso sawirada codsiga.

Hadda waxaad ku dhisi kartaa sawirada Docker werf adoo isticmaalaya Dockerfile caadi ah

Waan ka hadli doonaa werf - GitOps utility kaas oo ku biira nidaam kasta oo CI/CD ah oo bixiya maaraynta wareegga nolosha oo dhan, taas oo u oggolaanaysa:

  • ururi oo daabac sawirro,
  • u dir codsiyada Kubernetes,
  • tirtir sawirada aan la isticmaalin adoo isticmaalaya siyaasado gaar ah.


Falsafada mashruucu waa in la ururiyo qalabyada heerka hoose ee hal nidaam midaysan kaas oo siinaya injineerada DevOps xakamaynta codsiyada. Haddi ay suurtagal tahay, waa in la isticmaalo adeegyada jira (sida Helm iyo Docker). Haddii aan xal loo helin dhibaato, waan abuuri karnaa oo taageernaa wax kasta oo lagama maarmaanka u ah tan.

Asalkii hore: sawir ururiyahaaga

Tani waa waxa ku dhacay sawir qaadaha werf: Dockerfile-ka caadiga ah naguma filna. Haddii aad si degdeg ah u eegto taariikhda mashruuca, dhibaatadani waxay mar hore u muuqatay noocyadii hore ee werf (ka dibna weli loo yaqaan dapp).

Markii aan abuurnay qalab lagu dhisayo codsiyada sawirada Docker, waxaan si dhakhso ah u ogaanay in Dockerfile aanu nagu habboonayn hawlo gaar ah oo gaar ah:

  1. Baahida loo qabo in la dhiso codsiyada yar yar ee caadiga ah si waafaqsan nidaamka soo socda:
    • rakib ku tiirsanaanta nidaamka-ballaaran,
    • rakib xidhmo maktabado ku tiirsanaanta codsiga,
    • hanti ururin
    • iyo tan ugu muhiimsan, u cusboonaysii koodka sawirka si dhakhso leh oo hufan.
  2. Marka isbedel lagu sameeyo faylalka mashruuca, dhisuhu waa inuu si dhakhso ah u abuuraa lakab cusub isagoo ku dhejinaya balastar faylasha la beddelay.
  3. Haddii faylasha qaarkood ay isbeddeleen, markaa waa lagama maarmaan in dib loo dhiso marxaladda ku-tiirsanaanta u dhiganta.

Maanta ururiyeheennu waxa uu leeyahay fursado kale oo badan, laakiin kuwani waxay ahaayeen rabitaanno iyo dhiirigelintii ugu horreysay.

Guud ahaan, annagoon laba jeer ka fakirin, ayaannu ku hubaynay luuqadda barnaamijka ee aan isticmaalnay (hoos eeg) oo ku dhufo wadadii si loo hirgeliyo DSL u gaar ah! Iyadoo la raacayo ujeedooyinka, waxaa loogu talagalay in lagu qeexo habka isu-ururinta marxaladaha iyo go'aaminta ku-tiirsanaanta heerarkan ee faylasha. Oo kaabisay ururiye u gaar ah, kaas oo u rogay DSL goolkii ugu dambeeyay - sawir la isku daray. Markii hore DSL waxay ku jirtay Ruby, laakiin sida u gudubka Golang - qaabka ururiyahayaga ayaa bilaabay in lagu sharaxo faylka YAML.

Hadda waxaad ku dhisi kartaa sawirada Docker werf adoo isticmaalaya Dockerfile caadi ah
Qaabkii hore ee dapp ee Ruby

Hadda waxaad ku dhisi kartaa sawirada Docker werf adoo isticmaalaya Dockerfile caadi ah
Qaabaynta hadda ee werf on YAML

Habka ururiyaha ayaa sidoo kale isbeddelay waqti ka dib. Markii hore, waxaan si fudud uga soo saarnay Dockerfile ku meel gaar ah duulista qaabeyntayada, ka dibna waxaan bilownay inaan ku socodsiino tilmaamaha kulanka weelal ku meel gaar ah oo aan galno.

NBWaqtigan xaadirka ah, ururiyahayaga, oo la shaqeeya qaab-dhismeedkiisa (ee YAML) oo loogu yeero ururiyaha Stapel, ayaa mar hore u soo baxay qalab awood leh. Tilmaanteeda faahfaahsan waxay u qalantaa maqaallo gaar ah, faahfaahinta aasaasiga ahna waxaa laga heli karaa dukumentiyo.

Ka warqabka dhibaatada

Laakiin waxaan ogaanay, oo isla markiiba, inaan sameynay hal qalad: kuma darin kartida ku dhis sawirada iyadoo loo marayo Dockerfile caadiga ah oo lagu dhex daro kaabayaasha maamulka codsiga dhamaadka-ilaa-dhamaadka (tusaale, ururin sawirada, geeyaan oo nadiifi iyaga). Sidee ayay suurtogal u noqon kartaa in la sameeyo qalab lagu geynayo Kubernetes oo aan la hirgelin taageerada Dockerfile, i.e. habka caadiga ah ee lagu qeexo sawirada mashaariicda intooda badan?..

Halkii laga jawaabi lahaa su'aashan, waxaan bixinaa xal. Maxaa dhacaya haddii aad hore u haysatid Dockerfile (ama set of Dockerfiles) oo aad rabto inaad isticmaasho werf?

NB: By habka, maxaad xitaa u rabto inaad isticmaasho werf? Astaamaha ugu muhiimsan waxay hoos ugu dhacaan kuwan soo socda:

  • wareegga maamulka codsiga buuxa oo ay ku jiraan nadiifinta sawirka;
  • Awoodda lagu maareeyo isu-ururinta sawirro dhowr ah hal mar oo ka yimid hal qaab;
  • Habka dirista oo la hagaajiyay ee jaantusyada ku habboon Helm.

Liis aad u dhammaystiran oo iyaga ka mid ah ayaa laga heli karaa bogga mashruuca.

Marka, haddii hore aan u soo bandhigi lahayn inaan dib u qorno Dockerfile-ka qaab-dhismeedkayaga, hadda waxaan si farxad leh u dhihi doonnaa: "Aan werf dhisno Dockerfiles-kaaga!"

Sidee loo isticmaalaa?

Dhaqangelinta buuxda ee muuqaalkan ayaa ka soo muuqday sii deynta werf v1.0.3-beta.1. Mabda'a guud waa mid fudud: isticmaaluhu wuxuu qeexayaa jidka Dockerfile ee jira ee werf config, ka dibna wuxuu maamulaa amarka werf build... waana taas - werf ayaa soo ururin doonta sawirka. Bal aan eegno tusaale aan la taaban karin.

Aan ku dhawaaqno kan xiga Dockerfile xididka mashruuca:

FROM ubuntu:18.04
RUN echo Building ...

Waana ku dhawaaqi doonaa werf.yamlkaas oo isticmaala tan Dockerfile:

configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile

Dhammaan! Bidix orod werf build:

Hadda waxaad ku dhisi kartaa sawirada Docker werf adoo isticmaalaya Dockerfile caadi ah

Intaa waxaa dheer, waxaad ku dhawaaqi kartaa kuwan soo socda werf.yaml si loo dhiso dhowr sawir oo Dockerfiles kala duwan hal mar:

configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: ./dockerfiles/Dockerfile-backend
---
image: frontend
dockerfile: ./dockerfiles/Dockerfile-frontend

Ugu dambeyntii, waxay sidoo kale taageertaa gudbinta cabbiraadaha dhismo dheeraad ah, sida --build-arg ΠΈ --add-host - via werf config. Sharaxaad dhammaystiran oo ku saabsan qaabaynta sawirka Dockerfile ayaa laga heli karaa bogga dukumentiyada.

Sidee u shaqeeyaan?

Inta lagu jiro habka dhismaha, kaydinta caadiga ah ee lakabyada maxalliga ah ee Docker shaqaynta. Si kastaba ha noqotee, waxa ugu muhiimsan waa in sidoo kale la sameeyo wuxuu isku daraa qaabeynta Dockerfile kaabayaasheeda. Maxay tani ka dhigan tahay?

  1. Sawir kasta oo laga dhisay Dockerfile wuxuu ka kooban yahay hal marxalad oo la yiraahdo dockerfile (waxaad ka akhrisan kartaa wax badan oo ku saabsan marxaladaha werf ku jira halkan).
  2. Marxaladda dockerfile werf waxay xisaabisaa saxeex ku xidhan waxa ku jira qaabaynta Dockerfile. Marka qaabeynta Dockerfile isbeddesho, saxiixa marxaladda ayaa isbedelaya dockerfile iyo werf wuxuu bilaabay dib-u-dhiska marxaladdan oo leh qaab-dhismeedka cusub ee Dockerfile. Haddii aanu saxiixu isbeddelin, markaas werf ayaa sawirka ka qaadata kaydka (faahfaahin dheeraad ah oo ku saabsan isticmaalka saxeexyada werf ayaa lagu sifeeyay warbixintan).
  3. Marka xigta, sawirada la ururiyey waxaa lagu daabici karaa amarka werf publish (ama werf build-and-publish) oo u isticmaal geynta Kubernetes. Sawirada la daabacay ee Diiwaanka Docker waxaa lagu nadiifin doonaa iyadoo la isticmaalayo qalabka nadiifinta werf caadiga ah, i.e. Sawiradii hore (ka weyn maalmaha N), sawirada la xidhiidha laamaha Git ee aan jirin, iyo siyaasadaha kale si toos ah ayaa loo nadiifin doonaa.

Faahfaahin dheeraad ah oo ku saabsan qodobbada halkan lagu sharraxay waxaa laga heli karaa dukumeentiyada:

Xusuusin iyo taxaddar

1. URL dibadeed laguma taageero ADD

Hadda lama taageero in URL dibadeed loo isticmaalo dardaaran ADD. Werf ma bilaabi doono dib-u-dhis marka ilaha URL-ka ee la cayimay isbedelo. Waxaan qorsheyneynaa inaan ku darno sifadan dhawaan.

2. Kuma darin kartid .git sawirka

Guud ahaan, ku darida hagaha .git sawirka - dhaqan xun oo xun oo halkan waa sababta:

  1. haddii .git ayaa weli ku jira sawirka kama dambaysta ah, tani waxay jebinaysaa mabaadi'da 12 factor app: Maadaama sawirka kama dambaysta ahi uu yahay in lagu xidho hal ballan, waa in aanay suurtogal ahayn in la sameeyo git checkout gar-daran.
  2. .git waxay kordhisaa xajmiga sawirka (kaydka wuxuu noqon karaa mid weyn sababtoo ah faylalka waaweyn ayaa mar lagu daray ka dibna la tirtiray). Baaxadda geedka shaqada ee la xidhiidha go'aan gaar ah kuma xirna taariikhda hawlgallada Git. Xaaladdan oo kale, isku darka iyo ka saarista ku xigta .git Laga soo bilaabo sawirka kama dambaysta ah ma shaqeyn doono: sawirku wuxuu weli heli doonaa lakab dheeraad ah - tani waa sida Docker u shaqeeyo.
  3. Docker wuxuu bilaabi karaa dib-u-dhis aan loo baahnayn, xitaa haddii ballan isku mid ah la dhisayo, laakiin laga bilaabo geedo-shaqo oo kala duwan. Tusaale ahaan, GitLab waxay ku dhex abuurtaa hagayaal isku xidhan oo gooni ah /home/gitlab-runner/builds/HASH/[0-N]/yourproject marka isbar-bar yaaca la furo. Dib-u-ururinta dheeraadka ah waxay noqon doontaa xaqiiqda ah in hagaha .git wuu ka duwan yahay noocyada kala duwan ee cloned ee kaydka isku midka ah, xitaa haddii isla ballanqaad la dhisay.

Qodobka ugu dambeeya wuxuu kaloo leeyahay cawaaqib marka la isticmaalayo werf. Werf waxay u baahan tahay kaydka la dhisay inuu joogo marka la wado amarada qaar (tusaale. werf deploy). Marka amarradan ay socdaan, werf waxay xisaabisaa saxiixyada marxaladda sawirada lagu qeexay werf.yaml, waana inay ku jiraan khasnadda golaha - haddii kale amarku ma sii wadi doono shaqada. Haddii saxeexa marxaladda uu ku xidhan yahay waxa ku jira .git, ka dib waxaan helnaa khasnad aan xasilloonayn oo lagu beddelo faylalka aan khusayn, werfna ma awoodi doono inay cafiso kormeerka noocaas ah (faahfaahin dheeraad ah, eeg dukumentiyo).

Guud ahaan ku darida faylal gaar ah oo loo baahan yahay oo kaliya iyada oo loo marayo tilmaamaha ADD si kastaba ha ahaatee waxay kordhisaa waxtarka iyo kalsoonida qoraalka Dockerfile, iyo sidoo kale hagaajinaysaa xasiloonida kaydka loo ururiyey tan Dockerfile, isbeddellada aan khusayn ee Git.

Natiijada

Waddadayada bilawga ah ee aan ku qorno dhisahayaga baahiyo gaar ah waxay ahayd mid adag, daacad ah oo toos ah: halkii aan ka isticmaali lahayn biraha dusha sare ee Dockerfile, waxaan ku qornay xalkeena iyadoo la adeegsanayo syntax caadada ah. Taasina waxay lahayd faa'iidooyinkeeda: ururiyaha Stapel wuxuu si fiican ula qabsanayaa hawshiisa.

Si kastaba ha ahaatee, habka qorista dhiseheenna, waxaan weynay aragtida taageerada Dockerfiles ee jira. Cilladdan hadda waa la hagaajiyay, mustaqbalkana waxaan qorsheyneynaa inaan horumarino taageerada Dockerfile oo ay la socoto dhisaha Stapel-ka caadiga ah si loogu qeybiyo isu imaatinka Kubernetes (tusaale ahaan isu imaatinka orodyahannada gudaha Kubernetes, sida lagu sameeyo kaniko).

Marka, haddii aad si lama filaan ah u haysato dhowr Dockerfiles oo hareeraha yaallo... isku day werf!

Liiska dukumeentiyada mawduuca PS

Sidoo kale ka akhri blog-keena: β€œwerf - qalabkeena CI/CD ee Kubernetes (dib u eegis iyo warbixinta muuqaalka)".

Source: www.habr.com

Add a comment