Joale o ka haha ​​​​lits'oants'o tsa Docker ho werf o sebelisa Dockerfile e tloaelehileng

Ho ba morao haholo ho feta neng kapa neng. Kapa hore na re batlile re entse phoso e tebileng joang ka ho se be le ts'ehetso bakeng sa li-Dockerfiles tse tloaelehileng ho aha litšoantšo tsa ts'ebeliso.

Joale o ka haha ​​​​lits'oants'o tsa Docker ho werf o sebelisa Dockerfile e tloaelehileng

Re tla bua ka werf - Ts'ebeliso ea GitOps e hokahantsoeng le sistimi efe kapa efe ea CI/CD mme e fana ka taolo ea bophelo bohle ba ts'ebeliso, e lumellang:

  • bokella le ho phatlalatsa litšoantšo,
  • kenya lits'ebetso ho Kubernetes,
  • hlakola litšoantšo tse sa sebelisoeng u sebelisa maano a khethehileng.


Filosofi ea morero ke ho bokella lisebelisoa tsa boemo bo tlase ho sistimi e le 'ngoe e kopaneng e fang lienjiniere tsa DevOps taolo holim'a lits'ebetso. Haeba ho khoneha, lisebelisoa tse teng (joaloka Helm le Docker) li lokela ho sebelisoa. Haeba ho se na tharollo bothateng, re ka theha le ho ts'ehetsa tsohle tse hlokahalang bakeng sa sena.

Ka morao: pokello ea litšoantšo ea hau

Sena ke se etsahetseng ka 'mokelli oa litšoantšo ho werf: Dockerfile e tloaelehileng e ne e sa lekana bakeng sa rona. Haeba u sheba ka potlako nalane ea morero, bothata bona bo hlahile liphetolelong tsa pele tsa werf (ka nako eo e ntse e le teng. e tsejoang ka hore ke dapp).

Ha re ntse re theha sesebelisoa sa ho aha lits'ebetso ho litšoantšo tsa Docker, re ile ra hlokomela kapele hore Dockerfile e ne e sa re tšoanele bakeng sa mesebetsi e itseng e ikhethileng:

  1. Tlhokahalo ea ho aha lits'ebetso tse nyane tsa webo ho latela moralo o latelang o tloaelehileng:
    • kenya ts'ebeliso ea lisebelisoa tsa sistimi ka bophara,
    • kenya sehlopha sa lilaebrari tse itšetlehileng ka lisebelisoa,
    • bokella matlotlo,
    • mme sa bohlokwa ka ho fetisisa, ntjhafatsa khoutu e setšoantšong kapele le ka katleho.
  2. Ha liphetoho li etsoa ho lifaele tsa projeke, sehahi se tlameha ho theha sekhahla se secha kapele ka ho sebelisa patch ho lifaele tse fetotsoeng.
  3. Haeba lifaele tse ling li fetohile, joale hoa hlokahala ho tsosolosa sethala se itšetlehileng ka sona.

Kajeno 'mokelli oa rona o na le menyetla e meng e mengata, empa tsena e ne e le litakatso le litakatso tsa pele.

Ka kakaretso, ntle le ho nahana habeli, re ile ra itlhomella ka puo ea mananeo eo re neng re e sebelisa (sheba ka tlase) ebe o otla tsela ea ho kenya ts'ebetsong DSL ea hae! Ho ea ka merero, e ne e reretsoe ho hlalosa ts'ebetso ea kopano ka mekhahlelo le ho fumana hore na ho itšetlehile ka mekhahlelo ena joang ho lifaele. Mme a e tlatsa 'mokelli oa hae, e ileng ea fetola DSL sepheo sa ho qetela - setšoantšo se bokaneng. Qalong DSL e ne e le Ruby, empa joalo ka ho fetela Golang - tlhophiso ea moqokeleli oa rona e qalile ho hlalosoa ka faele ea YAML.

Joale o ka haha ​​​​lits'oants'o tsa Docker ho werf o sebelisa Dockerfile e tloaelehileng
Sebopeho sa khale sa dapp ho Ruby

Joale o ka haha ​​​​lits'oants'o tsa Docker ho werf o sebelisa Dockerfile e tloaelehileng
Tlhophiso ea hajoale ea werf ho YAML

Mokhoa oa 'mokelli le oona o ile oa fetoha ha nako e ntse e ea. Qalong, re ile ra hlahisa Dockerfile ea nakoana ka fofa ho tloha tlhophisong ea rona, ebe re qala ho tsamaisa litaelo tsa kopano ka lijaneng tsa nakoana le ho itlama.

NB: Hajoale, 'mokelli oa rona, ea sebetsang ka tlhophiso ea hae (ho YAML) mme a bitsoa "mokelli oa Stapel, o se a fetohile sesebelisoa se matla haholo. Tlhaloso ea eona e qaqileng e tšoaneloa ke lihlooho tse fapaneng, 'me lintlha tsa motheo li ka fumanoa ho litokomane.

Ho hlokomela bothata

Empa re ile ra hlokomela, eseng hang-hang, hore re entse phoso e le 'ngoe: ha rea ​​ka ra eketsa bokhoni theha litšoantšo ka Dockerfile e tloaelehileng 'me u li kopanye le lits'ebetso tse ts'oanang tsa taolo ea ts'ebeliso ea pheletso (ke hore, bokella litšoantšo, u li sebelise le ho li hloekisa). Ho ne ho ka khoneha joang ho etsa sesebelisoa sa ho romelloa ho Kubernetes le ho se sebelise tšehetso ea Dockerfile, i.e. mokhoa o tloaelehileng oa ho hlalosa litšoantšo tsa merero e mengata?..

Ho e-na le ho araba potso ena, re fana ka tharollo. Ho thoe'ng haeba u se u ntse u e-na le Dockerfile (kapa sete ea Dockerfiles) 'me u batla ho sebelisa werf?

NB: Ha e le hantle, ke hobane'ng ha u ka batla ho sebelisa werf? Likarolo tse kholo li theohela ho tse latelang:

  • potoloho e felletseng ea taolo ea ts'ebeliso ho kenyelletsa tlhoekiso ea litšoantšo;
  • bokhoni ba ho laola kopano ea litšoantšo tse 'maloa ka nako e le' ngoe ho tloha ho config e le 'ngoe;
  • Mokhoa o ntlafalitsoeng oa ho tsamaisa lichate tse tsamaellanang le Helm.

Lethathamo le felletseng la tsona le ka fumanoa ho leqephe la morero.

Kahoo, haeba pejana re ka be re ithaopetse ho ngola Dockerfile bocha ho tlhophiso ea rona, joale ka thabo re tla re: "E re re u ahe li-Dockerfiles tsa hau!"

U ka se sebelisa joang?

Ts'ebetsong e felletseng ea tšobotsi ena e hlahile tokollong werf v1.0.3-beta.1. Molao-motheo o akaretsang o bonolo: mosebelisi o hlalosa tsela e eang ho Dockerfile e teng ho werf config, ebe o tsamaisa taelo. werf build... mme ke phetho - werf e tla kopanya setšoantšo. Ha re shebeng mohlala o sa bonahaleng.

Ha re phatlalatseng e latelang Dockerfile motso oa morero:

FROM ubuntu:18.04
RUN echo Building ...

Mme re tla phatlalatsa werf.yamle sebelisang sena Dockerfile:

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

Kaofela! Ka ho le letšehali matha werf build:

Joale o ka haha ​​​​lits'oants'o tsa Docker ho werf o sebelisa Dockerfile e tloaelehileng

Ho phaella moo, o ka phatlalatsa tse latelang werf.yaml ho aha litšoantšo tse 'maloa ho tsoa ho li-Dockerfiles tse fapaneng hang-hang:

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

Qetellong, e boetse e ts'ehetsa ho fetisa liparamente tse ling tsa kaho, joalo ka --build-arg и --add-host - ka werf config. Tlhaloso e felletseng ea tlhophiso ea setšoantšo sa Dockerfile e fumaneha ho leqephe la litokomane.

Hona e sebetsa?

Nakong ea ts'ebetso ea kaho, cache e tloaelehileng ea likarolo tsa lehae ho Docker e sebetsa. Leha ho le joalo, ntho ea bohlokoa ke hore werf le eona e kopanya tlhophiso ea Dockerfile ho lisebelisoa tsa eona. See se bolelang?

  1. Setšoantšo se seng le se seng se hahiloeng ho tsoa ho Dockerfile se na le sethala se le seng se bitsoang dockerfile (o ka bala haholoanyane mabapi le hore na ke mekhahlelo efe ea werf mona).
  2. Bakeng sa sethala dockerfile werf e bala tshaeno e itšetlehileng ka litaba tsa tlhophiso ea Dockerfile. Ha tlhophiso ea Dockerfile e fetoha, signature ea sethala e fetoha dockerfile 'me werf e qala kaho ea sethala sena ka tlhophiso e ncha ea Dockerfile. Haeba signature e sa fetohe, werf e nka setšoantšo ho cache (lintlha tse ling mabapi le tšebeliso ea li-signature ho werf li hlalositsoe ho tlaleho ena).
  3. Ka mor'a moo, litšoantšo tse bokelitsoeng li ka hatisoa ka taelo werf publish (kapa werf build-and-publish) 'me u e sebelise ho isoa Kubernetes. Litšoantšo tse hatisitsoeng ho Registry ea Docker li tla hloekisoa ho sebelisoa lisebelisoa tse tloaelehileng tsa ho hloekisa werf, ke hore. Litšoantšo tsa khale (tsa khale ho feta matsatsi a N), litšoantšo tse amanang le makala a seng teng a Git, le maano a mang a tla hloekisoa.

Lintlha tse ling mabapi le lintlha tse hlalositsoeng mona li ka fumanoa litokomaneng:

Lintlha le litemoso

1. URL ea kantle ha e tšehetsoe ho ADD

Hajoale ha e sebetse ho sebelisa URL ea kantle ho taelo ADD. Werf e ke ke ea qala ho aha bocha ha sesebelisoa se ho URL e boletsoeng se fetoha. Re rerile ho kenya tšobotsi ena haufinyane.

2. U ke ke ua eketsa .git setšoantšong

Ka kakaretso, ho kenyelletsa directory .git setšoantšong - tloaelo e mpe e mpe 'me ke ka lebaka lena:

  1. haeba .git e sala setšoantšong sa ho qetela, sena se tlōla melao-motheo 12 factor app: Kaha setšoantšo sa ho qetela se tlameha ho amahanngoa le boitlamo bo le bong, ha ea lokela ho khoneha ho e etsa git checkout boitlamo bo se nang mabaka.
  2. .git e eketsa boholo ba setšoantšo (sebaka sa polokelo se ka ba seholo ka lebaka la hore lifaele tse kholo li kile tsa eketsoa ho eona ebe lia hlakoloa). Boholo ba sefate sa mosebetsi bo amanang feela le boitlamo bo itseng bo ke ke ba itšetleha ka nalane ea ts'ebetso ho Git. Tabeng ena, ho phaella le ho tlosoa ho latelang .git ho tloha setšoantšong sa ho qetela ho ke ke ha sebetsa: setšoantšo se ntse se tla fumana lesela le eketsehileng - ke kamoo Docker e sebetsang kateng.
  3. Docker e ka qala ho aha bocha ho sa hlokahale, leha ho ntse ho hahuoa boitlamo bo tšoanang, empa ho tsoa lifateng tse fapaneng tsa mosebetsi. Mohlala, GitLab e theha li-directory tse arohaneng tse ikhethileng ho /home/gitlab-runner/builds/HASH/[0-N]/yourproject ha parallel kopano e nolofalitsoe. Ressembly e eketsehileng e tla ba ka lebaka la hore directory .git e fapane ka mefuta e fapaneng ea polokelo ea polokelo e le 'ngoe, le haeba boitlamo bo tšoanang bo hahiloe.

Ntlha ea ho qetela e boetse e na le liphello ha u sebelisa werf. Werf e hloka hore cache e hahelletsoeng e be teng ha o tsamaisa litaelo tse ling (mohlala. werf deploy). Ha litaelo tsena li sebetsa, werf e lekanya li-signature tsa sethala bakeng sa litšoantšo tse boletsoeng ho werf.yaml, 'me li tlameha ho ba ka har'a cache ea kopano - ho seng joalo taelo e ke ke ea khona ho tsoela pele ho sebetsa. Haeba tshaeno ea sethala e ipapisitse le litaba .git, ebe re fumana cache e sa tsitsang ho liphetoho lifaeleng tse sa sebetseng, 'me werf e ke ke ea khona ho tšoarela phoso e joalo (bakeng sa lintlha tse ling, bona litokomane).

Ka kakaretso ho eketsa lifaele tse itseng feela tse hlokahalang ka litaelo ADD leha ho le joalo e eketsa bokhoni le ts'epahalo ea se ngotsoeng Dockerfile, hape e ntlafatsa botsitso ba cache e bokelitsoeng bakeng sa sena Dockerfile, ho liphetoho tse sa sebetseng ho Git.

Phello

Tsela ea rona ea pele ea ho ngola sehahi sa rona bakeng sa litlhoko tse khethehileng e ne e le thata, e tšepahala ebile e otlolohile: ho e-na le ho sebelisa lithupa holim'a Dockerfile e tloaelehileng, re ngotse tharollo ea rona ka syntax e tloaelehileng. 'Me sena se ne se e-na le melemo ea sona: 'mokelli oa Stapel o sebetsana ka katleho le mosebetsi oa hae.

Leha ho le joalo, ha re ntse re ngola sehahi sa rona, re ile ra lahleheloa ke pono ea tšehetso ea li-Dockerfiles tse neng li le teng. Phoso ena e se e lokisitsoe, 'me nakong e tlang re rera ho nts'etsapele tšehetso ea Dockerfile hammoho le sehahi sa rona sa tloaelo sa Stapel bakeng sa kopano e abuoang le ho kopanya ho sebelisoa Kubernetes (ke hore kopano ea limathi kahare ho Kubernetes, joalo ka ha ho etsoa kaniko).

Kahoo, haeba ka tšohanyetso u na le li-Dockerfiles tse 'maloa tse rapaletseng ... leka werf!

PS Lethathamo la litokomane tse mabapi le sehlooho

Bala hape ho blog ea rona: "werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)".

Source: www.habr.com

Eketsa ka tlhaloso