Ị nwere ike iwulite onyonyo Docker na werf site na iji Dockerfile oge niile

Mma mbubreyo karịa mgbe. Ma ọ bụ otu anyị siri mehie ihe site na enweghị nkwado maka Dockerfiles oge niile iji wuo onyonyo ngwa.

Ị nwere ike iwulite onyonyo Docker na werf site na iji Dockerfile oge niile

Anyị ga-ekwu maka ya werf - GitOps bara uru nke jikọtara ya na sistemụ CI / CD ọ bụla ma na-enye njikwa nke usoro ndụ ngwa niile, na-enye ohere:

  • kpokọta ma bipụta onyonyo,
  • tinye ngwa na Kubernetes,
  • hichapụ onyonyo ejighi eji atumatu pụrụ iche.


Nkà ihe ọmụma nke ọrụ ahụ bụ ịnakọta ngwaọrụ ndị dị ala n'ime otu usoro jikọtara ọnụ nke na-enye ndị injinia DevOps ịchịkwa ngwa. Ọ bụrụ na ọ ga-ekwe omume, ekwesịrị iji ngwa ndị dị adị (dị ka Helm na Docker). Ọ bụrụ na enweghị ngwọta maka nsogbu, anyị nwere ike ịmepụta ma kwado ihe niile dị mkpa maka nke a.

Ndabere: onye nchịkọta onyonyo nke gị

Nke a bụ ihe mere onye nchịkọta ihe onyonyo na werf: Dockerfile a na-emebu ezughi anyị. Ọ bụrụ na ị na-eleba anya ngwa ngwa na akụkọ ihe mere eme nke oru ngo, nsogbu a pụtara na mbụ nsụgharị nke werf (mgbe ahụ ka. mara dị ka dapp).

Mgbe anyị na-eke ngwa maka iwulite ngwa n'ime onyonyo Docker, anyị chọpụtara ngwa ngwa na Dockerfile adabaghị maka anyị maka ụfọdụ ọrụ akọwapụtara nke ọma:

  1. Mkpa iwulite obere ngwa webụ dị ka atụmatụ ọkọlọtọ ndị a si dị:
    • tinye dabere na ngwa sistemụ niile,
    • wụnye nnukwu ọba akwụkwọ dabere na ngwa,
    • chịkọta akụ,
    • na nke kachasị mkpa, melite koodu dị na oyiyi ahụ ngwa ngwa na nke ọma.
  2. Mgbe a na-eme mgbanwe na faịlụ ọrụ, onye na-ewu ụlọ ga-emepụta ngwa ngwa ọhụrụ site na itinye patch na faịlụ ndị gbanwere.
  3. Ọ bụrụ na ụfọdụ faịlụ agbanweela, mgbe ahụ ọ dị mkpa iji wughachi ogbo dabere kwekọrọ.

Taa onye nchịkọta anyị nwere ọtụtụ ohere ndị ọzọ, mana ndị a bụ ọchịchọ na mkparị mbụ.

N'ozuzu, n'echeghị echiche ugboro abụọ, anyị na-eji asụsụ mmemme nke anyị ji eme ihe (hụ okpuru) wee kụọ ụzọ iji mejuputa DSL nke ya! N'ikwekọ n'ebumnobi ndị ahụ, e bu n'obi ịkọwa usoro mgbakọ ahụ na nkebi ma chọpụta ihe ndabere nke usoro ndị a na faịlụ. Ma kwado ya onye nchikota nke onwe, nke tụgharịrị DSL ka ọ bụrụ ihe mgbaru ọsọ ikpeazụ - ihe oyiyi gbakọtara. Na mbụ DSL nọ na Ruby, mana dịka mgbanwe na Golang - A malitere ịkọwa nhazi nke onye nchịkọta anyị na faịlụ YAML.

Ị nwere ike iwulite onyonyo Docker na werf site na iji Dockerfile oge niile
Nhazi ochie maka dapp na Ruby

Ị nwere ike iwulite onyonyo Docker na werf site na iji Dockerfile oge niile
Nhazi ugbu a maka werf na YAML

Usoro nke onye nchịkọta na-agbanwekwa ka oge na-aga. Na mbụ, anyị na-emepụta Dockerfile nwa oge na-efe efe site na nhazi anyị, mgbe ahụ anyị malitere ịme ntụziaka mgbakọ n'ime akpa nwa oge wee mee.

NB: N'oge a, onye nchịkọta anyị, nke na-arụ ọrụ na nhazi nke ya (na YAML) ma na-akpọ Stapel Collector, amalitelarị ịghọ ngwá ọrụ dị ike. Nkọwa nkọwa ya kwesịrị ka akụkọ dị iche iche, yana nkọwa ndị bụ isi nwere ike ịchọta na akwụkwọ.

Mmata nke nsogbu

Ma anyị ghọtara, ọ bụghị ozugbo, na anyị mehiere otu: anyị agbakwunyeghị ikike wuo onyonyo site na ọkọlọtọ Dockerfile ma tinye ha n'ime otu akụrụngwa njikwa ngwa njedebe na njedebe (ya bụ, na-anakọta onyonyo, tinye ma hichaa ha). Kedu ka ọ ga-esi kwe omume ịmepụta ngwá ọrụ maka ibunye na Kubernetes ma ghara imejuputa nkwado Dockerfile, i.e. ụzọ ọkọlọtọ iji kọwaa onyonyo maka ọtụtụ ọrụ?..

Kama ịza ajụjụ a, anyị na-enye ngwọta. Kedu ihe ma ọ bụrụ na ịnweelarị Dockerfile (ma ọ bụ otu Dockerfile) ma chọọ iji werf?

NB: Site n'ụzọ, gịnị kpatara na ị ga-achọ ọbụna iji werf? Ihe ndị bụ isi na-agbadata na ndị a:

  • okirikiri njikwa ngwa zuru oke gụnyere nhicha ihe onyonyo;
  • ikike ijikwa mgbakọ nke ọtụtụ onyonyo n'otu oge site na otu nhazi;
  • Usoro mbugharị emelitere maka eserese Helm dakọtara.

Enwere ike ịchọta ndepụta zuru oke nke ha na ibe oru ngo.

Yabụ, ọ bụrụ na mbụ anyị gaara enye gị idegharị Dockerfile na nhazi anyị, ugbu a, anyị ga-eji obi ụtọ kwuo: "Ka werf wuo Dockerfile gị!"

Esi mee ihe?

Mmezu zuru oke nke njirimara a pụtara na ntọhapụ werf v1.0.3-beta.1. Ụkpụrụ izugbe dị mfe: onye ọrụ na-akọwapụta ụzọ nke Dockerfile dị na werf config, wee malite iwu ahụ. werf build... ma nke ahụ bụ - werf ga-achịkọta ihe oyiyi ahụ. Ka anyị leba anya n'otu ihe atụ nkịtị.

Ka anyị kwupụta nke na-abịa Dockerfile na mgbọrọgwụ oru ngo:

FROM ubuntu:18.04
RUN echo Building ...

Anyị ga-akpọsa werf.yamlnke na-eji nke a Dockerfile:

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

All! Aka ekpe gbaa ọsọ werf build:

Ị nwere ike iwulite onyonyo Docker na werf site na iji Dockerfile oge niile

Na mgbakwunye, ị nwere ike ikwupụta ihe ndị a werf.yaml iji wuo ọtụtụ onyonyo site na faịlụ Docker dị iche iche n'otu oge:

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

N'ikpeazụ, ọ na-akwado ịfefe paramita ụlọ ọzọ, dị ka --build-arg и --add-host - site na werf config. Nkọwa zuru oke nke nhazi onyonyo Dockerfile dị na ibe akwụkwọ.

Olee otú ọ na-arụ ọrụ?

N'oge usoro iwu ụlọ, cache ọkọlọtọ nke ọkwa mpaghara na Docker na-arụ ọrụ. Agbanyeghị, ihe dị mkpa bụ werf ahụ na-ejikọta nhazi Dockerfile n'ime akụrụngwa ya. Kedu ihe nke a pụtara?

  1. Onyonyo ọ bụla wuru site na Dockerfile nwere otu ọkwa a na-akpọ dockerfile (ị nwere ike ịgụkwu gbasara usoro ndị dị na werf ebe a).
  2. Maka ogbo dockerfile werf na-agbakọ mbinye aka dabere na ọdịnaya nke nhazi Dockerfile. Mgbe nhazi Dockerfile gbanwere, mbinye aka ọkwa na-agbanwe dockerfile na werf jiri nhazi Dockerfile ọhụrụ malite iwughachi ọkwa a. Ọ bụrụ na mbinye aka agbanweghị, werf wepụrụ onyonyo site na cache ( nkọwa ndị ọzọ gbasara ojiji mbinye aka na werf ka akọwara na akụkọ a).
  3. Na-esote, enwere ike ibipụta onyonyo anakọtara na iwu werf publish (ma ọ bụ werf build-and-publish) ma jiri ya maka ibuga Kubernetes. A ga-ehichapụ onyonyo ndị ebipụtara na ndekọ Docker site na iji ngwa nhicha werf ọkọlọtọ, ya bụ. Onyonyo ochie (karịrị ụbọchị N), onyonyo metụtara alaka Git adịghị adị, yana amụma ndị ọzọ ga-ehichapụ ozugbo.

Enwere ike ịchọta nkọwa ndị ọzọ gbasara isi ihe akọwara ebe a na akwụkwọ:

Ihe ndetu na akpachapụ anya

1. Anaghị akwado URL mpụga na ADD

Ugbu a akwadoghị iji URL mpụga na ntuziaka ADD. Werf agaghị ebido wughachi mgbe akụrụngwa dị na URL akọwapụtara gbanwere. Anyị na-eme atụmatụ itinye atụmatụ a n'oge adịghị anya.

2. Ị nweghị ike itinye .git na onyonyo a

N'ikwu okwu n'ozuzu, na-agbakwunye ndekọ .git na onyonyo - omume ọjọọ jọgburu onwe ya na nke a kpatara ya:

  1. ma ọ bụrụ na .git na-anọgide na foto ikpeazụ, nke a megidere ụkpụrụ Ngwa 12 ihe: Ebe ọ bụ na ihe oyiyi ikpeazụ ga-ejikọta ya na otu ntinye aka, ọ gaghị ekwe omume ime git checkout ime aka ike.
  2. .git na-abawanye nha nke ihe oyiyi ahụ (ebe nchekwa ahụ nwere ike ibu ibu n'ihi na a na-agbakwunye nnukwu faịlụ na ya ozugbo wee kpochapụ ya). Ogo osisi-osisi ejikọtara na naanị otu nkwa agaghị adabere na akụkọ ihe mere eme nke Git. N'okwu a, mgbakwunye na mwepụ na-esote .git site na foto ikpeazụ agaghị arụ ọrụ: onyonyo a ka ga-enweta akwa oyi akwa - otu a ka Docker si arụ ọrụ.
  3. Docker nwere ike ibido mwughachi na-enweghị isi, ọ bụrụgodị na a na-arụ otu nkwa ahụ, mana site na osisi ọrụ dị iche iche. Dịka ọmụmaatụ, GitLab na-emepụta akwụkwọ ndekọ aha cloned dị iche iche na /home/gitlab-runner/builds/HASH/[0-N]/yourproject mgbe agbanyere myirịta mgbakọ. Mgbakwunye reassembly ga-abụ n'ihi eziokwu na ndekọ .git dị iche na ụdị cloned dị iche iche nke otu ebe nchekwa, ọ bụrụgodị na e wuru otu nkwa ahụ.

Isi ihe ikpeazụ nwekwara nsonaazụ mgbe ị na-eji werf. Werf chọrọ cache wuru ka ọ nọrọ mgbe ọ na-agba ụfọdụ iwu (dịka. werf deploy). Mgbe iwu ndị a na-agba ọsọ, werf na-agbakọ mbinye aka ọkwa maka onyonyo ndị akọwapụtara na ya werf.yaml, na ha ga-adị na cache mgbakọ - ma ọ bụghị iwu ahụ agaghị enwe ike ịga n'ihu na-arụ ọrụ. Ọ bụrụ na mbinye aka ogbo dabere na ọdịnaya .git, mgbe ahụ, anyị na-enweta cache nke na-adịghị agbanwe agbanwe na faịlụ ndị na-adịghị mkpa, na werf agaghị enwe ike ịgbaghara ụdị nlekọta ahụ (maka nkọwa ndị ọzọ, lee. akwụkwọ).

N'ozuzu na-agbakwunye naanị ụfọdụ faịlụ dị mkpa site na ntuziaka ADD n'ọnọdụ ọ bụla na-abawanye arụmọrụ na ntụkwasị obi nke ederede Dockerfile, ma na-akwalitekwa nkwụsi ike nke cache anakọtara maka nke a Dockerfile, na mgbanwe ndị na-adịghị mkpa na Git.

Nsonaazụ

Ụzọ mbụ anyị si ede onye na-ewu nke anyị maka mkpa ụfọdụ siri ike, eziokwu na kwụ ọtọ: kama iji crutches n'elu ọkọlọtọ Dockerfile, anyị jiri syntax omenala dee ngwọta anyị. Ma nke a nwere uru ya: onye nchịkọta Stapel na-anagide ọrụ ya nke ọma.

Agbanyeghị, na usoro nke ide onye nrụpụta nke anyị, anyị tụfuru nkwado maka Dockerfiles dị adị. Edozila ntụpọ a ugbu a, n'ọdịniihu anyị na-eme atụmatụ ịmepụta nkwado Dockerfile yana onye na-ewu Stapel omenala anyị maka ihe na-ewu nkesa na maka ewu site na iji Kubernetes (ya bụ, na-ewuli ndị na-agba ọsọ n'ime Kubernetes, dị ka a na-eme na kaniko).

Yabụ, ọ bụrụ na ị nwere Dockerfiles ole na ole dina gburugburu… nwaa werf!

PS Ndepụta akwụkwọ na isiokwu

Gụọkwa na blọọgụ anyị: “werf - ngwa anyị maka CI / CD na Kubernetes (nleba anya na akụkọ vidiyo)".

isi: www.habr.com

Tinye a comment