E mafai nei ona e fausia ata Docker i werf e faʻaaoga ai se Dockerfile masani

E sili atu le tuai nai lo le leai. Pe faʻafefea foi ona matou faia se mea sese matuia e ala i le leai o se lagolago mo Dockerfiles masani e fausia ai ata talosaga.

E mafai nei ona e fausia ata Docker i werf e faʻaaoga ai se Dockerfile masani

O le a tatou talanoa i ai werf - GitOps aoga e tu'ufa'atasia ma so'o se faiga CI/CD ma tu'uina atu le fa'atonuga o le fa'asologa o le olaga atoa, fa'atagaina:

  • aoina ma lolomi ata,
  • fa'apipi'i talosaga ile Kubernetes,
  • tape ata e leʻi faʻaaogaina e faʻaaoga ai faiga faʻapitoa.


O le filosofia o le poloketi o le aoina mai o meafaigaluega maualalo i totonu o se faiga e tasi e tuʻuina atu ai e inisinia DevOps le puleaina o talosaga. Afai e mafai, e tatau ona faʻaogaina mea faʻaoga (pei o Helm ma Docker). Afai e leai se fofo i se faʻafitauli, e mafai ona tatou fatuina ma lagolagoina mea uma e manaʻomia mo lenei mea.

Talaaga: lau lava aoina ata

O le mea lea na tupu i le aoina o ata i werf: o le Dockerfile masani e le lava mo i matou. Afai e te vaʻavaʻai vave i le talaʻaga o le poloketi, o lenei faʻafitauli na faʻaalia i le uluaʻi lomiga o werf (ona lauiloa o le dapp).

A o faia se meafaigaluega mo le fausiaina o tusi talosaga i ata Docker, na vave ona matou iloa e le talafeagai le Dockerfile mo i matou mo nisi o galuega patino:

  1. Le manaʻoga e fausia ni 'upega tafaʻilagi masani e tusa ai ma le faʻataʻitaʻiga masani:
    • fa'apipi'i fa'alagolago i le polokalama atoa,
    • fa'apipi'i se fusi o faletusi fa'alagolago i talosaga,
    • aoina aseta,
    • ma sili ona taua, faʻafouina le code i le ata vave ma lelei.
  2. Pe a faia suiga i faila faila, e tatau i le faufale ona vave faia se laulau fou e ala i le faʻaogaina o se patch i faila ua suia.
  3. Afai ua suia nisi faila, ona tatau lea ona toe fausia le tulaga faʻalagolago.

I aso nei, e tele isi mea e mafai ona maua e le tatou tagata aoina, ae o uluaʻi manaʻoga ma faʻamalosi.

I se tulaga lautele, e aunoa ma le mafaufau faalua, sa matou faʻaauupegaina i matou lava i le gagana polokalame matou te faʻaaogaina (silasila i lalo) ma taia le auala e faatino lava DSL! E tusa ai ma faʻamoemoega, na faʻamoemoe e faʻamatala le faʻagasologa o le faʻapotopotoga i laasaga ma faʻamautinoa le faʻalagolago o nei laasaga i faila. Ma faaatoatoa ai lava tagata aoina, lea na liliu ai le DSL i le sini mulimuli - o se ata faʻapipiʻi. I le taimi muamua o le DSL sa i Ruby, ae pei suiga i Golang - o le config a le matou aoina na amata ona faamatalaina i se faila YAML.

E mafai nei ona e fausia ata Docker i werf e faʻaaoga ai se Dockerfile masani
Faiga tuai mo dapp i Ruby

E mafai nei ona e fausia ata Docker i werf e faʻaaoga ai se Dockerfile masani
Fa'atonuga nei mo werf i luga ole YAML

O le faiga o le aoina na suia foi i le taimi. I le taimi muamua, na o le fatuina o se Dockerfile le tumau i luga o le lele mai la matou faʻatulagaga, ona amata lea ona matou faʻataʻitaʻiina faʻatonuga faʻapotopotoga i pusa le tumau ma tuuto.

NB: I le taimi nei, o le matou tagata aoina, lea e galue ma lana lava config (i le YAML) ma ua taʻua o le Stapel collector, ua uma ona atiaʻe e avea ma se meafaigaluega malosi tele. O lona fa'amatalaga au'ili'ili e tatau ona tu'u ese'ese tala, ma fa'amatalaga fa'avae e mafai ona maua i totonu fa'amaumauga.

Fa'ailoa le fa'afitauli

Ae na matou iloa, ae leʻi vave, na matou faia se mea sese e tasi: matou te leʻi faʻaopoopoina le tomai fausia ata e ala ile Dockerfile masani ma tuʻufaʻatasia i latou i totonu o le faʻaogaina o le faʻaogaina o le faʻaogaina o mea faʻaoga (e pei o le aoina o ata, faʻapipiʻi ma faʻamama). E faʻapefea ona mafai ona faia se meafaigaluega mo le faʻapipiʻiina i Kubernetes ae le faʻaaogaina le lagolago a Dockerfile, i.e. auala masani e fa'amatala ai ata mo le tele o galuega faatino?..

Nai lo le taliina o lenei fesili, matou te ofoina atu se fofo. Ae faʻapefea pe afai ua i ai sau Dockerfile (poʻo se seti o Dockerfiles) ma e manaʻo e faʻaoga werf?

NB: I le ala, aisea e te manaʻo ai e faʻaaoga werf? O mea taua e o'o mai i mea nei:

  • ta'amilosaga pulega fa'aoga atoa e aofia ai le fa'amamaina o ata;
  • le mafai ona pulea le faʻapotopotoga o ni ata i le taimi e tasi mai se faʻaoga e tasi;
  • Fa'aleleia le fa'agaioiga o le fa'atinoina mo siata e fetaui ma Helm.

E mafai ona maua se lisi atoa o latou i itulau o galuega faatino.

O lea la, pe ana fai muamua semanu matou te ofoina atu e toe tusi le Dockerfile i la matou config, o lea o le a matou fai atu ma le fiafia: "Tuu werf e fausia au Dockerfiles!"

Faʻafefea ona faʻaaoga?

O le faʻatinoga atoa o lenei faʻaaliga na faʻaalia i le faʻasalalauga werf v1.0.3-beta.1. O le mataupu faavae lautele e faigofie: e faʻamaonia e le tagata faʻaoga le ala i se Dockerfile o loʻo i ai i le werf config, ona faʻatautaia lea o le poloaiga werf build... ma o le mea lena - werf o le a faʻapotopotoina le ata. Seʻi o tatou vaavaai i se faataʻitaʻiga puupuu.

Sei faailoa atu le isi Dockerfile i le autu o le poloketi:

FROM ubuntu:18.04
RUN echo Building ...

Ma o le a matou faasilasila atu werf.yamllea e fa'aaogaina lenei Dockerfile:

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

Uma! Taumatau tamoʻe werf build:

E mafai nei ona e fausia ata Docker i werf e faʻaaoga ai se Dockerfile masani

E le gata i lea, e mafai ona e faʻaalia mea nei werf.yaml e fausia ni ata mai Dockerfiles eseese i le taimi e tasi:

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

Ma le mea mulimuli, e lagolagoina foi le pasia o faʻasologa faʻaopoopo faufale, pei ole --build-arg и --add-host - e ala i le werf config. O loʻo maua se faʻamatalaga atoa o le faʻatulagaina o ata Dockerfile i itulau fa'amaumauga.

E faapefea ona galulue?

I le taimi o le fausiaina, o le faʻamaufaʻailoga masani o laulau faʻapitonuʻu i Docker galuega. Ae ui i lea, o le mea e taua o le werf foi tu'ufa'atasia le fa'atulagaina o Dockerfile i totonu o ana atina'e. O le a le uiga o lenei mea?

  1. O ata taʻitasi e fausia mai se Dockerfile e aofia ai le tasi laasaga e taʻua dockerfile (e mafai ona e faitau atili e uiga i vaega o loʻo i totonu werf iinei).
  2. Mo tulaga dockerfile Werf e faʻatatau se saini e faʻalagolago i mea o loʻo i totonu o le Dockerfile configuration. A suia le faʻatulagaina o Dockerfile, e suia le saini o le laasaga dockerfile ma ua amatalia e werf se toe fausia o lenei laasaga ma se Dockerfile config fou. Afai e le suia le saini, ona ave lea e werf le ata mai le cache (sili atu faʻamatalaga e uiga i le faʻaogaina o saini i le werf na faʻamatalaina i totonu lenei lipoti).
  3. O le isi, o ata na aoina e mafai ona lolomiina ma le poloaiga werf publish (po o werf build-and-publish) ma faʻaaoga mo le faʻapipiʻiina i Kubernetes. O ata faʻasalalau i le Docker Registry o le a faʻamamaina e faʻaaoga ai meafaigaluega faʻamamaina masani, i.e. O ata tuai (matua nai lo N aso), ata e fesoʻotaʻi ma lala Git e le o iai, ma isi faiga faʻavae o le a otometi lava ona faʻamamaina.

O faʻamatalaga atili e uiga i manatu o loʻo faʻamatalaina iinei e mafai ona maua i totonu o faʻamaumauga:

Fa'amatalaga ma puipuiga

1. E le lagolagoina le URL i fafo ile ADD

I le taimi nei e le o lagolagoina le faʻaogaina o se URL i fafo i se faʻatonuga ADD. Werf o le a le amataina se toe fausia pe a suia le punaoa i le URL faʻamaonia. Matou te fuafua e fa'aopoopo lenei vaega i se taimi lata mai.

2. E le mafai ona e fa'aopoopo le .git ile ata

I se tulaga lautele, faʻaopoopoina se faʻamaumauga .git i le ata - o se faiga leaga leaga ma o le mea lea:

  1. ana .git tumau pea i le ata mulimuli, e solia ai mataupu faavae 12 vaega app: Talu ai o le ata mulimuli e tatau ona fesoʻotaʻi i se tautinoga e tasi, e le tatau ona mafai ona fai git checkout fai fua.
  2. .git faʻateleina le tele o le ata (o le fale teu oloa e mafai ona tele ona o le mea moni o faila tetele na faʻapipiʻi muamua i ai ona tape ai lea). Ole lapo'a ole la'au galue e fa'atasi ma se ta'utinoga fa'apitoa e le fa'alagolago ile tala fa'asolopito o gaioiga ile Git. I lenei tulaga, o le faʻaopoopoga ma le aveeseina mulimuli ane .git mai le ata mulimuli o le a le aoga: o le ata o le a maua pea se isi vaega - o le auala lea e galue ai Docker.
  3. E mafai e Docker ona amataina se toe fausia e le manaʻomia, e tusa lava pe o loʻo fausia le tuʻufaʻatasiga tutusa, ae mai i laʻau faigaluega eseese. Mo se faʻataʻitaʻiga, ua fatuina e GitLab ni lisi faʻapipiʻi eseese i totonu /home/gitlab-runner/builds/HASH/[0-N]/yourproject pe a mafai le fa'apotopotoga tutusa. O le toe fa'aopoopo fa'aopoopo o le a mafua ona o le fa'atonuga .git e 'ese'ese i fa'aliliuga 'ese'ese o le fa'aputuga tutusa, tusa lava pe fa'atūina le fa'atonuga tutusa.

O le vaega mulimuli e iai foʻi aʻafiaga pe a faʻaaogaina werf. Werf e manaʻomia le faʻaogaina o le cache e iai pe a faʻatinoina nisi o faʻatonuga (eg. werf deploy). A fa'agasolo nei fa'atonuga, e fa'atatau e werf fa'ailoga saini mo ata o lo'o fa'amaonia i totonu werf.yaml, ma e tatau ona i ai i totonu o le faʻapotopotoga faʻapipiʻi - a leai o le a le mafai ona faʻaauau le galue o le poloaiga. Afai o le saini tulaga e faalagolago i le anotusi .git, ona matou maua ai lea o se faʻaoga e le mautu i suiga i faila le talafeagai, ma o le a le mafai e le werf ona faʻamagaloina sea faʻalavelave (mo nisi faʻamatalaga, vaʻai fa'amaumauga).

I se tulaga lautele fa'aopoopo na'o faila e mana'omia e ala i faatonuga ADD i soʻo se tulaga faʻateleina le lelei ma le faʻamaoni o le tusitusiga Dockerfile, ma faʻaleleia atili ai le mautu o le cache na aoina mo lenei Dockerfile, i suiga le taua i Git.

Le iʻuga

O la matou auala muamua i le tusiaina o la matou lava faufale mo manaoga faapitoa sa faigata, faʻamaoni ma tuusaʻo: nai lo le faʻaogaina o tootoo i luga o le Dockerfile masani, matou te tusia la matou fofo ma faʻasologa masani. Ma sa i ai ona tulaga lelei: o le Stapel collector e faʻafetaui lelei lana galuega.

Ae ui i lea, i le faagasologa o le tusiaina o le matou lava faufale, na matou leiloa le lagolago mo Dockerfiles o iai. O lenei faaletonu ua uma ona faʻaleleia, ma i le lumanaʻi matou te fuafua e atiaʻe le Dockerfile lagolago faʻatasi ai ma le matou faufale Stapel masani mo faʻasalalauga tufatufaina ma mo le faʻapotopotoga e faʻaaoga ai Kubernetes (e pei o le faʻapotopotoga i tagata tamoʻe i totonu o Kubernetes, e pei ona faia i le kaniko).

O lea la, afai e faʻafuaseʻi ona i ai ni nai Dockerfiles o loʻo taoto ... taumafai werf!

PS Lisi o fa'amaumauga ile autu

Faitau foi i la matou blog: "werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)".

puna: www.habr.com

Faaopoopo i ai se faamatalaga