Fautuaga mo le fa'aogaina o le Buildah i totonu o se koneteina

O le a le matagofie o le fa'amavaeina o le koneteina taimi ta'avale i vaega eseese meafaigaluega? Aemaise lava, o nei meafaigaluega e mafai ona amata tuʻufaʻatasia ina ia puipuia e le tasi le isi.

Fautuaga mo le fa'aogaina o le Buildah i totonu o se koneteina

E toʻatele tagata e tosina atu i le manatu o le fausiaina o ata o le OCI i totonu Kubernetes po o faiga faapena. Fa'apea o lo'o i ai sau CI/CD e aoina pea ata, ona fa'apea lea RedHat OpenShift/ Kubernetes o le a aoga tele i tulaga o le paleni o uta i le taimi o le fausiaina. Seia oʻo mai talu ai nei, o le toʻatele o tagata na tuʻuina atu pusa avanoa i se Docker socket ma faʻatagaina i latou e faʻatautaia le faʻatonuga o le fausiaina. I nai tausaga ua mavae na matou faʻaalia aio lenei mea e matua le saogalemu, o le mea moni, e sili atu le leaga nai lo le tuʻuina atu o aʻa e leai se faʻamatalaga poʻo sudo.

O le mea lea e taumafai ai tagata e fa'asolo Buildah i totonu o se atigipusa. I se faapuupuuga, na matou faia faataitaiga e fa'afefea, i lo matou manatu, e sili ona lelei le ta'avale Buildah i totonu o se atigipusa, ma fa'apipi'i ata fa'atatau i luga quay.io/buildah. Tatou amata...

tonu

O nei ata e fausia mai Dockerfiles, lea e mafai ona maua i le faleteuoloa Buildah i totonu o le pusa fausia ata.
O iinei o le a tatou iloiloina tulaga mautu o 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

Nai lo le OverlayFS, faʻatinoina i le Linux kernel level, matou te faʻaogaina le polokalame i totonu o le pusa fa'afuse fuse, aua o le taimi nei e mafai ona fa'ae'e le OverlayFS pe afai e te tu'uina atu i ai SYS_ADMIN fa'atagaga e fa'aaoga ai le mafai Linux. Ma matou te mananaʻo e faʻatautaia a matou koneteina Buildah e aunoa ma ni faʻamanuiaga aʻa. Fuse-overlay e galue vave ma e sili atu le faʻatinoga nai lo le avetaʻavale teuina VFS. Fa'amolemole maitau pe a fa'agaioi se atigipusa Buildah e fa'aoga Fuse, e tatau ona e tu'uina atu le masini /dev/fuse.

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

Ona sosoo ai lea ma le faia o se lisi mo le teuina faaopoopo. Containe/teuga lagolagoina le manatu o le fa'afeso'ota'i fa'aopoopo na'o le faitau fa'atau ata. Mo se faʻataʻitaʻiga, e mafai ona e faʻapipiʻi se nofoaga e teu ai mea i luga o le masini e tasi, ona faʻaoga lea o le NFS e faʻapipiʻi ai lenei teuina i luga o se isi masini ma faʻaoga ata mai ai e aunoa ma le siiina mai e ala i le toso. Matou te manaʻomia lenei mea e teu ai ina ia mafai ai ona faʻafesoʻotaʻi nisi faʻamaumauga o ata mai le talimalo o se voluma ma faʻaoga i totonu o le pusa.

# 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

Ma le mea mulimuli, e ala i le faʻaaogaina o le BUILDAH_ISOLATION environment variable, matou te taʻu atu i le Buildah container e tamoe ma le vavaeeseina o le chroot e ala i le faaletonu. E le manaʻomia se faʻamalosaga faaopoopo iinei, talu ai o loʻo matou galulue i totonu o se pusa. Ina ia mafai e Buildah ona fai ana lava koneteina vaelua-vaega, e mana'omia le avanoa SYS_ADMIN, lea e mana'omia ai le fa'amalieina o tulafono SELinux ma SECCOMP a le koneteina, lea e fa'afeagai ma lo tatou mana'o e fau mai se pusa malu.

Tafe le Buildah i totonu o se koneteina

O le ata Buildah container image o lo'o talanoaina i luga e mafai ai ona e fetu'una'i suiga auala e fa'alauiloa ai ia koneteina.

Saosaoa ma le saogalemu

O le saogalemu o komepiuta e masani lava o se fetuunaiga i le va o le saoasaoa o le faagasologa ma le tele o le puipuiga o loʻo afifi ai. E moni foi lenei faʻamatalaga pe a faʻapipiʻi pusa, o lea i lalo ifo o le a tatou iloiloina filifiliga mo sea fetuunaiga.

O le atigipusa ata o loʻo talanoaina i luga o le a teuina lona teuina i /var/lib/containers. O le mea lea, e tatau ona matou faʻapipiʻi mea i totonu o lenei faila, ma pe faʻafefea ona matou faia o le a matua aʻafia ai le saoasaoa o le fausiaina o ata atigipusa.

Seʻi o tatou iloiloina ni filifiliga se tolu.

1 filifiliga. Afai e manaʻomia le puipuiga sili, ona mafai lea ona e fatuina lau lava faila mo pusa / ata ma faʻafesoʻotaʻi i le koneteina e ala i le voluma-mount. E le gata i lea, tuʻu le faʻasalalauga faʻasalalauga i totonu o le koneteina lava ia, i totonu o le /build folder:

# 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

Puipuiga. O le fausiaina o loʻo taʻavale i totonu o se atigipusa faʻapea e iai le puipuiga sili: e le tuʻuina atu i ai soʻo se aʻa avanoa e faʻaaoga ai gafatia, ma faʻaoga uma tapulaʻa SECOMP ma SELinux i ai. 0:100000.

Faatinoga. Ae o le faʻatinoga iinei e laʻititi, talu ai o soʻo se ata mai faʻamaumauga o pusa e kopiina i le talimalo i taimi uma, ma e le aoga le caching. A maeʻa lana galuega, e tatau i le Buildah container ona tuʻuina atu le ata i le resitala ma faʻaumatia mea i luga o le talimalo. O le isi taimi e fausia ai le ata atigipusa, e tatau ona toe siiina mai le resitala, talu ai o le taimi lena e leai se mea e totoe i luga o le talimalo.

2 filifiliga. Afai e te manaʻomia le Docker-level performance, e mafai ona e faʻapipiʻi saʻo le pusa talimalo / teu i totonu o le koneteina.

# 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

Puipuiga. Ole auala pito sili lea ona saogalemu e fausia ai pusa aua e mafai ai e le koneteina ona suia le teuina o talimalo ma mafai ona fafagaina Podman poʻo CRI-O se ata leaga. E le gata i lea, e te manaʻomia e faʻamalo le vavaeeseina o le SELinux ina ia mafai ai e faʻagasologa i totonu o le pusa Buildah ona fegalegaleai ma le teuina i luga o le talimalo. Manatua o lenei filifiliga e sili atu nai lo le Docker socket ona o le atigipusa o loʻo loka i lalo e ala i le tumau o le saogalemu ma e le mafai ona na o le taʻavaleina o se atigipusa i luga o le talimalo.

Faatinoga. O le maualuga lea, talu ai o loʻo faʻaaogaina atoa le caching. Afai ua uma ona sii mai e le Podman poʻo le CRI-O le ata manaʻomia i le talimalo, o le Buildah process i totonu o le atigipusa e le toe manaʻomia ona toe sii mai, ma o isi fausiaina e faʻavae i luga o lenei ata o le a mafai foi ona ave mea latou te manaʻomia mai le cache. .

3 filifiliga. O le aano o lenei metotia o le tuʻufaʻatasia o ni ata i totonu o se poloketi e tasi ma se pusa masani mo ata atigipusa.

# 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

I lenei faʻataʻitaʻiga, matou te le tapeina le faila o le poloketi (/ var / lib / project3) i le va o taʻavale, o lea o mea uma e fausia i totonu o le poloketi e aoga mai le faʻaogaina.

Puipuiga. O se mea i le va o filifiliga 1 ma 2. I le tasi itu, o koneteina e le maua le avanoa i mea o loʻo i luga o le talimalo ma, e tusa ai, e le mafai ona faʻafefeina se mea leaga i totonu o le teuina o ata Podman / CRI-O. I le isi itu, o se vaega o lona mamanu, o se atigipusa e mafai ona faʻalavelave i le faʻapipiʻiina o isi pusa.

Faatinoga. O iinei e sili atu le leaga nai lo le faʻaaogaina o se faʻasoa faʻasoa i le tulaga talimalo, talu ai e le mafai ona e faʻaogaina ata ua uma ona sii mai e faʻaaoga ai le Podman / CRI-O. Ae ui i lea, o le taimi lava e sii mai ai e Buildah le ata, e mafai ona faʻaogaina le ata i soʻo se isi fausiaina i totonu o le poloketi.

teuina faaopoopo

У pusa/teu O loʻo i ai se mea manaia e pei o faleoloa faʻaopoopo (faleoloa faʻaopoopo), faʻafetai i le faʻalauiloaina ma le fausiaina o koneteina, e mafai e masini pusa ona faʻaogaina faleoloa ata i fafo i le faitau-naʻo le faʻapipiʻiina. O le mea moni, e mafai ona e fa'aopoopoina se tasi pe sili atu fo'i na'o mea e teu i le storage.conf faila ina ia e amata ai le koneteina, e su'e e le afi koneteina le ata mana'omia i totonu. E le gata i lea, o le a sii maia le ata mai le resitala pe afai e le maua i soʻo se tasi o nei mea e teu ai. E na'o le mea e mafai ona tusi ai le afi pusa i le teuina tusitusia...

Afai e te taʻavale i luga ma vaʻai i le Dockerfile matou te faʻaogaina e fausia ai le ata quay.io/buildah/stable, o loʻo i ai laina pei o lenei:

# 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

I le laina muamua, matou te suia /etc/containers/storage.conf i totonu o le ata koneteina, taʻu atu i le avetaʻavale teuina e faʻaoga "additionalimagestores" i le /var/lib/shared folder. Ma i le laina e sosoo ai matou te fatuina se faila fefaʻasoaaʻi ma faʻaopoopo ni faila loka se lua ina ia leai se faʻaleagaina mai pusa / teuina. O le mea moni, o lo'o matou faia na'o se faleoloa ata o koneteina gaogao.

Afai e te fa'apipi'i koneteina/teuga i se tulaga maualuga atu nai lo le faila lea, e mafai e Buildah ona fa'aoga ata.

Seʻi o tatou toe foʻi i le Filifiliga 2 o loʻo talanoaina i luga, pe a mafai e le Buildah container ona faitau ma tusitusi i koneteina / faleoloa i luga o 'au ma, e tusa ai, e maualuga le faʻatinoga ona o le faʻaogaina o ata i le Podman / CRI-O tulaga, ae maua ai se puipuiga maualalo talu mai lena taimi. e mafai ona tusi saʻo i le teuina. Se'i o tatou fa'aopoopo le fa'aputuga fa'aopoopo iinei ma maua le mea sili o lalolagi uma e lua.

# 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

Manatua o le /var/lib/containers/storage a le talimalo o loʻo faʻapipiʻiina i /var/lib/share i totonu o le atigipusa i le naʻo le faitau. O le mea lea, o le galue i totonu o se atigipusa, e mafai e Buildah ona faʻaogaina soʻo se ata na sii mai muamua e faʻaaoga ai le Podman / CRI-O (talofa, saoasaoa), ae mafai ona tusi i lona lava teuina (alofa, saogalemu). Ia maitauina foi e faia lenei mea e aunoa ma le faʻamalo ole SELinux vavae ese mo le pusa.

Faʻamatalaga taua

I lalo ole tulaga e tatau ona e tapeina soʻo se ata mai le fale teu oloa. A leai, e ono pa'u le koneteina Buildah.

Ma e le o mea lelei uma ia

O avanoa e teu ai fa'aopoopo e le fa'atapula'aina i le fa'aaliga o lo'o i luga. Mo se fa'ata'ita'iga, e mafai ona e tu'u uma ata o atigipusa i luga o se fa'aputuga feso'ota'iga fefa'asoaa'i ma tu'u avanoa i ai i pusa uma a le Buildah. Fa'apea e faitau selau ata e masani ona fa'aogaina e le matou CI/CD e fau ai ata. Matou te taulaʻi uma nei ata i luga o le tasi fale teu oloa ona faʻaaogaina lea o meafaigaluega e teu ai fesoʻotaʻiga (NFS, Gluster, Ceph, ISCSI, S3 ...), matou te tatalaina le avanoa lautele i lenei teuina i Buildah poʻo Kubernetes uma.

O lea ua lava le faʻapipiʻiina o lenei mea e teu ai fesoʻotaʻiga i totonu o le Buildah container on /var/lib/shared ma o le mea lena - Buildah containers e le toe manaʻomia ona sii mai ata e ala i le toso. O le mea lea, matou te lafoina i fafo le vaega muamua o le faitau aofaʻi ma sauni vave e taʻavale pusa.

Ma o le mea moni, e mafai ona faʻaaogaina i totonu o le Kubernetes system ola poʻo atinaʻe atigipusa e faʻalauiloa ma taʻavale ai pusa i soʻo se mea e aunoa ma se tosoina o ata. E le gata i lea, o le resitala o pusa, mauaina o se talosaga tulei e faʻapipiʻi se ata faʻafouina i ai, e mafai ona otometi ona tuʻuina atu lenei ata i se faʻasoa fesoʻotaʻiga teuina, lea e maua vave ai i nodes uma.

O ata o pusa e mafai ona o'o atu i le tele o gigabytes i nisi taimi. O le fa'atinoga o le fa'aputuga fa'aopoopo e mafai ai ona e 'alofia le fa'apipi'iina o ia ata i luga o pona ma fa'ato'a fa'atopetope fa'asolo ai pusa.

E le gata i lea, o loʻo matou galulue nei i se vaega fou e taʻua o le overlay volume mounts, lea o le a faʻateleina ai le fausiaina o pusa.

iʻuga

O le ta'avale Buildah i totonu o se atigipusa i Kubernetes/CRI-O, Podman, po'o Docker foi e mafai, faigofie, ma sili atu le saogalemu nai lo le fa'aogaina o le docker.socket. Ua matou matua faateleina le fetuutuunai o le galulue faatasi ma ata, ina ia mafai ona e faʻatautaia i latou i auala eseese e faʻamalieina ai le paleni i le va o le saogalemu ma le faʻatinoga.

O le faʻatinoga o le teuina faʻaopoopo e mafai ai ona e faʻavave pe faʻaumatia atoa le laʻuina o ata i nodes.

puna: www.habr.com

Faaopoopo i ai se faamatalaga