Moltaí chun Buildah a rith taobh istigh de choimeádán

Cad é an áilleacht a bhaineann le ham rite an choimeádáin a dhíchúpláil ina chomhpháirteanna uirlisí ar leith? Go háirithe, is féidir tús a chur leis na huirlisí seo a chomhcheangal ionas go gcosnaíonn siad a chéile.

Moltaí chun Buildah a rith taobh istigh de choimeádán

Mealltar go leor daoine leis an smaoineamh íomhánna OCI coimeádán a thógáil laistigh Kubernetes nó córas comhchosúil. Ligean le rá go bhfuil CI/CD againn a bhailíonn íomhánna de shíor, ansin rud éigin mar Red Hat OpenShift/Bheadh ​​Kubernetes an-úsáideach i dtéarmaí cothromú ualaigh le linn tógála. Go dtí le déanaí, níor thug formhór na ndaoine ach rochtain ar shoicéad Docker do choimeádáin agus thug siad cead dóibh an t-ordú tógála docker a rith. Roinnt blianta ó shin léirigh muidgo bhfuil sé seo an-neamhchinnteach, i ndáiríre, tá sé níos measa fós ná fréimhe nó sudo gan phasfhocal a thabhairt.

Sin an fáth go ndéanann daoine iarracht i gcónaí Buildah a rith i gcoimeádán. I mbeagán focal, chruthaigh muid mar shampla conas, inár dtuairim, is fearr Buildah a reáchtáil taobh istigh de choimeádán, agus na híomhánna comhfhreagracha a phostáil ar ché.io/tógáil. Ar aghaidh linn...

coigeartú

Tógtar na híomhánna seo ó Dockerfiles, atá le fáil i stór Buildah san fhillteán íomhá a thógáil.
Anseo beimid ag smaoineamh leagan cobhsaí de Dockerfile.

# stable/Dockerfile
#
# Build a Buildah container image from the latest
# stable version of Buildah on the Fedoras Updates System.
# https://bodhi.fedoraproject.org/updates/?search=buildah
# This image can be used to create a secured container
# that runs safely with privileges within the container.
#
FROM fedora:latest

# Don't include container-selinux and remove
# directories used by dnf that are just taking
# up space.
RUN yum -y install buildah fuse-overlayfs --exclude container-selinux; rm -rf /var/cache /var/log/dnf* /var/log/yum.*

# Adjust storage.conf to enable Fuse storage.
RUN sed -i -e 's|^#mount_program|mount_program|g' -e '/additionalimage.*/a "/var/lib/shared",' /etc/containers/storage.conf

In ionad OverlayFS, curtha i bhfeidhm ag an leibhéal eithne Linux óstach, úsáidimid an clár taobh istigh den choimeádán fiús-forleagan, mar ní féidir le OverlayFS a shuiteáil ach amháin má thugann tú ceadanna SYS_ADMIN dó ag baint úsáide as cumais Linux. Agus ba mhaith linn ár gcoimeádáin Buildah a reáchtáil gan aon pribhléidí fréamhacha. Oibríonn forleagan fiús sách tapa agus tá feidhmíocht níos fearr aige ná an tiománaí stórála VFS. Tabhair faoi deara, le do thoil, agus coimeádán Buildah á rith a úsáideann Fuse, caithfidh tú an gléas /dev/fuse a sholáthar.

podman run --device /dev/fuse quay.io/buildahctr ...
RUN mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock

Ansin cruthaímid eolaire le haghaidh stórála breise. Coimeádán/stóráil tacaíonn sé leis an gcoincheap maidir le stórais bhreise íomhá inléite amháin a nascadh. Mar shampla, is féidir leat limistéar stórála forleagan a chumrú ar mheaisín amháin, agus ansin NFS a úsáid chun an stóras seo a shuiteáil ar mheaisín eile agus íomhánna a úsáid uaidh gan iad a íoslódáil trí tharraingt. Ní mór dúinn an stóráil seo chun a bheith in ann roinnt stórála íomhá a nascadh ón ósta mar thoirt agus é a úsáid taobh istigh den choimeádán.

# Set up environment variables to note that this is
# not starting with user namespace and default to
# isolate the filesystem with chroot.
ENV _BUILDAH_STARTED_IN_USERNS="" BUILDAH_ISOLATION=chroot

Ar deireadh, trí úsáid a bhaint as an athróg timpeallachta BUILDAH_ISOLATION, táimid ag rá leis an gcoimeádán Buildah rith le leithlisiú chroot de réir réamhshocraithe. Níl gá le insliú breise anseo, ós rud é go bhfuil muid ag obair i gcoimeádán cheana féin. Ionas gur féidir le Buildah a choimeádáin ainmspáis féin a chruthú, tá pribhléid SYS_ADMIN ag teastáil, rud a d’éileodh rialacha SELinux agus SECCOMP an choimeádáin a mhaolú, rud atá contrártha lenár rogha féin tógáil ó choimeádán slán.

Rith Buildah taobh istigh de choimeádán

Ligeann an léaráid íomhá coimeádán Buildah a pléadh thuas duit na modhanna chun coimeádáin den sórt sin a sheoladh a athrú go solúbtha.

Luas i gcoinne sábháilteachta

Is comhréiteach é slándáil ríomhaireachta i gcónaí idir luas an phróisis agus cé mhéad cosanta atá fillte timpeall air. Tá an ráiteas seo fíor freisin agus coimeádáin á gcur le chéile, mar sin thíos beimid ag smaoineamh ar roghanna maidir le comhréiteach den sórt sin.

Coinneoidh an íomhá coimeádán a pléadh thuas a stóráil i /var/lib/containers. Mar sin, ní mór dúinn an t-ábhar a chur isteach sa bhfillteán seo, agus beidh tionchar mór ag an gcaoi a ndéanaimid é seo ar luas tógála íomhánna coimeádáin.

Déanaimis machnamh ar thrí rogha.

Rogha 1. Má tá an tslándáil uasta ag teastáil, is féidir leat d'fhillteán féin a chruthú le haghaidh coimeádán/íomhá do gach coimeádán agus é a nascadh leis an gcoimeádán trí ghléas toirte. Agus ina theannta sin, cuir an t-eolaire comhthéacs sa choimeádán féin, san fhillteán / build:

# mkdir /var/lib/containers1
# podman run -v ./build:/build:z -v /var/lib/containers1:/var/lib/containers:Z quay.io/buildah/stable
buildah  -t image1 bud /build
# podman run -v /var/lib/containers1:/var/lib/containers:Z quay.io/buildah/stable buildah  push  image1 registry.company.com/myuser
# rm -rf /var/lib/containers1

Slándáil. Tá slándáil uasta ag Buildah ag rith i gcoimeádán den sórt sin: ní thugtar aon fhréamhphribhléid dó trí úsáid a bhaint as cumais, agus baineann gach srian SECOMP agus SELinux leis. 0: 100000.

Feidhmíocht. Ach tá an fheidhmíocht anseo íosta, ós rud é go ndéantar aon íomhánna ó chlárlanna coimeádáin a chóipeáil chuig an ósta gach uair, agus ní oibríonn caching ar chor ar bith. Agus a chuid oibre críochnaithe, ní mór don choimeádán Buildah an íomhá a sheoladh chuig an gclárlann agus an t-ábhar ar an óstach a scriosadh. An chéad uair eile a thógfar an íomhá coimeádán, beidh sé le híoslódáil ón gclárlann arís, ós rud é faoin am sin ní bheidh aon rud fágtha ar an ósta.

Rogha 2. Má theastaíonn feidhmíocht leibhéal Docker uait, is féidir leat an coimeádán óstach / stóras a fheistiú go díreach isteach sa choimeádán.

# podman run -v ./build:/build:z -v /var/lib/containers:/var/lib/containers --security-opt label:disabled quay.io/buildah/stable buildah  -t image2 bud /build
# podman run -v /var/lib/containers:/var/lib/containers --security-opt label:disabled  quay.io/buildah/stable buildah push image2 registry.company.com/myuser

Slándáil. Is é seo an bealach is lú slán le coimeádáin a thógáil toisc go gceadaíonn sé don choimeádán an stóráil ar an ósta a mhodhnú agus d’fhéadfadh sé íomhá mailíseach a thabhairt do Podman nó CRI-O. Ina theannta sin, beidh ort scaradh SELinux a dhíchumasú ionas gur féidir le próisis i gcoimeádán Buildah idirghníomhú leis an stóráil ar an óstach. Tabhair faoi deara go bhfuil an rogha seo níos fearr fós ná soicéad Docker toisc go bhfuil an coimeádán glasáilte síos ag na gnéithe slándála atá fágtha agus ní féidir leis coimeádán a rith ar an ósta.

Feidhmíocht. Anseo tá sé uasta, ós rud é go n-úsáidtear caching go hiomlán. Má tá Podman nó CRI-O tar éis an íomhá riachtanach a íoslódáil chuig an ósta cheana féin, ní bheidh ar an bpróiseas Buildah taobh istigh den choimeádán í a íoslódáil arís, agus beidh tógálaithe ina dhiaidh sin bunaithe ar an íomhá seo in ann a bhfuil de dhíth orthu a bhaint as an taisce. .

Rogha 3. Is é croílár an mhodha seo ná roinnt íomhánna a chomhcheangal i dtionscadal amháin le fillteán coitianta le haghaidh íomhánna coimeádáin.

# mkdir /var/lib/project3
# podman run --security-opt label_level=s0:C100, C200 -v ./build:/build:z 
-v /var/lib/project3:/var/lib/containers:Z quay.io/buildah/stable buildah  -t image3 bud /build
# podman run --security-opt label_level=s0:C100, C200 
-v /var/lib/project3:/var/lib/containers quay.io/buildah/stable buildah push image3  registry.company.com/myuser

Sa sampla seo, ní scriosaimid an fillteán tionscadail (/var/lib/project3) idir ritheanna, agus mar sin baineann gach tógáil ina dhiaidh sin laistigh den tionscadal leas as taisceadh.

Slándáil. Rud éigin idir roghanna 1 agus 2. Ar thaobh amháin, níl rochtain ag coimeádáin ar ábhar ar an óstaigh agus, dá réir sin, ní féidir leo rud éigin dona a shleamhnú isteach i stóras íomhá Podman/CRI-O. Ar an láimh eile, mar chuid dá dhearadh, is féidir le coimeádán cur isteach ar thionól coimeádáin eile.

Feidhmíocht. Anseo tá sé níos measa ná nuair a úsáideann tú taisce roinnte ag an leibhéal óstach, toisc nach féidir leat íomhánna a íoslódáladh cheana féin a úsáid ag baint úsáide as Podman/CRI-O. Nuair a íoslódálann Buildah an íomhá, áfach, is féidir an íomhá a úsáid in aon tógáil ina dhiaidh sin laistigh den tionscadal.

Stóráil bhreise

У coimeádáin/stóráil Tá a leithéid de rud iontach ann le siopaí breise (siopaí breise), a bhuíochas sin agus iad ag seoladh agus ag tógáil coimeádáin, is féidir le hinnill coimeádáin stórais íomhá seachtracha a úsáid i mód forleagan inléite amháin. Go bunúsach, is féidir leat stóras inléite amháin nó níos mó a chur leis an gcomhad storage.conf ionas go bhféachfaidh inneall an choimeádáin an íomhá atá ag teastáil iontu nuair a thosaíonn tú ar an gcoimeádán. Ina theannta sin, ní dhéanfaidh sé an íomhá a íoslódáil ón gclárlann ach amháin mura bhfaighidh sé é in aon cheann de na stórais sin. Ní bheidh inneall an choimeádáin in ann scríobh ach chuig stóras inscríofa...

Má scrollaíonn tú suas agus breathnú ar an Dockerfile a úsáidimid chun an íomhá a thógáil quay.io/buildah/stable, tá línte mar seo:

# Adjust storage.conf to enable Fuse storage.
RUN sed -i -e 's|^#mount_program|mount_program|g' -e '/additionalimage.*/a "/var/lib/shared",' /etc/containers/storage.conf
RUN mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock

Sa chéad líne, modhnaimid /etc/containers/storage.conf taobh istigh den íomhá coimeádán, ag insint don tiománaí stórála “siopaí íomhá breise” a úsáid san fhillteán /var/lib/shared. Agus sa chéad líne eile cruthaímid fillteán roinnte agus cuirimid cúpla comhad glasála leis ionas nach mbeidh aon mhí-úsáid as coimeádáin / stórála. Go bunúsach, nílimid ach ag cruthú stór íomhá coimeádán folamh.

Má fheistiú tú coimeádáin/stóráil ag leibhéal níos airde ná an fillteán seo, beidh Buildah in ann úsáid a bhaint as na híomhánna.

Fillfimid anois ar Rogha 2 a pléadh thuas, nuair is féidir leis an gcoimeádán Buildah léamh agus scríobh chuig coimeádáin/stóráil ar óstaigh agus, dá réir sin, go bhfuil an fheidhmíocht uasta aige mar gheall ar thaisceadh íomhánna ag leibhéal Podman/CRI-O, ach soláthraíonn sé íosmhéid slándála ó shin. is féidir é a scríobh go díreach chuig stóráil. Anois cuirimis stóráil bhreise anseo agus an chuid is fearr den dá shaol a fháil.

# mkdir /var/lib/containers4
# podman run -v ./build:/build:z -v /var/lib/containers/storage:/var/lib/shared:ro -v  /var/lib/containers4:/var/lib/containers:Z  quay.io/buildah/stable 
 buildah  -t image4 bud /build
# podman run -v /var/lib/containers/storage:/var/lib/shared:ro  
-v >/var/lib/containers4:/var/lib/containers:Z quay.io/buildah/stable buildah push image4  registry.company.com/myuser
# rm -rf /var/lib/continers4

Tabhair faoi deara go bhfuil /var/lib/coimeádáin/stóráil an óstaigh suite go /var/lib/roinnte taobh istigh den choimeádán i mód inléite amháin. Mar sin, agus é ag obair i gcoimeádán, is féidir le Buildah aon íomhánna a íoslódáladh roimhe seo a úsáid ag baint úsáide as Podman/CRI-O (hello, luas), ach ní féidir leis ach scríobh chuig a stór féin (hello, slándáil). Tabhair faoi deara freisin go ndéantar é seo gan scaradh SELinux a dhíchumasú don choimeádán.

Nuance tábhachtach

Níor cheart duit ar chúinse ar bith aon íomhánna a scriosadh as an stór bunúsach. Seachas sin, d'fhéadfadh an coimeádán Buildah tuairteála.

Agus ní buntáistí iad seo go léir

Níl féidearthachtaí stórála breise teoranta don chás thuas. Mar shampla, is féidir leat gach íomhá coimeádán a chur ar stóras líonra roinnte agus rochtain a thabhairt dó ar gach coimeádán Buildah. Ligean le rá go bhfuil na céadta íomhánna againn a úsáideann ár gcóras CI/CD go rialta chun íomhánna coimeádáin a thógáil. Dírímid na híomhánna seo go léir ar óstach stórála amháin agus ansin, ag baint úsáide as na huirlisí stórála líonra is fearr (NFS, Gluster, Ceph, ISCSI, S3 ...), osclaíonn muid rochtain ghinearálta ar an stóráil seo do gach nód Buildah nó Kubernetes.

Anois is leor an stóras líonra seo a chur isteach sa choimeádán Buildah ar /var/lib/shared agus sin é - ní gá do choimeádáin Buildah íomhánna a íoslódáil trí tharraingt a thuilleadh. Mar sin, caithfimid an chéim réamhdhaonra agus táimid réidh láithreach chun na coimeádáin a rolladh amach.

Agus ar ndóigh, is féidir é seo a úsáid laistigh de chóras beo Kubernetes nó bonneagar coimeádán chun coimeádáin a sheoladh agus a reáchtáil in áit ar bith gan aon tarraingt a íoslódáil íomhánna. Ina theannta sin, is féidir leis an gclár coimeádán, a fhaigheann brú-iarratas chun íomhá nuashonraithe a uaslódáil chuige, an íomhá seo a sheoladh go huathoibríoch chuig stóras líonra comhroinnte, áit a mbeidh sé ar fáil láithreach do gach nóid.

Uaireanta is féidir le híomhánna coimeádán go leor ghigibheart a bhaint amach i méid. Ligeann feidhmiúlacht stórála breise duit íomhánna den sórt sin a chlónáil thar nóid a sheachaint agus déanann coimeádáin seolta beagnach meandarach.

Ina theannta sin, táimid ag obair faoi láthair ar ghné nua ar a dtugtar gléasanna toirte forleagan, rud a fhágfaidh go mbeidh coimeádáin tógála níos tapúla fós.

Conclúid

Tá sé indéanta, simplí, agus i bhfad níos sláine a bheith ag rith Buildah taobh istigh de choimeádán i Kubernetes/CRI-O, Podman, nó fiú Docker ná docker.socket a úsáid. Táimid tar éis cur go mór leis an tsolúbthacht a bhaineann le bheith ag obair le híomhánna, ionas gur féidir leat iad a rith ar bhealaí éagsúla chun an chothromaíocht idir slándáil agus feidhmíocht a bharrfheabhsú.

Ligeann feidhmiúlacht stórála breise duit íoslódáil íomhánna chuig nóid a luasú nó fiú deireadh a chur leo go hiomlán.

Foinse: will.com

Add a comment