Mee 27 an der Haaptsall vun der DevOpsConf 2019 Konferenz, am Kader vum Festival ofgehalen , am Kader vun der Rubrik "Continuous Delivery" gouf e Bericht "werf - our tool for CI/CD in Kubernetes". Et schwÀtzt iwwer déi Problemer an Erausfuerderungen, déi jidderee konfrontéiert beim Ofbau op Kubernetes, wéi och iwwer Nuancen, déi vlÀicht net direkt bemierkbar sinn. Analyséiere méiglech Léisungen, mir weisen wéi dëst an engem Open Source Tool ëmgesat gëtt .
Zënter der Presentatioun huet eis Utility (fréier als Dapp bekannt) en historesche Meilesteen erreecht 1000 StÀren op GitHub - mir hoffen datt seng wuessend Gemeinschaft vu Benotzer d'Liewe méi einfach mécht fir vill DevOps Ingenieuren.

Also, loosst eis virstellen (~ 47 Minutten, vill méi informativ wéi den Artikel) an den Haaptextrakt dovunner an Textform. Gitt!
Liwweren Code zu Kubernetes
D'Diskussioun wÀert net méi iwwer werf goen, mee iwwer CI/CD zu Kubernetes, wat implizéiert datt eis Software an Docker Container verpackt ass (Ech hunn iwwer dëst geschwat an ), an K8s wÀert benotzt ginn et zu Produktioun lafen (méi iwwer dëst an ).
Wéi gesÀit d'Liwwerung zu Kubernetes aus?
- Et gëtt e Git Repository mam Code an Instruktioune fir et ze bauen. D'Applikatioun ass an engem Docker Bild agebaut an am Docker Registry publizéiert.
- Dee selwechte Repository enthÀlt och Instruktioune wéi d'Applikatioun z'installéieren an ausféiert. An der Installatiounsstadium ginn dës Instruktiounen un Kubernetes geschéckt, déi de gewënschte Bild aus der Registry kritt an et lancéiert.
- Plus, et ginn normalerweis Tester. E puer vun dësen kënne gemaach ginn wann Dir e Bild publizéiert. Dir kënnt och (no déiselwecht Instruktiounen) eng Kopie vun der Applikatioun ofsetzen (an engem separaten K8s Nummraum oder engem separaten Cluster) an Tester do lafen.
- Schlussendlech braucht Dir e CI System deen Eventer vu Git kritt (oder KnÀppercher) an all déi designéiert Etappen nennt: bauen, publizéieren, deployéieren, testen.

Et ginn e puer wichteg Notizen hei:
- Well mir hunn eng onverÀnnerbar Infrastruktur (onverÀnnerbar Infrastruktur), d'Applikatiounsbild dat an alle Stadien benotzt gëtt (Staging, Produktioun, asw.), et muss een sinn. Ech hunn iwwer dëst méi detailléiert a mat Beispiller geschwat. .
- Well mir verfollegen d'Infrastruktur als Code Approche (IaC), den Applikatiounscode, d'Instruktioune fir ze montéieren an ze lancéieren sollten sinn genee an engem Repository. Fir méi Informatiounen iwwer dëst, kuckt .
- Liwwerung Kette (Liwwerung) mir gesinn et normalerweis esou: d'Applikatioun gouf zesummegesat, getest, verëffentlecht (Verëffentlechungsstadium) an dat ass et - d'Liwwerung ass stattfonnt. Awer a Wierklechkeet kritt de Benotzer wat Dir ausgerullt hutt, Net dann wann Dir et zu Produktioun geliwwert, a wann hien dohinner goe konnt an dës Produktioun geschafft. Also ech gleewen datt d'Liwwerungskette endet nëmmen an der operationell Etapp (lafen), oder méi prÀzis, och am Moment wou de Code aus der Produktioun gelÀscht gouf (ersetzt et mat engem neien).
Loosst eis zréck op déi uewe genannte Liwwerschema zu Kubernetes: et gouf net nëmme vun eis erfonnt, mee vu wuertwiertlech jiddereen deen mat dësem Problem behandelt huet. TatsÀchlech gëtt dëst Muster elo GitOps genannt (Dir kënnt méi iwwer de Begrëff an d'Iddien hannendrun liesen ). Loosst eis d'Etappe vum Schema kucken.
Etapp bauen
Et géif schéngen datt Dir iwwer Docker-Biller am Joer 2019 schwÀtze kënnt, wa jidderee weess wéi een Dockerfiles schreift a lafen docker build?.. Hei sinn d'Nuancen op déi ech gÀren oppassen:
- Bild Gewiicht wichteg, also benotzen fir am Bild nëmmen d'Applikatioun ze loossen déi wierklech fir d'Operatioun néideg ass.
- Zuel vun Schichten muss miniméiert ginn duerch Kombinatioun vun Ketten vun
RUN-Commande no Bedeitung. - AllerdĂ©ngs fĂŒĂŒgt dĂ«st Problemer Debugging, Well wann d'Versammlung klappt, musst Dir de richtege Kommando aus der Kette fannen, dĂ©i de Problem verursaacht huet.
- AssemblĂ©e Vitesse wichteg well mir sĂ©ier Ănnerungen wĂ«llen ausrollen an d'Resultater gesinn. Zum Beispill, Dir wĂ«llt net OfhĂ€ngegkeeten a SproochbibliothĂ©iken opbauen all KĂ©ier wann Dir eng Applikatioun baut.
- Dacks vun engem Git Repository Dir braucht vill Biller, déi duerch e Set vun Dockerfiles (oder benannte Stadien an enger Datei) an engem Bash Skript mat hirer sequentieller Versammlung geléist kënne ginn.
DĂ«st war just den Tipp vum Ăisbierg mat deem jidderee konfrontĂ©iert ass. Awer et ginn aner Probleemer, besonnesch:
- Dacks brauche mir op der Montagestadium eppes montéieren (zum Beispill, Cache d'Resultat vun engem Kommando wéi apt an engem Drëtt Partei Verzeechnes).
- Mir wëllen Sicht amplaz an der Schuel ze schreiwen.
- Mir wëllen bauen ouni Docker (firwat brauche mir eng zousÀtzlech virtuell Maschinn, an dÀr mir alles dofir musse konfiguréieren, wa mir schonn e Kubernetes-Cluster hunn, an deem mir Container kënne lafen?).
- Parallel Assemblée, déi op verschidde Manéiere verstane kënne ginn: verschidde Kommandoen aus der Dockerfile (wann Multi-Stage benotzt gëtt), verschidde Verpflichtungen vum selwechte Repository, verschidde Dockerfiles.
- Verdeelt Versammlung: Mir wëllen Saachen an Pods sammelen déi "ephemeral" sinn, well hire Cache verschwënnt, dat heescht et muss iergendwou separat gespÀichert ginn.
- Schlussendlech hunn ech den Héichpunkt vun de Wënsch genannt automagic: Et wier ideal fir an de Repository ze goen, e Kommando ze tippen an e fÀerdegt Bild ze kréien, zesummegesat mat engem VerstÀndnis vu wéi a wat richteg ze maachen. Ech perséinlech sinn awer net sécher, datt all Nuancen esou virausgesinn sinn.
An hei sinn d'Projeten:
- - e Builder vun Docker Inc (schonn integréiert an aktuell Versioune vum Docker), dee probéiert all dës Problemer ze léisen;
- - e Builder vu Google deen Iech erlaabt ouni Docker ze bauen;
- - De Versuch vum CNCF fir automatesch Magie ze maachen a besonnesch eng interessant Léisung mat Rebase fir Schichten;
- an eng Rëtsch aner Utilities, wéi z , ...
... a kuckt wéivill StÀren se op GitHub hunn. Dat heescht, engersÀits, docker build existéiert a kann eppes maachen, awer an der Realitéit de Problem ass net komplett geléist - Beweis dofir ass d'parallel Entwécklung vun alternativen Sammler, déi jidderee en Deel vun de Problemer léist.
Assemblée zu werf
Also hu mir bis (virdrun wéi dapp) - En Open Source Utility vun der Flant Firma, déi mir zënter ville Joere maachen. Et huet alles ugefaang viru 5 Joer mat Bash Scripten déi d'Versammlung vun Dockerfiles optimiséiert hunn, a fir déi lescht 3 Joer ass vollwÀerteg Entwécklung am Kader vun engem Projet mat sengem eegene Git Repository duerchgefouert ginn. (éischt am Ruby, an dann ze goen, a glÀichzÀiteg ëmbenannt). Wat Assemblée Problemer sinn an werf geléist?

D'Problemer, déi a blo schaarf sinn, si scho implementéiert, de parallele Bau gouf am selwechte Host gemaach, an d'Problemer, déi a giel markéiert sinn, si geplangt bis Enn vum Summer ofgeschloss ze ginn.
Etapp vun der Verëffentlechung am Registry (publicéieren)
Mir hu geruff docker push... - wat kéint schwéier sinn e Bild an d'Registry eropzelueden? An da stellt sech d'Fro: "Wéi eng Tag soll ech op d'Bild setzen?" Et entsteet aus dem Grond datt mir hunn Gitflow (oder aner Git Strategie) a Kubernetes, an d'Industrie probéiert sécherzestellen datt wat an Kubernetes geschitt ass wat am Git geschitt. No allem ass Git eis eenzeg Quell vun der Wourecht.
Wat ass sou schwéier un dësem? Garantéiert d'Reproduktioun: vun engem Engagement am Git, deen an der Natur onverÀnnerbar ass (onverÀnnerbar), zu engem Docker-Bild, dat sollt d'selwecht bleiwen.
Et ass och wichteg fir eis bestëmmen Urspronk, well mir wëlle verstoen aus wéi eng Verpflichtung d'Applikatioun déi am Kubernetes leeft gebaut gouf (da kënne mir Differenzen an Àhnlech Saachen maachen).
Tagging Strategien
DĂ©i Ă©ischt ass einfach git tag. Mir hunn e Registry mat engem Bild markĂ©iert als 1.0. Kubernetes huet BĂŒhn a Produktioun, wou dĂ«st Bild eropgeluede gĂ«tt. Am Git maache mir Verpflichtungen a mir taggen iergendwann 2.0. Mir sammelen et no den Instruktioune vum Repository a setzen se an de Registry mam Tag 2.0. Mir rullen et op d'BĂŒhn an, wann alles gutt ass, dann op d'Produktioun.

De Problem mat dëser Approche ass datt mir fir d'éischt den Tag setzen, an nëmmen dann getest a gerullt hunn. Firwat? Als éischt ass et einfach onlogesch: mir ginn eng Versioun vu Software eraus, déi mir nach net getest hunn (mir kënnen net anescht maachen, well fir ze kontrolléieren, musse mir e Tag setzen). Zweetens ass dëse Wee net kompatibel mat Gitflow.
Déi zweet Optioun - git commit + tag. D'Meeschtesch Branche huet e Tag 1.0; fir et am Registry - e Bild op d'Produktioun ofgesat. ZousÀtzlech huet de Kubernetes Cluster Virschau an Inszenéierungskonturen. Als nÀchst verfollege mir Gitflow: an der Haaptbranche fir Entwécklung (develop) mir maachen nei Fonctiounen, wat zu engem Engagement mam Identifizéierer resultéiert #c1. Mir sammelen et a publizéieren et am Registry mat dësem Identifizéierer (#c1). Mat deemselwechten Identifizéierer rulle mir aus fir ze kucken. Mir maachen datselwecht mat Verpflichtungen #c2 О #c3.
Wann mir gemierkt hunn, datt et genuch Fonctiounen sinn, mir fĂ€nken alles ze stabilisĂ©ieren. Erstellt eng Filial am Git release_1.1 (op der Basis #c3 aus develop). Et ass net nĂ©ideg dĂ«s VerĂ«ffentlechung ze sammelen, well ... dĂ«st gouf am virege SchrĂ«tt gemaach. Dofir kĂ«nne mir et einfach op d'InszenĂ©ierung rullen. Mir fixen Bugs an #c4 an Ă€hnlech ausrollen op d'BĂŒhn. Zur selwechter ZĂ€it ass d'EntwĂ©cklung amgaang develop, wou Ănnerungen periodesch geholl ginn release_1.1. Iergendwann krĂ©ie mir eng Verpflichtung kompilĂ©iert an op d'Staging eropgelueden, mat deem mir frou sinn (#c25).
Da fusionéiere mir (mat Fast-Forward) d'Verëffentlechungszweige (release_1.1) am Meeschter. Mir setzen en Tag mat der neier Versioun op dësem Engagement (1.1). Awer dëst Bild ass schonn am Registry gesammelt, also fir et net erëm ze sammelen, addéiere mer einfach en zweeten Tag op dat existent Bild (elo huet et Tags am Registry #c25 О 1.1). Duerno rullen mir et an d'Produktioun aus.
Et gëtt en Nodeel datt nëmmen ee Bild op d'Staging eropgeluede gëtt (#c25), an an der Produktioun ass et anescht (1.1), awer mir wëssen datt "physesch" dëst datselwecht Bild aus der Registry sinn.

De richtege Nodeel ass datt et keng ĂnnerstĂ«tzung fir Fusiounsverpflichtungen ass, Dir musst sĂ©ier viru maachen.
Mir kënne méi wÀit goen an en Trick maachen ... Loosst eis e Beispill vun engem einfachen Dockerfile kucken:
FROM ruby:2.3 as assets
RUN mkdir -p /app
WORKDIR /app
COPY . ./
RUN gem install bundler && bundle install
RUN bundle exec rake assets:precompile
CMD bundle exec puma -C config/puma.rb
FROM nginx:alpine
COPY --from=assets /app/public /usr/share/nginx/www/publicLoosst eis e Fichier dovunner bauen no dem folgende Prinzip:
- SHA256 vun den Identifizéierer vun de benotzte Biller (
ruby:2.3Đžnginx:alpine), dĂ©i Kontrollsumme vun hirem Inhalt sinn; - all Ăquipen (
RUN,CMDa sou weider.); - SHA256 aus Dateien déi dobÀigesat goufen.
... an huelt de Checksum (erĂ«m SHA256) aus esou engem Fichier. DĂ«st ĂnnerschrĂ«ft alles wat den Inhalt vum Docker Bild definĂ©iert.

Loosst eis zrĂ©ck op d'Diagramm an amplaz engagĂ©iert wĂ€erte mir esou ĂnnerschrĂ«ften benotzen, d.h. Tag Biller mat ĂnnerschrĂ«ften.

Elo, wann et nĂ©ideg ass, zum Beispill, Ănnerungen vun enger VerĂ«ffentlechung op Meeschter ze fusionĂ©ieren, kĂ«nne mir e richtege Fusiounsverpflichtung maachen: et wĂ€ert en aneren IdentifizĂ©ierer hunn, awer dĂ©iselwecht ĂnnerschrĂ«ft. Mat deemselwechten IdentifizĂ©ierer wĂ€erte mir d'Bild op d'Produktioun rullen.
Den Nodeel ass datt et elo net méiglech ass ze bestëmmen wat fir eng Engagement op d'Produktioun gedréckt gouf - d'Checksumme funktionnéieren nëmmen an eng Richtung. Dëse Problem gëtt duerch eng zousÀtzlech Schicht mat Metadaten geléist - ech soen Iech méi spéit méi.
Tagging in werf
Zu werf si mir nach méi wÀit gaang a si preparéiere fir e verdeelt Build mat engem Cache ze maachen deen net op enger Maschinn gespÀichert ass ... Also, mir bauen zwou Zorte vun Docker Biller, mir nennen se Etapp О Bild.
De werf Git Repository spĂ€ichert Bauspezifesch Instruktiounen dĂ©i dĂ©i verschidden Etappe vum Bau beschreiwen (virun InstallĂ©ieren, installĂ©ieren, virum Setup, ageriicht). Mir sammelen dĂ©i Ă©ischt Stuf Bild mat enger ĂnnerschrĂ«ft definĂ©iert als Checksum vun den Ă©ischte SchrĂ«tt. Dann addĂ©iere mer de Quellcode, fir dat neit BĂŒhnbild berechene mir seng Kontrollsumme ... DĂ«s Operatioune gi fir all Etappe widderholl, als Resultat vun deem mir e Set vu BĂŒhnebiller krĂ©ien. Da maache mir dat lescht Bild, dat och Metadaten iwwer hiren Hierkonft enthĂ€lt. A mir markĂ©ieren dĂ«st Bild op verschidde ManĂ©ieren (Detailer mĂ©i spĂ©it).

Ugeholl datt duerno en neien Engagement erschĂ©ngt an deem nĂ«mmen den Uwendungscode geĂ€nnert gouf. Wat wĂ€ert geschĂ©ien? Fir Code Ănnerungen gĂ«tt e Patch erstallt an en neit BĂŒhnbild gĂ«tt virbereet. Seng ĂnnerschrĂ«ft gĂ«tt als Checksum vum alen BĂŒhnbild an dem neie Patch bestĂ«mmt. En neit lescht Bild gĂ«tt aus dĂ«sem Bild geformt. Ăhnlech Verhalen wĂ€ert geschĂ©ien mat Ănnerungen an anere Stadien.
Also, BĂŒhnebiller sinn e Cache, dee verdeelt ka gespĂ€ichert ginn, an d'Biller, dĂ©i scho erstallt goufen, ginn an den Docker Registry eropgelueden.

Botzen vum Registry
Mir schwÀtzen net iwwer d'LÀsche vun Schichten déi no gelÀscht Tags hÀnke bliwwen - dëst ass eng Standard Feature vum Docker Registry selwer. Mir schwÀtzen iwwer eng Situatioun wou vill Docker Tags accumuléieren a mir verstinn datt mir e puer vun hinnen net méi brauchen, awer se huelen Plaz op (an/oder mir bezuelen dofir).
Wat sinn d'Botzstrategien?
- Dir kënnt just nÀischt maachen net botzen. Heiansdo ass et wierklech méi einfach e bëssen fir extra Plaz ze bezuelen wéi e risege Wirbel vun Tags z'entdecken. Awer dëst funktionnéiert nëmme bis zu engem gewësse Punkt.
- Voll reset. Wann Dir all Biller lÀscht an nëmmen déi aktuell am CI System opbaut, kann e Problem entstoen. Wann de Container an der Produktioun nei gestart gëtt, gëtt en neit Bild dofir gelueden - een deen nach net vu jidderengem getest gouf. Dëst killt d'Iddi vun onverÀnnerbarer Infrastruktur ëm.
- Blo-gréng. Ee Registry huet ugefaang ze iwwerflësseg - mir lued Biller op eng aner erop. Dee selwechte Problem wéi an der viregter Method: op wéi engem Punkt kënnt Dir de Registry lÀschen, deen ugefaang huet ze iwwerlafen?
- No der ZÀit. All Biller méi al wéi 1 Mount lÀschen? Awer et wÀert definitiv e Service ginn deen zënter engem Mount net aktualiséiert gouf ...
- Manuell bestëmmen wat scho gelÀscht ka ginn.
Et ginn zwou wierklech liewensfĂ€eg Optiounen: net botzen oder eng Kombinatioun vu blo-grĂ©ng + manuell. Am leschte Fall schwĂ€tze mir iwwer dĂ©i folgend: Wann Dir versteet datt et ZĂ€it ass de Registry ze botzen, erstellt Dir en neit a fĂŒĂŒgt all nei Biller derbĂ€i am Laf vun zum Beispill engem Mount. A no engem Mount, kuckt wĂ©i eng Pods an Kubernetes nach Ă«mmer dĂ©i al Registry benotzen, a transferĂ©iert se och an dĂ©i nei Registry.
Wat sinn mir komm werf? Mir sammelen:
- Git Head: all Tags, all Branchen - unzehuelen datt mir alles brauchen wat am Git an de Biller markéiert ass (a wann net, da musse mir et am Git selwer lÀschen);
- all Pods déi momentan op Kubernetes gepompelt ginn;
- al ReplicaSets (wat viru kuerzem verëffentlecht gouf), a mir plangen och Helm Verëffentlechungen ze scannen a wielt déi lescht Biller do.
... a maacht eng WĂ€isslĂ«scht aus dĂ«sem Set - eng LĂ«scht vu Biller dĂ©i mir net lĂ€schen. Mir botzen alles anescht, duerno fanne mir orphan BĂŒhnbilder a lĂ€schen se och.
Deploy Stage
ZouverlÀsseg Deklarativitéit
Den éischte Punkt deen ech gÀren opmierksam maachen an der Deployment ass d'Rollout vun der aktualiséierter Ressourcekonfiguratioun, deklarativ deklaréiert. D'Original YAML Dokument Kubernetes Ressourcen beschreift ass ëmmer ganz anescht wéi d'Resultat tatsÀchlech am Cluster lafen. Well Kubernetes der Konfiguratioun bÀidréit:
- Identifizéierer;
- Service Informatiounen;
- vill Default WĂ€erter;
- Sektioun mat aktuellen Zoustand;
- Ănnerungen gemaach als Deel vun der EntrĂ©e Webhook;
- d'Resultat vun der Aarbecht vu verschiddene Controller (an dem Scheduler).
Dofir, wann eng nei Ressourcekonfiguratioun erschéngt (nei), kënne mir net nëmmen déi aktuell, "live" Konfiguratioun mat him huelen an iwwerschreiwen (liewen). Fir dëst ze maachen, musse mir verglÀichen nei mat der lescht applizéierter Konfiguratioun (lescht applizéiert) a rullt op liewen krut Patch.
Dës Approche gëtt genannt 2-Wee Fusioun. Et gëtt zum Beispill an Helm benotzt.
Et gëtt och 3-Wee Fusioun, déi ënnerscheet sech an deem:
- verglÀichen lescht applizéiert О nei, mir kucken op wat gelÀscht gouf;
- verglÀichen nei О liewen, mir kucken wat dobÀi oder geÀnnert gouf;
- de summéierten Patch gëtt ugewannt liewen.
Mir deployéieren 1000+ Uwendungen mat Helm, sou datt mir tatsÀchlech mat 2-Wee Fusioun liewen. Wéi och ëmmer, et huet eng Rei Probleemer déi mir mat eise Patches geléist hunn, déi hëllefen den Helm normal ze schaffen.
Real Rollout Status
Nodeems eise CI System eng nei Konfiguratioun fir Kubernetes generéiert baséiert op dem nÀchsten Event, iwwerdréit et fir ze benotzen (anwenden) zu engem StÀrekoup - benotzt Helm oder kubectl apply. Als nÀchst geschitt déi scho beschriwwe N-Wee Fusioun, op déi d'Kubernetes API approuvéierend op den CI System reagéiert, an dat op sÀi Benotzer.

Et gĂ«tt awer e grousse Problem: schliisslech erfollegrĂ€ich Applikatioun heescht net erfollegrĂ€ich Rollout. Wann Kubernetes versteet wĂ©i eng Ănnerungen applizĂ©iert musse ginn an et applizĂ©iert, wĂ«sse mir nach Ă«mmer net wat d'Resultat wĂ€ert sinn. Zum Beispill, d'AktualisĂ©ierung an d'Restart vun Pods am Frontend kann erfollegrĂ€ich sinn, awer net am Backend, a mir krĂ©ien verschidde Versioune vun de lafende Applikatiounsbiller.
Fir alles richteg ze maachen, erfuerdert dëse Schema en zousÀtzleche Link - e spezielle Tracker, deen Statusinformatioun vun der Kubernetes API kritt an iwwerdroe fir weider Analyse vum realen Zoustand vun de Saachen. Mir hunn eng Open Source Bibliothéik am Go erstallt - (kuckt seng Ukënnegung ), déi dëse Problem léist an an werf agebaut ass.
D'Behuele vun dësem Tracker um werf Niveau ass konfiguréiert mat Annotatiounen déi op Deployments oder StatefulSets gesat ginn. Haaptannotatioun - fail-mode - versteet déi folgend Bedeitungen:
-
IgnoreAndContinueDeployProcessâ mir ignorĂ©ieren d'Problemer vun der Ausrollung vun dĂ«ser Komponent a fuere weider mat der Deployment; -
FailWholeDeployProcessImmediately- e Feeler an dësem Komponent stoppt den Deploymentprozess; -
HopeUntilEndOfDeployProcessâ mir hoffen, datt dĂ«s komponent bis zum enn vun der deployment funktionĂ©iert.
Zum Beispill, dës Kombinatioun vu Ressourcen an AnnotatiounswÀerter fail-mode:

Wa mir fir d'éischte Kéier ofsetzen, ass d'Datebank (MongoDB) vlÀicht nach net fÀerdeg - Deployments falen. Awer Dir kënnt op de Moment waarden bis et ufÀnkt, an d'Deployment wÀert nach ëmmer stattfannen.
Et ginn zwou weider Annotatiounen fir kubedog zu werf:
-
failures-allowed-per-replica- d'Zuel vun erlaabt Falen fir all Replica; -
show-logs-until- reguléiert de Moment, bis deen werf (am stdout) Logbicher vun all ausgerullten Pods weist. De Standard assPodIsReady(fir Messagen ze ignoréieren déi mir wahrscheinlech net wëllen wann de Traffic ufÀnkt op de Pod ze kommen), awer WÀerter sinn och valabel:ControllerIsReadyОEndOfDeploy.
Wat soss wëlle mir vum Asaz?
ZousÀtzlech zu deenen zwee schonn beschriwwenen Punkte wëlle mir:
- ze gesinn Logbicher - an nëmmen déi néideg, an net alles an enger Zeil;
- Streck Fortschrëtt, well wann d'Aarbecht e puer Minutten "roueg" hÀnkt, ass et wichteg ze verstoen wat do geschitt;
- hunn automatesch Réckroll am Fall wou eppes falsch gaang ass (an dofir ass et kritesch de richtege Status vun der Deployment ze kennen). D'Rollout muss atomesch sinn: entweder geet et bis zum Enn, oder alles geet zréck an sÀi fréiere Staat.
Resultater
Fir eis als Firma, all beschriwwen Nuancen a verschiddene Liwwerstadien ëmzesetzen (bauen, publizéieren, ofsetzen), CI System an Utility sinn genuch .
Amplaz vun enger Conclusioun:

Mat der Hëllef vu werf hu mir gutt Fortschrëtter gemaach fir eng grouss Zuel vu Probleemer fir DevOps Ingenieuren ze léisen a wiere frou wann déi breet Gemeinschaft op d'mannst dëst Utility an Aktioun probéiert. Et wÀert méi einfach sinn e gutt Resultat zesummen ze erreechen.
Videoen a Rutschen
Video vun der Leeschtung (~ 47 Minutten):

Presentatioun vum Rapport:
PS
Aner Berichter iwwer Kubernetes op eisem Blog:
- «» (Dmitry Stolyarov; Abrëll 27, 2019 op "Strike");
- «» (Andrey Polovov; Abrëll 8, 2019 op Saint HighLoad++);
- «» (Dmitry Stolyarov; 8. November 2018 op HighLoad++);
- «» (Dmitry Stolyarov; Mee 28, 2018 bei RootConf);
- «» (Dmitry Stolyarov; 7. November 2017 op HighLoad++);
- «» (Dmitry Stolyarov; Juni 6, 2017 bei RootConf).
Source: will.com
