werf 1.1 kuburitswa: kuvandudzwa kune muvaki nhasi uye zvirongwa zveramangwana

werf 1.1 kuburitswa: kuvandudzwa kune muvaki nhasi uye zvirongwa zveramangwana

werf ndiyo yedu yakavhurika sosi GitOps CLI utility yekuvaka uye kuendesa zvikumbiro kuKubernetes. Sezvakavimbiswa, kuburitswa kwevhezheni v1.0 yakaratidza kutanga kwekuwedzera maficha matsva kune werf uye kudzokorora maitiro echinyakare. Iye zvino isu tinofara kuunza kuburitswa v1.1, inova nhanho huru mukusimudzira uye hwaro hwenguva yemberi muunganidzi werf. Iyo vhezheni iripo parizvino chiteshi 1.1 ea.

Hwaro hwekuburitswa ndiyo nyowani nhanho yekuchengetedza zvivakwa uye optimization yebasa revateresi vese (yeStapel neDockerfile). Iyo nyowani yekuchengetera dhizaini inovhura mukana wekuita magungano akagoverwa kubva kune akawanda mauto uye akafanana maassemblies pane imwecheteyo host.

Kugonesa basa kunosanganisira kubvisa zviverengero zvisina basa padanho rekuverenga masiginecha uye kushandura masiginecha ekuverenga mafaira echeki kuti anyatsoita. Iyi optimization inoderedza avhareji yenguva yeprojekiti inovaka uchishandisa werf. Uye isina basa inovaka, kana matanho ese aripo mune cache matanho-kuchengetedza, vari kukurumidza chaizvo. Kazhinji, kutangazve kuvaka kunotora isingasviki 1 sekondi! Izvi zvinoshandawo kune maitiro ekusimbisa matanho mukuita kwebasa rezvikwata. werf deploy ΠΈ werf run.

Zvakare mukuburitswa uku, zano rekumaka mifananidzo nezviri mukati rakaonekwa - content-based tagging, iyo ikozvino inogoneswa neiyo default uye iyo chete inokurudzirwa.

Ngatitarisei zvakanyanya kune zvakakosha zvitsva mu werf v1.1, uye panguva imwechete kukuudza nezve zvirongwa zveramangwana.

Chii chachinja muwerf v1.1?

Nyowani nhanho yekutumidza fomati uye algorithm yekusarudza matanho kubva kucache

New stage name generation rule. Ikozvino imwe neimwe nhanho yekuvaka inoburitsa yakasarudzika zita rezita, iro rine 2 zvikamu: siginicha (sezvazvaive muv1.0) pamwe neyakasarudzika yenguva identifier.

Semuenzaniso, iyo yakazara danho remufananidzo zita rinogona kutaridzika seizvi:

werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835

...kana zvakazara:

werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC

Π—Π΄Π΅ΡΡŒ:

  • SIGNATURE siginicha yedariro, inomiririra chiziviso chechikamu chechikamu uye zvinoenderana nenhoroondo yekugadziridzwa muGit yakatungamira kune izvi zvirimo;
  • TIMESTAMP_MILLISEC ndeye yakavimbiswa yakasarudzika mufananidzo identifier iyo inogadzirwa panguva iyo mufananidzo mutsva unogadzirwa.

Iyo algorithm yekusarudza matanho kubva kune cache yakavakirwa pakutarisa hukama hweGit anoita:

  1. Werf inoverengera siginicha yeimwe nhanho.
  2. Π’ matanho-kuchengetedza Panogona kunge paine nhanho dzakati kuti dzesaina yakapihwa. Werf anosarudza ese matanho anoenderana nesiginicha.
  3. Kana iyo nhanho iripo yakabatana neGit (git-archive, tsika nhanho ine Git zvigamba: install, beforeSetup, setup; kana git-ichangoburwa-chigamba), ipapo werf anosarudza chete iwo matanho ane chekuita nekuzvipira ari tateguru wechiito chazvino (chinodanwa chivakwa).
  4. Kubva pamatanho asara akakodzera, imwe inosarudzwa - yekare kudarika zuva rekusika.

Danho remapazi akasiyana eGit rinogona kuva nesaini yakafanana. Asi werf inodzivirira cache yakabatana nemapazi akasiyana kubva kushandiswa pakati pematavi aya, kunyangwe masiginecha achienderana.

β†’ Zvinyorwa.

Nyowani algorithm yekugadzira uye kuchengetedza nhanho mudanho rekuchengetedza

Kana, pakusarudza nhanho kubva kune cache, werf ikasawana nhanho yakakodzera, saka nzira yekuunganidza nhanho nyowani inotangwa.

Ziva kuti maitiro akawanda (pane imwe kana akawanda anotambira) anogona kutanga kuvaka nhanho imwechete panguva imwe chete. Werf inoshandisa tarisiro yekuvhara algorithm matanho-kuchengetedza panguva yekuchengetedza iyo ichangobva kuunganidzwa mufananidzo mukati matanho-kuchengetedza. Nenzira iyi, kana danho idzva rekuvaka ragadzirira, werf blocks matanho-kuchengetedza uye inochengetedza mufananidzo uchangobva kuunganidzwa ipapo chete kana mufananidzo wakakodzera usisipo ipapo (ne siginecha uye mamwe ma paramita - ona iyo itsva algorithm yekusarudza matanho kubva kune cache).

Mufananidzo uchangobva kuunganidzwa unovimbiswa kuve neakasarudzika identifier ne TIMESTAMP_MILLISEC (ona chimiro chitsva chezita rezita). In case in matanho-kuchengetedza mufananidzo wakakodzera uchawanikwa, werf inorasa iyo ichangobva kuunganidzwa mufananidzo uye ichashandisa mufananidzo kubva kune cache.

Mune mamwe mazwi: nzira yekutanga yekupedzisa kuvaka chifananidzo (iyo inokurumidza) inowana kodzero yekuichengeta mumatanho-kuchengeta (uyezve ndiyo iyi mufananidzo unozoshandiswa kune zvese zvinovaka). Iyo inononoka yekuvaka maitiro haimbofa yakavharira kukurumidza maitiro kubva pakuchengetedza ekuvaka mhedzisiro yeizvino nhanho uye kuenderera kune inotevera kuvaka.

β†’ Zvinyorwa.

Yakavandudzwa Dockerfile muvaki kuita

Parizvino, pombi yematanho echifananidzo chakavakwa kubva kuDockerfile chine nhanho imwe - dockerfile. Paunenge uchiverenga siginecha, cheki yemafaira inoverengerwa context, iyo ichashandiswa pakuungana. Pamberi pekuvandudzwa uku, werf akadzokorodza akafamba nemafaira ese uye akawana cheki nekupfupikisa mamiriro uye maitiro efaira rega rega. Kutanga nev1.1, werf inogona kushandisa akaverengerwa macheki akachengetwa muGit repository.

Iyo algorithm yakavakirwa pa git ls-muti. Iyo algorithm inotora muakaundi marekodhi mukati .dockerignore uye inofamba nemuti wefaira ichidzokorodza chete kana zvichidikanwa. Nekudaro, isu takabvisa kubva pakuverenga iyo faira system, uye kutsamira kweiyo algorithm pane saizi context haina kukosha.

Iyo algorithm inotarisawo mafaera asina kuvharwa uye, kana zvichidikanwa, anoafunga mucheki.

Kuvandudzwa kwekuita kana uchiunza mafaera

Shanduro dze werf v1.1 shandisa rsync server kana kuunza mafaera kubva kune artifacts nemifananidzo. Pakutanga, kupinza kunze kwaiitwa mumatanho maviri uchishandisa dhairekitori gomo kubva kune iyo host system.

Kupinza mashandiro pane macOS hakusisina kuganhurirwa neDocker mavhoriyamu, uye kunze kwenyika kunopera muhuwandu hwenguva seLinux neWindows.

Content-based tagging

Werf v1.1 inotsigira zvinodaidzwa kuti tagging nemifananidzo yemukati - content-based tagging. Iwo ma tag eiyo inoguma Docker mifananidzo inoenderana nezviri mukati meiyo mifananidzo.

Paunenge uchimhanya murairo werf publish --tags-by-stages-signature kana werf ci-env --tagging-strategy=stages-signature yakabudiswa mifananidzo yezvinonzi siteji siginicha mufananidzo. Chifananidzo chega chega chakaiswa siginicha yaro yematanho echifananidzo ichi, icho chinoverengerwa maererano nemitemo yakafanana neyenguva dzose siginicha yedanho rega rega zvakasiyana, asi chiziviso chemufananidzo.

Kusaina kwematanho emufananidzo kunoenderana ne:

  1. zviri mumufananidzo uyu;
  2. nhoroondo dzekuchinja kweGit kwakatungamira kune izvi zvirimo.

A Git repository inogara iine dummy anoita izvo zvisingashandure zviri mukati memafaira emufananidzo. Semuyenzaniso, anozvipira nekutaura chete kana kusanganisa anoita, kana kuzvipira kunoshandura iwo mafaera muGit asingazopinzwe kunze kwemufananidzo.

Paunenge uchishandisa zvemukati-based tagging, matambudziko ekusafanirwa kutangazve kweapplication pods muKubernetes nekuda kwekuchinja kwezita remufananidzo anogadziriswa, kunyangwe zviri mukati memufananidzo zvisina kuchinja. Nenzira, ichi ndicho chimwe chezvikonzero chinodzivirira kuchengetedza akawanda mamicroservices eimwe application mune imwechete Git repository.

Zvakare, zvemukati-based tagging inzira inovimbika yekumaka pane yekumaka pamapazi eGit, nekuti zvirimo mumifananidzo inenge yabuda hazvienderane nehurongwa hwekuti mapaipi anoitwa muCI system yekuunganidza akawanda madhipatimendi ebazi rimwe chete.

kosha: kutanga kubva zvino matanho-saina - ichi chi iyo chete yakakurudzirwa yekumaka zano. Ichashandiswa nekusingaperi mukuraira werf ci-env (kunze kwekunge wanyatso tsanangura imwe tagging scheme).

β†’ Zvinyorwa. Rimwe bhuku rakasiyana richashandiswawo kuchikamu ichi. UPDATED (April 3): Chinyorwa chine udzame rakabudiswa.

Kutema matanda

Mushandisi iye zvino ane mukana wekudzora zvakabuda, isa iyo yekutema nhanho uye kushanda nedebugging ruzivo. Sarudzo dzakawedzerwa --log-quiet, --log-verbose, --log-debug.

Nekutadza, zvinobuda zvine ruzivo rushoma:

werf 1.1 kuburitswa: kuvandudzwa kune muvaki nhasi uye zvirongwa zveramangwana

Paunenge uchishandisa verbose output (--log-verbose) unogona kuona kuti werf inoshanda sei:

werf 1.1 kuburitswa: kuvandudzwa kune muvaki nhasi uye zvirongwa zveramangwana

Detailed output (--log-debug), kuwedzera kune werf debugging ruzivo, inewo matanda emaraibhurari akashandiswa. Semuenzaniso, iwe unogona kuona kuti kudyidzana neDocker Registry kunoitika sei, uye zvakare kurekodha nzvimbo dzinoshandiswa yakawanda nguva:

werf 1.1 kuburitswa: kuvandudzwa kune muvaki nhasi uye zvirongwa zveramangwana

Zvirongwa zveramangwana

Cherechedza chinyorwa! Sarudzo dzakatsanangurwa pazasi dzakanyorwa v1.1 ichawanikwa mune iyi vhezheni, mazhinji acho munguva pfupi iri kutevera. Zvigadziriso zvinouya kuburikidza neauto-updates paunenge uchishandisa multiwerf. Aya maficha haakanganisa chikamu chakatsiga chev1.1 mabasa; chitarisiko chavo hachizoda kupindira kwemushandisi mumanyorero aripo.

Rutsigiro rwakakwana kune akasiyana Docker Registry kuita (ITSVA)

  • Shanduro: v1.1
  • Mazuva: Kurume
  • nyaya

Chinangwa ndechekuti mushandisi ashandise tsika yekuita pasina zvirambidzo kana uchishandisa werf.

Parizvino, taona iyo inotevera seti yemhinduro dzatiri kuzovimbisa rutsigiro rwakazara:

  • Default (raibhurari/registry)*,
  • AWS ECR
  • Azure*,
  • Docker Hub
  • GCR*,
  • GitHub Packages
  • GitLab Registry*,
  • Harbor*,
  • Quay.

Mhinduro dziri kutsigirwa zvizere ne werf dzakanyorwa neasterisk. Kune vamwe kune rutsigiro, asi nemiganhu.

Matambudziko maviri makuru anogona kuzivikanwa:

  • Dzimwe mhinduro hadzitsigire kubviswa kwema tag uchishandisa Docker Registry API, kudzivirira vashandisi kubva kushandisa werf's otomatiki kuchenesa. Izvi ndezvechokwadi kune AWS ECR, Docker Hub, uye GitHub Packages.
  • Dzimwe mhinduro hadzitsigire dzinonzi nested repositories (Docker Hub, GitHub Packages uye Quay) kana kuita, asi mushandisi anofanira kuzvigadzira nemaoko achishandisa UI kana API (AWS ECR).

Tichagadzirisa aya nemamwe matambudziko tichishandisa maAPI emhinduro. Iri basa rinosanganisira kuvhara kutenderera kuzere kwekushanda kwewerf nemiedzo yeumwe neumwe wavo.

Mifananidzo yakagadzirwa (↑)

  • Shanduro: v1.2 v1.1 (inonyanya kukosha pakuita iyi ficha yawedzerwa)
  • Mazuva: Kurume-Kubvumbi Kurume
  • nyaya

Parizvino, werf v1.0 uye v1.1 inogona kushandiswa chete pane imwe yakazvitsaurira dhizaini yekushanda kwekuvaka nekutsikisa mifananidzo uye kutumira application kuKubernetes.

Kuti uvhure mikana yebasa rakagovaniswa rewerf, kana kuvaka uye kutumira kwezvikumbiro muKubernetes kwakatangwa pane akati wandei anopokana uye mauto aya haachengetedze nyika yavo pakati pekuvaka (vamhanyi venguva pfupi), werf inodiwa kuita kugona kushandisa. iyo Docker Registry sechitoro chedanho.

Kare, apo chirongwa chewerf chaive chichiri kunzi dapp, chaive nemukana wakadaro. Nekudaro, isu tasangana nenyaya dzinoverengeka dzinoda kuverengerwa pakuita basa iri muwerf.

taura pfungwa. Ichi chimiro hachidi kuti muunganidzi ashande mukati meKubernetes pods, nekuti Kuti uite izvi, iwe unofanirwa kubvisa kutsamira pane yemuno Docker server (muKubernetes pod hapana mukana kune yemuno Docker server, nekuti iyo pachayo inomhanya mumudziyo, uye werf haina uye haitsigire. kushanda neDocker server pane network). Tsigiro yekumhanya Kubernetes ichaitwa zvakasiyana.

Tsigiro yepamutemo yeGitHub Zviito (ZVITSVA)

  • Shanduro: v1.1
  • Mazuva: Kurume
  • nyaya

Inosanganisira werf zvinyorwa (zvikamu bhuku ΠΈ tungamirira), pamwe neiyo yepamutemo GitHub Chiito chekushanda ne werf.

Mukuwedzera, ichabvumira werf kushanda pa ephemeral runners.

Iyo mechanics yekudyidzana kwevashandisi neCI system ichave yakavakirwa pakuisa mavara pane zvikumbiro zvekudhonza kuti utange zvimwe zviito kuvaka / kuburitsa application.

Kuvandudzwa kwenzvimbo uye kuendesa zvikumbiro ne werf (↓)

  • Shanduro: v1.1
  • Mazuva: Ndira-Kukadzi Kubvumbi
  • nyaya

Chinangwa chikuru ndechekuwana imwe yakabatana config yekutumira maapplication mukati uye mukugadzira, pasina zviito zvakaomarara, kunze kwebhokisi.

werf inodiwa zvakare kuve neanoshanda modhi umo zvichave nyore kugadzirisa kodhi yekushandisa uye nekukasira kugamuchira mhinduro kubva kune inomhanya application yekubvisa.

Nyowani yekuchenesa algorithm (ITSVA)

  • Shanduro: v1.1
  • Mazuva: Kubvumbi
  • nyaya

Mune yazvino vhezheni ye werf v1.1 mukuita cleanup Iko hakuna gadziriro yekuchenesa mifananidzo yemukati-based tagging scheme - iyi mifananidzo ichaungana.

Zvakare, iyo yazvino vhezheni yewerf (v1.0 uye v1.1) inoshandisa akasiyana marongero ekuchenesa emifananidzo yakaburitswa pasi pezvirongwa zvekumaka: Git bazi, Git tag kana Git commit.

Iyo itsva algorithm yekuchenesa mifananidzo inoenderana nenhoroondo yezvipimo muGit, yakabatana kune ese mataki zvirongwa, yakagadzirwa:

  • Chengetedza isingasviki mifananidzo yeN1 yakabatana neN2 yazvino kuzvipira kune yega yega git HEAD (mapazi nema tag).
  • Chengetedza isingapfuure N1 nhanho mifananidzo yakabatana neN2 yazvino inozvipira kune yega yega git HEAD (mapazi nema tag).
  • Chengetedza mifananidzo yese inoshandiswa mune chero Kubernetes cluster zviwanikwa (ese kubebe mamiriro eiyo yekumisikidza faira uye mazita enzvimbo akaongororwa; unogona kudzikamisa maitiro aya neakasarudzika sarudzo).
  • Chengetedza mifananidzo yese inoshandiswa mukugadzirisa zviwanikwa zvakachengetwa mukuburitswa kweHelm.
  • Mufananidzo unogona kudzimwa kana usingabatanidzwe nechero HEAD kubva kugit (semuenzaniso, nekuti inoenderana HEAD pachayo yakabviswa) uye haishandiswe mune chero zviratidziro muKubernetes cluster uye mukuburitswa kweHelm.

Parallel image building (↓)

  • Shanduro: v1.1
  • Mazuva: Ndira-Kukadzi Kubvumbi *

Iyo yazvino vhezheni yewerf inounganidza mifananidzo uye zvigadzirwa zvinotsanangurwa mukati werf.yaml, zvakatevedzana. Izvo zvinodikanwa kufananidza maitiro ekuunganidza akazvimirira matanho emifananidzo uye zvigadzirwa, pamwe nekupa zviri nyore uye zvinodzidzisa zvinobuda.

* Cherechedza: zuva rekupedzisira rakachinjirwa nekuda kwekuwedzera kwekutanga kwekuita gungano rakagoverwa, iro rinowedzera mamwe akachinjika scaling kugona, pamwe nekushandiswa kwewerf neGitHub Zviito. Parallel Assembly ndiyo inotevera optimization nhanho, ichipa yakatwasuka scalability pakuunganidza purojekiti imwe.

Shanduko kuenda kuHelm 3 (↓)

  • Shanduro: v1.2
  • Mazuva: Kukadzi-Kurume Chivabvu*

Inosanganisira kutamira kune itsva codebase Helm 3 uye yakaratidza, nzira iri nyore yekufambisa misimboti iripo.

* Cherechedza: kuchinja kuHelm 3 hakuzowedzera zvakakosha kune werf, nokuti zvose zvakakosha zveHelm 3 (3-way-merge uye pasina tiller) zvakatoitwa mu werf. Uyezve, werf ine mamwe maficha kuwedzera kune zvakaratidzwa. Zvisinei, shanduko iyi inoramba iri muzvirongwa zvedu uye ichaitwa.

Jsonnet yekutsanangura Kubernetes kumisikidza (↓)

  • Shanduro: v1.2
  • Mazuva: Ndira-Kukadzi Kubvumbi-Chivabvu

Werf inotsigira tsananguro yekumisikidza yeKubernetes muJsonnet fomati. Panguva imwecheteyo, werf icharamba ichienderana neHelm uye pachave nesarudzo yekutsanangura fomati.

Chikonzero ndechokuti Enda ma templates, maererano nevanhu vakawanda, ane chipingamupinyi chakakwirira chekupinda, uye kunzwisisa kwekodhi yema templates aya kunotamburawo.

Iko mukana wekuunza mamwe Kubernetes yekumisikidza tsananguro masisitimu (semuenzaniso, Kustomize) iri kutariswa zvakare.

Kushanda mukati meKubernetes (↓)

  • Shanduro: v1.2
  • Mazuva: Kubvumbi-Chivabvu Chivabvu-Chikumi

Chinangwa: Ita shuwa kuti mifananidzo yakavakwa uye application inounzwa uchishandisa vanomhanya muKubernetes. Avo. Mifananidzo mitsva inogona kuvakwa, kuburitswa, kucheneswa, uye kuiswa zvakananga kubva Kubernetes pods.

Kuti ushandise kugona uku, iwe unofanirwa kutanga wakwanisa kugadzira mifananidzo yakagoverwa (ona pfungwa iri pamusoro).

Inodawo tsigiro yeanovaka anoshanda modhi isina Docker server (kureva Kaniko-yakafanana kuvaka kana kuvaka muuserspace).

Werf inotsigira kuvaka paKubernetes kwete chete neDockerfile, asiwo neiyo Stapel muvaki ane anowedzera kuvakazve uye Ansible.

Nhanho yekuenda kubudiriro yakavhurika

Tinoda nharaunda yedu (GitHub, teregiramu) uye tinoda kuti vanhu vakawanda vabatsire kuita kuti werf ive nani, kunzwisisa kwatiri kufamba mairi, uye kutora chikamu mubudiriro.

Munguva pfupi yapfuura zvakasarudzwa kuchinja GitHub purojekiti mabhodhi kuitira kuratidza maitiro ekushanda kwechikwata chedu. Iye zvino iwe unogona kuona zvirongwa zvekukurumidza, pamwe nebasa razvino munzvimbo dzinotevera:

Basa rakawanda rakaitwa nenyaya:

  • Zvakabviswa zvisina basa.
  • Izvo zviripo zvinounzwa kune imwe fomati, ine nhamba yakakwana yeruzivo uye ruzivo.
  • Nyaya itsva dzine mazano uye mazano dzakawedzerwa.

Maitiro ekugonesa vhezheni v1.1

Iyo vhezheni iripo parizvino chiteshi 1.1 ea (muchannels chetevere ΠΈ dombo-rakasimba zvinoburitswa zvichaonekwa sekudzikamiswa kunoitika, zvisinei ea pachayo yakatogadzikana zvakakwana kuti ishandiswe, nokuti akapinda nomumakwara alpha ΠΈ Beta) Activated kuburikidza ne multiwerf nenzira inotevera:

source $(multiwerf use 1.1 ea)
werf COMMAND ...

mhedziso

Iyo nyowani nhanho yekuchengetedza zvivakwa uye muvaki optimizations yeStapel uye Dockerfile vavaki vanovhura mukana wekuita zvakagoverwa uye zvakafanana kuvaka muwerf. Aya maficha achakurumidza kuoneka mune imwecheteyo v1.1 kuburitswa uye inozove inowanikwa otomatiki kuburikidza neauto-update michina (yevashandisi. multiwerf).

Mukuburitswa uku, zano rekumaka rinobva pane zvemukati memufananidzo rawedzerwa - content-based tagging, iyo yave iyo yakasarudzika nzira. Iyo huru yekuraira log yakagadziridzwa zvakare: werf build, werf publish, werf deploy, werf dismiss, werf cleanup.

Danho rinotevera rinokosha nderokuwedzera magungano akagoverwa. Zvivakwa zvakagoverwa zvave zvakakosha kupfuura zvinovaka zvakafanana kubvira v1.0 nekuti ivo vanowedzera kukosha kune werf: vertical scaling yevavaki uye rutsigiro rwevaki ve ephemeral mune akasiyana CI / CD masisitimu, pamwe nekugona kuita tsigiro yepamutemo yeGitHub Zviito. . Nokudaro, mazuva ekupedzisira ekushandiswa kwemagungano akafanana akachinjwa. Nekudaro, isu tiri kushanda kuti tiite ese ari maviri mikana nekukurumidza sezvinobvira.

Tevera nhau! Uye usakanganwa kutishanyira pa GitHubkugadzira nyaya, tsvaga iripo uye wedzera kuwedzera, gadzira PR, kana kungoona budiriro yeprojekiti.

PS

Verenga zvakare pablog yedu:

Source: www.habr.com

Voeg