Stiùireadh airson a bhith a 'ruith Buildah taobh a-staigh soitheach

Dè cho math ‘s a tha e a bhith a’ sgaradh ùine ruith an t-soithich gu pàirtean innealan fa leth? Gu sònraichte, an fhìrinn gum faod na h-innealan sin tòiseachadh a bhith air an cur còmhla gus am bi iad a 'dìon a chèile.

Stiùireadh airson a bhith a 'ruith Buildah taobh a-staigh soitheach

Tha mòran dhaoine air an tàladh leis a 'bheachd a bhith a' togail ìomhaighean soitheach OCI taobh a-staigh Kubernetes no siostam coltach ris. Canaidh sinn gu bheil CI / CD againn a bhios an-còmhnaidh a’ togail ìomhaighean, an uairsin rudeigin mar Red Red OpenShift/ Bhiodh Kubernetes glè fheumail a thaobh cothromachadh luchdan togail. Gu ruige o chionn ghoirid, cha tug a’ mhòr-chuid de dhaoine cothrom air soithichean gu socaid Docker agus leig leotha an àithne togail docker a ruith. Sheall sinn o chionn beagan bhliadhnaicheangu bheil seo gu math mì-chinnteach, gu dearbh, tha e eadhon nas miosa na bhith a’ toirt freumh no sudo gun fhacal-faire.

Mar sin tha daoine an-còmhnaidh a’ feuchainn ri Buildah a ruith ann an soitheach. Ann goirid, tha sinn air a chruthachadh eisimpleir mar, nar beachd, tha e nas fheàrr Buildah a ruith taobh a-staigh soitheach, agus na h-ìomhaighean co-fhreagarrach a chuir air adhart cidhe.io/togail. Feuch an tòisich sinn ...

adjustment

Tha na h-ìomhaighean sin air an togail bho Dockerfiles, a lorgar ann an stòr Buildah sa phasgan dealbh togail.
An seo beachdaichidh sinn dreach seasmhach 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

An àite OverlayFS air a chuir an gnìomh aig ìre kernel Linux an aoigh, bidh sinn a’ cleachdadh a ’phrògram taobh a-staigh an t-soithich ath-chòmhdach fiùs, oir an-dràsta chan urrainn dha OverlayFS a chuir suas ma bheir thu ceadan SYS_ADMIN dha tro chomasan Linux. Agus tha sinn airson na soithichean Buildah againn a ruith às aonais sochairean bunaiteach. Tha ath-chòmhdach fiùs gu math luath agus a’ coileanadh nas fheàrr na an draibhear stòraidh VFS. Thoir an aire, nuair a bhios tu a’ ruith soitheach Buildah a’ cleachdadh Fuse, gum feumar an inneal / dev / fuse a thoirt seachad.

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

An uairsin, cruthaichidh sinn eòlaire airson stòran a bharrachd. soitheach/stòradh a’ toirt taic don bhun-bheachd de bhith a’ ceangal stòran ìomhaigh a bharrachd ri leughadh a-mhàin. Mar eisimpleir, faodaidh tu àite stòraidh ath-chòmhdach a chuir air dòigh air aon inneal, agus an uairsin NFS a chleachdadh gus an stòradh seo a chuir suas air inneal eile agus ìomhaighean a chleachdadh bhuaithe gun luchdachadh sìos tro tharraing. Feumaidh sinn an stòradh seo gus an urrainn dhuinn cuid de stòradh ìomhaigh a cheangal bhon òstair mar tomhas-lìonaidh agus a chleachdadh taobh a-staigh an t-soithich.

# 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

Mu dheireadh, bidh sinn a’ cleachdadh caochladair àrainneachd BUILDAH_ISOLATION gus innse don ghobhar Buildah tòiseachadh le aonaranachd chroot gu bunaiteach. Chan eil feum air aonaranachd a bharrachd an seo, leis gu bheil sinn mu thràth ag obair ann an soitheach. Gus an cruthaich Buildah na soithichean aige fhèin a tha air an sgaradh le àite-ainm, tha feum air an t-sochair SYS_ADMIN, a dh’ fheumadh riaghailtean SELinux agus SECCOMP an t-soithich a leigeil ma sgaoil, a bhiodh an-aghaidh ar suidheachadh airson togail bho shoitheach tèarainte.

Ruith Buildah taobh a-staigh soitheach

Leigidh an sgeama ìomhaigh container Buildah a chaidh a dheasbad gu h-àrd dhut atharrachadh gu sùbailte mar a thèid na soithichean sin a chuir air bhog.

Astar an aghaidh sàbhailteachd

Tha tèarainteachd coimpiutair an-còmhnaidh na cho-rèiteachadh eadar astar pròiseas agus an ìre de dhìon a tha timcheall air. Tha an aithris seo fìor cuideachd nuair a thathar a’ cruinneachadh shoithichean, mar sin gu h-ìosal beachdaichidh sinn air roghainnean airson a leithid de cho-rèiteachadh.

Cumaidh an ìomhaigh soitheach a chaidh a dheasbad gu h-àrd a stòradh ann an /var/lib/containers. Mar sin, feumaidh sinn susbaint a chuir a-steach don phasgan seo, agus bheir mar a nì sinn seo buaidh mhòr air astar togail ìomhaighean container.

Beachdaichidh sinn air trì roghainnean.

Roghainn 1. Ma tha feum air tèarainteachd as motha, faodaidh tu am pasgan agad fhèin a chruthachadh airson soithichean / ìomhaigh airson gach soitheach agus a cheangal ris an t-soitheach tro tomhas-lìonaidh. Agus a bharrachd air an sin, cuir an eòlaire co-theacsa anns a’ ghobhar fhèin, sa phasgan / togail:

# 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

Tèarainteachd. Tha an tèarainteachd as àirde aig Buildah a tha a’ ruith ann an leithid de shoitheach: chan eil sochairean freumha a’ toirt seachad le comasan, agus tha a h-uile bacadh SECOMP agus SELinux a’ buntainn ris. Faodar eadhon soitheach mar seo a ruith le aonaranachd User Namespace le bhith a’ cur roghainn mar --uidmap ris 0:100000:10000.

Coileanadh. Ach chan eil an coileanadh an seo ach glè bheag, leis gu bheil ìomhaighean sam bith bho chlàran soithichean air an lethbhreacadh chun aoigh gach uair, agus chan eil tasgadan ag obair bhon fhacal “gun dòigh”. Nuair a chuireas e crìoch air an obair aige, feumaidh an soitheach Buildah an ìomhaigh a chuir chun chlàr agus an susbaint air an òstair a sgrios. An ath thuras a thèid ìomhaigh an t-soithich a thogail, feumar a luchdachadh sìos a-rithist bhon chlàr, leis nach bi dad air fhàgail air an òstair ron àm sin.

Roghainn 2. Ma tha feum agad air coileanadh ìre Docker, faodaidh tu soitheach / stòradh an aoigh a chuir a-steach don ghobhar.

# 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

Tèarainteachd. Is e seo an dòigh as sàbhailte air soithichean a thogail, leis gu bheil e a’ leigeil leis a ’ghobhar an stòradh air an òstair atharrachadh agus dh’ fhaodadh e ìomhaigh droch-rùnach a shleamhnadh gu Podman no CRI-O. A bharrachd air an sin, feumaidh tu dealachadh SELinux a dhì-cheadachadh gus an urrainn dha na pròiseasan ann an soitheach Buildah eadar-obrachadh leis an stòr air an aoigh. Thoir an aire gu bheil an roghainn seo fhathast nas fheàrr na socaid Docker, leis gu bheil an soitheach air a bhacadh leis na feartan tèarainteachd a tha air fhàgail agus chan urrainn dha dìreach soitheach sam bith a thogail agus a ruith air an òstair.

Coileanadh. An seo tha e aig a’ char as àirde, leis gu bheil caching an sàs gu h-iomlan. Ma tha Podman no CRI-O air an ìomhaigh a tha thu ag iarraidh a luchdachadh sìos chun aoigh mu thràth, cha bhith feum air pròiseas Buildah taobh a-staigh an t-soithich a luchdachadh sìos a-rithist, agus bidh e comasach dha togalaichean às deidh sin stèidhichte air an ìomhaigh seo am fear a tha riatanach a thoirt bhon tasgadan .

Roghainn 3. Is e brìgh an dòigh seo grunn ìomhaighean a chur còmhla ann an aon phròiseact le pasgan cumanta airson ìomhaighean container.

# 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

San eisimpleir seo, cha bhith sinn a’ sguabadh às pasgan a’ phròiseict (/ var/lib/project3) eadar ruith, agus mar sin bidh a h-uile togail às deidh sin taobh a-staigh a’ phròiseict a’ gabhail brath air tasgadan.

Tèarainteachd. Rudeigin eadar roghainnean 1 agus 2. Air an aon làimh, chan eil cothrom aig soithichean air susbaint air an òstair agus, mar sin, chan urrainn dhaibh rudeigin dona a shleamhnadh a-steach do stòradh ìomhaigh Podman / CRI-O. Air an làimh eile, taobh a-staigh a phròiseact fhèin, faodaidh soitheach casg a chuir air cruinneachadh shoithichean eile.

Coileanadh. An seo tha e nas miosa na bhith a’ cleachdadh tasgadan co-roinnte aig ìre an aoigh, leis nach urrainn dhut ìomhaighean a chaidh a luchdachadh sìos mu thràth a’ cleachdadh Podman / CRI-O. Ach, aon uair ‘s gu bheil Buildah air an ìomhaigh a luchdachadh sìos, faodar an ìomhaigh sin a chleachdadh ann an togail sam bith eile sa phròiseact.

Stòradh a bharrachd

У soithichean / stòradh tha rud cho fionnar ri stòran a bharrachd (stòran a bharrachd), le taing dha sin, nuair a thòisicheas iad agus a’ togail shoithichean, faodaidh einnseanan soithichean stòran ìomhaighean taobh a-muigh a chleachdadh ann am modh ath-chòmhdach leughaidh a-mhàin. Gu dearbh, faodaidh tu aon stòradh leughaidh a-mhàin no barrachd a chur ris an fhaidhle storage.conf, gus am bi einnsean an t-soithich a’ coimhead airson an ìomhaigh a tha thu ag iarraidh annta nuair a thòisicheas an soitheach. A bharrachd air an sin, luchdaichidh e sìos an ìomhaigh bhon chlàr a-mhàin mura lorg e e ann an gin de na stòran sin. Chan urrainn don einnsean soithich ach sgrìobhadh gu stòradh a ghabhas sgrìobhadh...

Ma sgrolaicheas sinn suas agus coimhead air an Dockerfile a bhios sinn a’ cleachdadh gus an dealbh quay.io/buildah/stable a thogail, tha loidhnichean mar seo ann:

# 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

Air a 'chiad loidhne, bidh sinn ag atharrachadh /etc/containers/storage.conf taobh a-staigh ìomhaigh an t-soithich, ag innse don dràibhear stòraidh "a bharrachd ìomhaighean" a chleachdadh anns a' phasgan /var/lib/shared. Agus anns an ath loidhne, bidh sinn a’ cruthachadh pasgan co-roinnte agus a’ cur dà fhaidhle glasaidh ris gus nach bi mì-ghnàthachadh ann bho shoithichean / stòradh. Gu bunaiteach, tha sinn dìreach a’ cruthachadh stòr ìomhaigh container falamh.

Ma chuireas tu suas soithichean / stòradh ìre os cionn a’ phasgan seo, bidh e comasach dha Buildah na h-ìomhaighean a chleachdadh.

A-nis tillidh sinn gu Roghainn 2 a chaidh a dheasbad gu h-àrd, nuair as urrainn don inneal Buildah leughadh agus sgrìobhadh gu soithichean / stòr air luchd-aoigheachd agus, a rèir sin, tha an coileanadh as àirde aige mar thoradh air tasgadh ìomhaighean aig ìre Podman / CRI-O, ach a’ toirt seachad tèarainteachd aig a ’char as lugha, oir faodaidh e sgrìobhadh gu dìreach ann an stòradh. Agus a-nis cuiridh sinn a-steach stòradh a bharrachd an seo agus gheibh sinn a’ chuid as fheàrr den dà shaoghal.

# 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

Thoir an aire gu bheil /var/lib/containers/stòradh an aoigh air a chuir suas gu /var/lib/air a roinn am broinn an t-soithich ann am modh leughaidh a-mhàin. Uime sin, ag obair ann an container, Buildah urrainn cleachdadh ìomhaighean sam bith a chaidh a luchdachadh a-nuas mar-thà a 'cleachdadh Podman / CRI-O (hello, astar), ach faodaidh iad a-mhàin sgrìobhadh gu a stòradh fhèin (hello, tèarainteachd). Thoir an aire cuideachd gu bheil seo air a dhèanamh gun a bhith a’ cuir às do sgaradh SELinux airson an t-soithich.

Nuadh cudromach

Cha bu chòir dealbhan sam bith a bhith air an sguabadh às an stòr-stòrais ann an suidheachadh sam bith. Rud eile, faodaidh an soitheach Buildah tuiteam.

Agus chan e sin na buannachdan uile.

Chan eil na cothroman airson stòradh a bharrachd cuingealaichte ris an t-suidheachadh gu h-àrd. Mar eisimpleir, faodaidh tu a h-uile ìomhaigh soitheach a chuir ann an stòr lìonra co-roinnte agus cothrom a thoirt dha gu na soithichean Buildah gu lèir. Canaidh sinn gu bheil ceudan de dhealbhan againn a bhios an siostam CI/CD againn a’ cleachdadh gu cunbhalach gus ìomhaighean soithich a thogail. Bidh sinn a’ cuimseachadh na h-ìomhaighean sin gu lèir air aon aoigh stòraidh agus an uairsin, a’ cleachdadh na h-innealan stòraidh lìonra as fheàrr leotha (NFS, Gluster, Ceph, iSCSI, S3 ...), roinn an stòradh seo leis a h-uile nod Buildah no Kubernetes.

A-nis tha e gu leòr an stòradh lìonra seo a chuir a-steach don ghobhar Buildah air /var/lib/shared agus sin agad e - chan fheum soithichean Buildah tuilleadh ìomhaighean a luchdachadh sìos tro tharraing idir. Mar sin, bidh sinn a’ tilgeil a-mach an ìre ro-àireamh-sluaigh agus tha sinn deiseil sa bhad airson na soithichean a sgaoileadh.

Agus gu dearbh, faodar seo a chleachdadh taobh a-staigh siostam beò Kubernetes no bun-structar soithichean gus soithichean a chuir air bhog agus a ruith an àite sam bith gun tarraing ìomhaigh sam bith. A bharrachd air an sin, nuair a gheibh clàr soithichean iarrtas putaidh airson ìomhaigh ùraichte a luchdachadh suas thuige, faodaidh e an ìomhaigh seo a chuir gu fèin-ghluasadach gu stòr lìonra co-roinnte, far a bheil e ri fhaighinn sa bhad leis a h-uile nod.

Uaireannan faodaidh ìomhaighean gleidhidh a bhith mòran gigabytes ann am meud. Tha gnìomhachd stòradh a bharrachd a’ cur às don fheum air a bhith a’ clonadh ìomhaighean mar sin le nodan agus a’ cur air bhog soithichean cha mhòr sa bhad.

A bharrachd air an sin, tha sinn an-dràsta ag obair air feart còmhdach meud ath-chòmhdach ùr a nì soithichean togail eadhon nas luaithe.

co-dhùnadh

Tha e gu math comasach a bhith a’ ruith Buildah taobh a-staigh soitheach ann an àrainneachd Kubernetes/CRI-O, Podman, no eadhon Docker, agus tha e sìmplidh agus tòrr nas sàbhailte na bhith a’ cleachdadh docker.socket. Tha sinn air sùbailteachd obrachadh le ìomhaighean àrdachadh gu mòr, agus a-nis faodaidh tu an ruith ann an diofar dhòighean airson an cothromachadh as fheàrr eadar tèarainteachd agus coileanadh.

Leigidh comas stòraidh a bharrachd dhut luchdachadh sìos ìomhaighean gu na nodan a luathachadh no eadhon cuir às gu tur.

Source: www.habr.com

Cuir beachd ann