kutulutsidwa kwa werf 1.1: kukonza kwa omanga lero ndi mapulani amtsogolo
werf ndiye gwero lathu lotseguka la GitOps CLI pomanga ndi kutumiza mapulogalamu ku Kubernetes. Monga momwe analonjezera, kutulutsidwa kwa mtundu wa v1.0 adawonetsa chiyambi cha kuwonjezera zinthu zatsopano ku werf ndikukonzanso njira zachikhalidwe. Tsopano ndife okondwa kupereka kumasulidwa kwa v1.1, komwe ndi gawo lalikulu pakukula komanso maziko amtsogolo wokhometsa werf. Mtunduwu ulipo pano njira 1.1e.
Maziko a kumasulidwa ndi zomangamanga zatsopano za malo osungiramo siteji ndi kukhathamiritsa kwa ntchito ya onse osonkhanitsa (kwa Stapel ndi Dockerfile). Zomangamanga zatsopano zosungirako zimatsegula mwayi wogwiritsa ntchito misonkhano yogawidwa kuchokera ku makamu angapo ndi misonkhano yofanana pa gulu lomwelo.
SIGNATURE ndi siginecha ya siteji, yomwe imayimira chizindikiritso cha zomwe zili pa siteji ndipo zimatengera mbiri ya zosintha mu Git zomwe zidatsogolera ku izi;
Algorithm yosankha magawo kuchokera ku cache idakhazikitsidwa pakuwunika ubale wa Git:
Werf amawerengera siginecha ya gawo linalake.
В magawo-kusungirako Pakhoza kukhala magawo angapo a siginecha yoperekedwa. Werf amasankha magawo onse omwe akugwirizana ndi siginecha.
Ngati gawo lapano likulumikizidwa ndi Git (git-archive, siteji yachizolowezi yokhala ndi zigamba za Git: install, beforeSetup, setup; kapena git-latest-patch), ndiye werf amasankha magawo okhawo omwe amalumikizidwa ndi kudzipereka komwe ndi kholo la zomwe zikuchitika pano (zomwe zimatchedwanso).
Kuchokera pazigawo zoyenera zotsalira, imodzi imasankhidwa - yakale kwambiri ndi tsiku la chilengedwe.
Gawo la nthambi zosiyanasiyana za Git limatha kukhala ndi siginecha yomweyo. Koma werf amalepheretsa cache yolumikizidwa ndi nthambi zosiyanasiyana kuti isagwiritsidwe ntchito pakati pa nthambi izi, ngakhale masiginecha agwirizane.
Mabaibulo a werf v1.1 amagwiritsa ntchito seva ya rsync pamene kuitanitsa mafayilo kuchokera kuzinthu zakale ndi zithunzi. M'mbuyomu, kulowetsa kunkachitika m'masitepe awiri pogwiritsa ntchito khwekhwe la chikwatu kuchokera ku makina osungira.
Kulowetsamo pa macOS sikulinso malire ndi ma volume a Docker, ndipo kulowetsa kunja kumakwanira mu nthawi yofanana ndi Linux ndi Windows.
Kuyika ma taging okhudzana ndi zinthu
Werf v1.1 imathandizira zomwe zimatchedwa kuti tagging ndi zomwe zili pazithunzi - kutengera zolemba. Ma tag a zithunzi za Docker zomwe zatsatira zimadalira zomwe zili pazithunzizi.
Poyendetsa lamulo werf publish --tags-by-stages-signature kapena werf ci-env --tagging-strategy=stages-signature zithunzi zofalitsidwa za otchedwa siteji siginecha chithunzi. Chithunzi chilichonse chimayikidwa ndi siginecha yake ya magawo a chithunzichi, chomwe chimawerengedwa molingana ndi malamulo omwewo monga siginecha yokhazikika ya gawo lililonse padera, koma ndi chizindikiritso chonse cha chithunzicho.
Kusaina kwa magawo azithunzi kumatengera:
zomwe zili pachithunzichi;
mbiri za kusintha kwa Git zomwe zidapangitsa kuti izi zitheke.
Malo osungira a Git nthawi zonse amakhala ndi ma dummy omwe sasintha zomwe zili m'mafayilo azithunzi. Mwachitsanzo, amangopereka ndemanga kapena kuphatikiza zochita, kapena kuchita zomwe zikusintha mafayilo mu Git omwe sangalowe mu chithunzicho.
Mukamagwiritsa ntchito ma tagging okhudzana ndi zomwe zili, zovuta zoyambitsanso zosafunikira za pods ku Kubernetes chifukwa cha kusintha kwa dzina lachithunzichi zimathetsedwa, ngakhale zomwe zili pachithunzichi sizinasinthe. Mwa njira, ichi ndi chimodzi mwazifukwa zomwe zimalepheretsa kusunga ma microservices ambiri a pulogalamu imodzi munkhokwe imodzi ya Git.
Komanso, ma tagging otengera zomwe zili patsamba ndi njira yodalirika yoyika ma tag kuposa kuyika ma tagi panthambi za Git, chifukwa zomwe zili muzithunzi zomwe zatuluka sizitengera dongosolo lomwe mapaipi amapangidwira mu dongosolo la CI posonkhanitsa mabizinesi angapo anthambi yomweyo.
chofunika: kuyambira pano magawo - siginecha Ndi njira yokhayo yopangira ma tagging. Idzagwiritsidwa ntchito mwachisawawa mu lamulo werf ci-env (pokhapokha mutafotokoza mwatsatanetsatane chiwembu chosiyana ndi ma taging).
→ Zolemba. Buku linanso lidzaperekedwa ku mbali imeneyi. ZAsinthidwa (April 3): Nkhani yofotokoza zambiri losindikizidwa.
Miyezo yodula mitengo
Wogwiritsa ntchito tsopano ali ndi mwayi wowongolera zotuluka, kukhazikitsa mulingo wodula mitengo ndikugwira ntchito ndi chidziwitso chowongolera. Zosankha zawonjezeredwa --log-quiet, --log-verbose, --log-debug.
Mwachisawawa, zotulukazo zimakhala ndi mfundo zochepa:
Cholinga chake ndi chakuti wogwiritsa ntchito azigwiritsa ntchito mwachizolowezi popanda zoletsa akamagwiritsa ntchito werf.
Pakadali pano, tazindikira njira zotsatirazi zomwe titi titsimikizire chithandizo chonse:
Zosasintha (laibulale/kaundula)*,
AWS ECR
Azure*,
Docker Hub
GCR*,
Phukusi la GitHub
GitLab Registry*,
Harbor*,
Quay.
Mayankho omwe pano amathandizidwa kwathunthu ndi werf amalembedwa ndi asterisk. Kwa ena pali chithandizo, koma ndi malire.
Mavuto akulu awiri azindikirika:
Mayankho ena samathandizira kuchotsa ma tag pogwiritsa ntchito Docker Registry API, kulepheretsa ogwiritsa ntchito kugwiritsa ntchito kuyeretsa kwa werf. Izi ndizoona kwa AWS ECR, Docker Hub, ndi GitHub Packages.
Mayankho ena samathandizira zomwe zimatchedwa kuti nested repositories (Docker Hub, GitHub Packages ndi Quay) kapena kutero, koma wogwiritsa ntchito ayenera kuzipanga pamanja pogwiritsa ntchito UI kapena API (AWS ECR).
Tithana ndi mavutowa ndi ena pogwiritsa ntchito ma API amtundu wa mayankho. Ntchitoyi ikuphatikizanso kuphimba kuzungulira kwa ntchito ya werf ndi mayeso a aliyense wa iwo.
Pakadali pano, werf v1.0 ndi v1.1 zitha kugwiritsidwa ntchito pagulu limodzi lodzipereka pantchito yomanga ndi kusindikiza zithunzi ndikutumiza ku Kubernetes.
Kuti mutsegule mwayi wa ntchito yogawidwa ya werf, pamene kumanga ndi kutumizidwa kwa mapulogalamu ku Kubernetes kumayambitsidwa pamagulu angapo osasunthika ndipo makamuwa samapulumutsa dziko lawo pakati pa omanga (othamanga osakhalitsa), werf amafunika kuti agwiritse ntchito Docker Registry ngati malo ogulitsira.
M'mbuyomu, ntchito ya werf ikadali yotchedwa dapp, inali ndi mwayi wotero. Komabe, takumana ndi zovuta zingapo zomwe ziyenera kuganiziridwa pokhazikitsa izi mu werf.
ndemanga. Izi sizikufuna kuti wokhometsa azigwira ntchito mkati mwa Kubernetes pods, chifukwa Kuti muchite izi, muyenera kuchotsa kudalira kwa seva ya Docker yapafupi (mu Kubernetes pod mulibe mwayi wopita ku seva ya Docker yapafupi, chifukwa ndondomekoyi ikugwira ntchito mu chidebe, ndipo werf sichidzathandizira ndipo sichidzawathandiza. kugwira ntchito ndi seva ya Docker pamaneti). Thandizo loyendetsa Kubernetes lidzakhazikitsidwa padera.
Thandizo lovomerezeka la GitHub Actions (Chatsopano)
Mulinso zolemba za werf (magawo Buku и kutsogolera), komanso GitHub Action yovomerezeka yogwira ntchito ndi werf.
Kuphatikiza apo, zidzalola werf kugwira ntchito pa othamanga a ephemeral.
Makina ogwiritsira ntchito makina a CI adzakhazikika pakuyika zilembo pazopempha zokoka kuti ayambe kuchitapo kanthu kuti apange / kutulutsa pulogalamuyo.
Kupititsa patsogolo kwanuko ndi kutumizidwa kwa mapulogalamu ndi werf (↓)
Mu mtundu wamakono wa werf v1.1 mu ndondomekoyi cleanup Palibe njira yoyeretsera zithunzi zamakina otengera zomwe zili - zithunzi izi zichulukana.
Komanso, mtundu waposachedwa wa werf (v1.0 ndi v1.1) umagwiritsa ntchito mfundo zosiyana zotsuka zithunzi zosindikizidwa pansi pa ma tagi: Nthambi ya Git, tag ya Git kapena Git commit.
Njira yatsopano yoyeretsera zithunzi kutengera mbiri ya zochita ku Git, yolumikizidwa pamakina onse oyika, yapangidwa:
Sungani zithunzi zopitilira N1 zolumikizidwa ndi N2 zomwe zachitika posachedwa pa git HEAD iliyonse (nthambi ndi ma tag).
Sungani zithunzi zopitilira N1 zolumikizidwa ndi N2 zomwe zachitika posachedwa pa git HEAD iliyonse (nthambi ndi ma tag).
Sungani zithunzi zonse zomwe zimagwiritsidwa ntchito pamagulu aliwonse a Kubernetes (mitundu yonse ya kube yamafayilo osinthika ndi malo amazina amafufuzidwa; mutha kuchepetsa izi ndi zosankha zapadera).
Chithunzi chitha kuchotsedwa ngati sichikugwirizana ndi HEAD iliyonse kuchokera ku git (mwachitsanzo, chifukwa HEAD yofananirayo idachotsedwa) ndipo sichimagwiritsidwa ntchito paziwonetsero zilizonse mugulu la Kubernetes komanso kutulutsa kwa Helm.
Zithunzi zofananira (↓)
Mtundu: v1.1
Madeti: Januwale-February April *
Mtundu wapano wa werf umatenga zithunzi ndi zinthu zakale zomwe zafotokozedwa mu werf.yaml, motsatizana. Ndikofunikira kufananiza njira yosonkhanitsira magawo odziyimira pawokha azithunzi ndi zinthu zakale, komanso kupereka linanena bungwe labwino komanso lodziwitsa.
Kuphatikizira kusamukira ku codebase yatsopano Mtsinje 3 ndi njira yotsimikiziridwa, yabwino yosamutsira makhazikitsidwe omwe alipo.
* Zindikirani: kusinthira ku Helm 3 sikungawonjeze zinthu zofunikira pa werf, chifukwa zonse zofunika za Helm 3 (3-way-merge and no tiller) zakhazikitsidwa kale mu werf. Komanso, werf ali zina zowonjezera kuwonjezera pa zomwe zasonyezedwa. Komabe, kusinthaku kumakhalabe m'mapulani athu ndipo kukwaniritsidwa.
Jsonnet pofotokozera Kubernetes kasinthidwe (↓)
Mtundu: v1.2
Madeti: Januwale-February April-May
Werf ithandizira mafotokozedwe a Kubernetes mu mtundu wa Jsonnet. Nthawi yomweyo, werf idzakhala yogwirizana ndi Helm ndipo padzakhala kusankha mtundu wakufotokozera.
Chifukwa chake ndikuti Go ma templates, malinga ndi anthu ambiri, ali ndi chotchinga chachikulu cholowera, ndipo kumvetsetsa kwa code ya ma templateswa kumavutikanso.
Kuthekera koyambitsa njira zina zofotokozera za Kubernetes (mwachitsanzo, Kustomize) zikuganiziridwanso.