Content-substructio tagging in werfa fabricator: quare et quomodo operatur?

Content-substructio tagging in werfa fabricator: quare et quomodo operatur?

werf * fons noster apertus est GitOps CLI utilitas aedificandi et tradendi applicationes ad Kubernetes. IN' dimittis v1.1 " novus pluma in imaginem publicanus introductus est: imagines tagging a content or content-fundatur tagging. Usque nunc, schema typicum tagging in werf implicatum tagging Docker imagines per Git tag, Git ramum aut Git committere. Sed omnia haec technae incommoda habent, quae novo consilio tagging funditus solvunt. Singula de eo, et cur tam bona sunt, sub incisa sunt.

Statuto microservices de volvendo ab uno Git reposito

Saepe res evenit cum applicatio in multa officia independentia plus minusve dividitur. Dimissiones horum officiorum independenter fieri possunt: ​​una vel plura officia ad tempus dimitti possunt, cetera sine mutationibus laborare debent. Sed ex parte Codicis Repositionis et Proiectionis administrationis, commodius est eiusmodi applicationes officiorum in uno reposito conservare.

Adiuncta sunt condiciones cum officia vere independentes sunt nec cum una applicatione coniunguntur. In hoc casu collocabuntur in inceptis separatis et eorum liberatio per singulos CI/CD processuum in singulis inceptis exercebitur.

Attamen, re vera, tincidunt saepe unam applicationem in plura operas scindunt, sed repositorium separatum et consilium pro singulis creandis... manifesta overkill. De hoc situ ulterius disseretur: plura talia microform in uno repositorio posito et solvo fiunt per unum processum in CI/CD.

Tagging by genere Git et Git tag

Dicamus tagging frequentissima belli adhibetur - tag-vel-ramus. Nam Git rami imagines nomine rami tuntur, nam uno ramo uno tantum tempore imago edita est illius rami nomine. Pro Git tags, imagines tagged pro nomine tag.

Cum nova Git tag creatur-exempli gratia, cum nova versio dimissa est, nova Docker tag creabitur pro omnibus imaginibus projectorum in Registry Docker:

  • myregistry.org/myproject/frontend:v1.1.10
  • myregistry.org/myproject/myservice1:v1.1.10
  • myregistry.org/myproject/myservice2:v1.1.10
  • myregistry.org/myproject/myservice3:v1.1.10
  • myregistry.org/myproject/myservice4:v1.1.10
  • myregistry.org/myproject/myservice5:v1.1.10
  • myregistry.org/myproject/database:v1.1.10

Haec nova imaginum nomina per Helm templates ad figuram Kubernetes transmittuntur. Incipiens instruere cum imperio werf deploy ager est updated image resource in Kubernetes manifestat ac sileo facultates debitas ob mutatum nomen imaginis.

quaestioin casu, cum re vera imaginis contenta non mutaverunt cum priorem rollout (Git tag), sed solum suum Docker tag, hoc accidit extra hanc applicationem restarting ac proinde aliquid downtime possibile est. Etsi nulla erat vera ratio ad hoc faciendum sileo.

Quam ob rem, cum schemate tagging currenti necesse est repositoria plura sepe Git repositoria et quaestio oritur de ordinandis evolutione ex his pluribus repositoriis. In universum talis schema evadit ut cumulatur et multiplex sit. Melius est multa officia in unum repositorium coniungere ac Docker tags creare ut sileomata non superflua non sint.

Tagging by committere

werf etiam tagging belli consociata cum Git committit.

Git-committere identifier est pro contentis Git repositorii et dependet ab historia tabulariorum recensendis in repositorio Git, sic logice videtur uti pro imaginibus tagging in Registry Docker.

Tamen, tagging by Git committere eadem habet incommoda ac tagging by Git branches or Git tags;

  • Inanis committas creari potuit quae nullas tabulas non mutat, sed Docker tag imaginis mutabitur.
  • Merge committere creari potuit qui tabellas non mutat, sed Docker tag imaginis mutabitur.
  • Mandatum fieri potest ut mutationes illas in Git quae in imaginem non sunt importatae, et Docker tag imaginis iterum mutabitur.

Tagging Git genere nomen non reflectunt imaginem versionis

Alia quaestio est coniuncta cum tagging belli pro Git ramis.

Tagging by ramus name works dum committit ramus in ordine chronologico continue colligentur.

Si in schemate currente utens incipit aedificare vetus committere cum quodam ramo coniungitur, tunc werf rescribet imaginem utens respondente Docker tag cum nuper aedificatum versionem imaginis pro veteri committo. Instruere hoc tag posthac periclitari debebit aliam trahendi versionem imaginis cum siliquas siliquas siliquas, ex quibus applicationis nostra nexum cum CI systemate amittet et desyncronizabitur.

Praeterea, cum successivis impellit in unum ramum cum brevi temporis spatio inter eos, vetera committi possunt postea quam recentiora componi: veterem versionem imaginis rescribet novam utentem Git branch tag. Huiusmodi problemata per systema CI/CD solvi possunt (exempli gratia, in GitLab CI pipeline huius pro serie commissorum immissa). Nihilominus, non omnes systemata hoc confirmant et certius esse debet via ad problema fundamentale prohibendum.

Quid est content-substructio tagging?

Ita, quod contenti-substructio tagging - tagging images by content.

Ad creandum Docker tags, primitiva Git (Git ramus, Git tag...) adhibita non sunt, sed checksum associatum:

  • quae in imagine. Imago ID tag contentum suum refert. Cum novam versionem construat, hic identifier si imagini non mutatur, non mutabit;
  • historia creandi hanc imaginem in Git. Imagines coniunctae cum diversis Git ramis et diversis historiae aedificant per werf diversas ID tags habebunt.

Talis tag identificador sic dictus est imago scaena signature.

Unaquaeque imago ex statuto graduum consistit: from, before-install, git-archive, install, imports-after-install, before-setup... git-latest-patch etc. Quisque scaena identifier habet, quod contenta reflectit scaena signature (Scaena signature).

Postrema imago, his gradibus constans, cum notatione sic dicta gradationis talium graduum tinxit. gradus signature, - quae communis est omnibus gradibus imaginis.

Utraque imago ex configuratione werf.yaml in casu universali, propria erit subscriptione ac proinde Docker tag.

Subscriptio scaena omnes has difficultates solvit:

  • Vacua repugnans Git committit.
  • Repugnans Git committit tabellas mutatorias quae ad imaginem non pertinentes sunt.
  • Non inducit ad problema de ducenda versione imaginis cum sileo aedificat pro veteri Git commisit rami.

Hoc nunc consilium tagging suadetur et est defectus in werf pro omnibus systematibus CI.

Quomodo utatur et utatur in werf?

Nunc mandatum est optio correspondentes werf publish: --tag-by-stages-signature=true|false

In systemate CI, belli tagging per mandatum specificatur werf ci-env. Antea modulus definitus est werf ci-env --tagging-strategy=tag-or-branch. Nunc, si specificare werf ci-env --tagging-strategy=stages-signature vel non specificare hanc optionem, werf belli per default utetur tagging stages-signature. Team werf ci-env necesse vexilla ad imperium sponte posuit werf build-and-publish (aut werf publish) ut nullae optiones additae his praeceptis definiantur.

Verbi gratia, praeceptum;

werf publish --stages-storage :local --images-repo registry.hello.com/web/core/system --tag-by-stages-signature

... creare possunt sequentes imagines:

  • registry.hello.com/web/core/system/backend:4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d
  • registry.hello.com/web/core/system/frontend:f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6

est 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d subscriptio gradus imaginis est backendquod f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - subscriptio imaginis gradus frontend.

Cum per specialia munera werf_container_image и werf_container_env Nihil opus est in exemplis Helm mutare aliquid: haec munera sponte generabunt nomina imaginum recta.

Exemplum configurationis in systemate CI:

type multiwerf && source <(multiwerf use 1.1 beta)
type werf && source <(werf ci-env gitlab)
werf build-and-publish|deploy

Plura de configuratione praesto sunt in documentis:

in summa

  • Nova optio werf publish --tag-by-stages-signature=true|false.
  • Novum valorem optio werf ci-env --tagging-strategy=stages-signature|tag-or-branch (Si non certa, defalta erit stages-signature).
  • Si antea usus tagging optiones pro Git fecerit (WERF_TAG_GIT_COMMIT sive optio werf publish --tag-git-commit COMMIT) Vide ergo ut switch ad tagging belli mansiones-signaturae.
  • Melius est statim nova incepta ad novum tagging propositum flectere.
  • Cum ad werfum 1.1 transferatur, antiqua incepta ad novum tagging schema, vetera commutari visum est. tag-vel-ramus adhuc sustentatur.

Content-substructio tagging problemata solvit omnia in articulo:

  • Docker tag name resistentia ad inane Git committit.
  • Mollitia Docker tag nomen ad Git committit quae mutatoriae imagini nihili habent.
  • Non inducit ad quaestionem de ducenda versione imaginis cum sileo aedificat pro Git ramis antiquis committit.

Utere! Et noli oblivisci nos visitare GitHubconstitutionem creare vel existentem invenire, plus addere, PR creare vel simpliciter progressionem rei spectare.

PS

Lege etiam in nostro diario:

Source: www.habr.com

Add a comment