Inona no hatsaran'ny fanasarahana ny fotoana fandehanana kaontenera ho singa fitaovana samihafa? Indrindra indrindra fa afaka manomboka mitambatra ireo fitaovana ireo mba hifampiaro.
Olona maro no voasarika amin'ny hevitra hananganana sary OCI container ao anatiny
Noho izany dia miezaka hatrany ny olona hampandeha ny Buildah ao anaty kaontenera. Raha fintinina dia namorona isika
fanitsiana
Ireo sary ireo dia natsangana avy amin'ny Dockerfiles, izay hita ao amin'ny tahiry Buildah ao amin'ny lahatahiry
Eto isika dia handinika
# 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
Raha tokony OverlayFS ampiharina amin'ny haavon'ny kernel Linux an'ny mpampiantrano, dia mampiasa ny programa ao anaty container izahay
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
Manaraka, mamorona lahatahiry ho an'ny tahiry fanampiny.
# 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
Farany, mampiasa ny fari-piainana BUILDAH_ISOLATION izahay mba hilazana ny fitoeran'ny Buildah hanomboka amin'ny fitokanana chroot amin'ny alΓ lan'ny default. Tsy ilaina ny fitokanana fanampiny eto, satria efa miasa ao anaty kaontenera izahay. Mba hahafahan'ny Buildah mamorona kaontenera misaraka amin'ny toerana misy anarana, dia ilaina ny tombontsoa SYS_ADMIN, izay mitaky ny famahana ny fitsipiky ny SELinux sy ny SECCOMP an'ny kaontenera, izay mety hifanohitra amin'ny fanamboarana ataontsika amin'ny fitoerana azo antoka.
Alefaso ao anaty container ny Buildah
Ny drafitry ny sarin'ny kaontenera Buildah resahina etsy ambony dia ahafahanao manovaovaovaovao ny fomba fandefasana ireo kaontenera ireo.
Haingana mifanohitra amin'ny fiarovana
Ny fiarovana amin'ny solosaina dia marimaritra iraisana eo amin'ny hafainganam-pandehan'ny dingana iray sy ny habetsahan'ny fiarovana manodidina azy. Marina ihany koa ity fanambarana ity rehefa manangom-bokatra, ka eto ambany isika dia handinika safidy ho an'ny marimaritra iraisana toy izany.
Ny sary container resahina etsy ambony dia hitazona ny fitahirizana azy ao amin'ny /var/lib/containers. Noho izany, mila mametraka votoaty amin'ity lahatahiry ity isika, ary ny fomba hanaovana izany dia hisy fiantraikany lehibe amin'ny hafainganam-pandehan'ny fananganana sary fitoeran-javatra.
Andeha isika handinika safidy telo.
Option 1. Raha ilaina ny fiarovana ambony indrindra, dia azonao atao ny mamorona lahatahiry manokana ho an'ny container / sary ho an'ny container tsirairay ary mampifandray izany amin'ny container amin'ny alΓ lan'ny volume-mount. Ary ankoatr'izay, apetraho ao anaty container ny lahatahiry contexte, ao amin'ny folder / 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
Security. Ny Buildah mandeha amin'ny kaontenera toy izany dia manana fiarovana ambony indrindra: tsy omena tombontsoa manokana amin'ny alΓ lan'ny fahaiza-manao, ary mihatra aminy avokoa ny fameperana SECOMP sy SELinux. Ny container toy izany dia azo atao mihitsy aza miaraka amin'ny fitokana-monina User Namespace amin'ny alΓ lan'ny fanampiana safidy toy ny --uidmap 0:100000:10000.
Performance. Fa ny fampisehoana eto dia kely indrindra, satria ny sary rehetra avy amin'ny rejisitry ny container dia adika amin'ny mpampiantrano isaky ny mandeha, ary ny caching dia tsy mandeha amin'ny teny hoe "tsy misy fomba". Rehefa vita ny asany dia tsy maintsy mandefa ny sary any amin'ny rejisitra ny kaontenera Buildah ary manimba ny atiny amin'ny mpampiantrano. Amin'ny fotoana manaraka ny sarin'ny kaontenera dia tsy maintsy alaina indray avy amin'ny rejisitra, satria tsy hisy tavela eo amin'ny mpampiantrano amin'io fotoana io.
Option 2. Raha mila fampisehoana ambaratonga Docker ianao dia azonao atao ny mametraka mivantana ny fitoeran'ny mpampiantrano / fitahirizana ao anaty container.
# 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
Security. Ity no fomba tsy azo antoka indrindra amin'ny fananganana kaontenera, satria ahafahan'ny container manova ny fitahirizana ao amin'ny mpampiantrano ary mety hampiditra sary ratsy ao amin'ny Podman na CRI-O. Ho fanampin'izany, mila manaisotra ny fisarahana SELinux ianao mba hahafahan'ireo dingana ao amin'ny container Buildah hifanerasera amin'ny tahiry ao amin'ny mpampiantrano. Mariho fa ity safidy ity dia mbola tsara kokoa noho ny socket Docker, satria voasakana ireo endri-piarovana sisa tavela ny kaontenera ary tsy afaka maka sy mitantana container amin'ny mpampiantrano fotsiny.
Performance. Eto dia ambony indrindra, satria tafiditra tanteraka ny caching. Raha efa nampidinin'i Podman na CRI-O ny sary tiana ho an'ny mpampiantrano, dia tsy mila maka azy indray ny fizotran'ny Buildah ao anaty fitoeran-javatra, ary ny fananganana manaraka ity sary ity dia afaka maka ny ilaina amin'ny cache. .
Option 3. Ny votoatin'ity fomba ity dia ny manambatra sary maromaro ho tetikasa iray miaraka amina lahatahiry iraisana ho an'ny sary fitoeran-javatra.
# 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
Amin'ity ohatra ity, tsy mamafa ny lahatahiry tetikasa (/var/lib/project3) eo anelanelan'ny hazakazaka izahay, ka ny fananganana manaraka ao anatin'ilay tetikasa dia manararaotra caching.
Security. Zavatra eo anelanelan'ny safidy 1 sy 2. Amin'ny lafiny iray, ny kaontenera dia tsy mahazo miditra amin'ny votoaty ao amin'ny mpampiantrano ary, araka izany, dia tsy afaka mampiditra zavatra ratsy ao amin'ny fitahirizana sary Podman / CRI-O. Amin'ny lafiny iray, ao anatin'ny tetikasany manokana, ny kaontenera iray dia mety hanelingelina ny fivorian'ny kaontenera hafa.
Performance. Eto dia ratsy noho ny fampiasana cache ifampizarana amin'ny ambaratonga mpampiantrano, satria tsy afaka mampiasa sary efa nalaina tamin'ny Podman / CRI-O ianao. Na izany aza, rehefa naka ny sary i Buildah, dia azo ampiasaina amin'ny fananganana manaraka ao anatin'ilay tetikasa io sary io.
Fitehirizana fanampiny
Π£
Raha mihodina miakatra isika ary mijery ny Dockerfile ampiasaina hananganana ny sary quay.io/buildah/stable dia misy andalana toy izao:
# 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
Eo amin'ny andalana voalohany dia ovainay ny /etc/containers/storage.conf ao anatin'ny sarin'ny container, milaza amin'ny mpamily fitahirizana hampiasa "additionalimagestores" ao amin'ny folder /var/lib/shared. Ary amin'ny andalana manaraka dia mamorona lahatahiry ifampizarana isika ary manampy rakitra hidin-trano roa mba tsy hisian'ny fanararaotana avy amin'ny container / fitehirizana. Amin'ny ankapobeny, mamorona fivarotana sary fitoeran-javatra foana izahay.
Raha mametraka kaontenera/mitahiry ambaratonga ambonin'ity lahatahiry ity ianao dia afaka mampiasa ireo sary i Buildah.
Andeha isika hiverina amin'ny Option 2 resahina etsy ambony, rehefa afaka mamaky sy manoratra amin'ny container / store amin'ny mpampiantrano ny container Buildah ary, araka izany, dia manana fampisehoana ambony indrindra noho ny caching sary amin'ny haavon'ny Podman / CRI-O, fa manome fiarovana kely indrindra, satria afaka manoratra mivantana amin'ny fitahirizana izy. Ary ankehitriny isika dia hanamboatra fitahirizana fanampiny eto ary hahazo ny tsara indrindra amin'ny tontolo roa.
# 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
Mariho fa ny /var/lib/containers/storage an'ny mpampiantrano dia napetraka ao amin'ny /var/lib/shared ao anaty container amin'ny fomba vakiana fotsiny. Noho izany, miasa ao anaty fitoeran-javatra iray, ny Buildah dia afaka mampiasa izay sary efa nalaina tamin'ny alΓ lan'ny Podman / CRI-O (salama, hafainganam-pandeha), fa tsy afaka manoratra amin'ny fitahirizana azy ihany (miarahaba, fiarovana). Mariho ihany koa fa izany dia atao raha tsy manafoana ny fisarahana SELinux ho an'ny container.
Hevitra manan-danja
Na ahoana na ahoana dia tsy tokony hofafana ny sary ao amin'ny tahiry fototra. Raha tsy izany dia mety hianjera ny kaontenera Buildah.
Ary tsy izany ihany no tombony.
Ny fahafaha-mitahiry fanampiny dia tsy voafetra amin'ny toe-javatra etsy ambony. Ohatra, azonao atao ny mametraka ny sary fitoeran-javatra rehetra ao amin'ny fitahirizana tambajotra iombonana ary manome fahafahana miditra amin'izany amin'ny fitahirizana Buildah rehetra. Andeha hatao hoe manana sary an-jatony izay ampiasaintsika matetika ny rafitra CI/CD mba hanamboarana sary voatahiry. Ampifantoka amin'ny mpampiantrano fitahirizana tokana ireo sary rehetra ireo ary avy eo, amin'ny fampiasana ny fitaovana fitahirizana tambajotra (NFS, Gluster, Ceph, iSCSI, S3 ...), mizara ity fitahirizana ity amin'ny node Buildah na Kubernetes rehetra.
Ankehitriny dia ampy ny mametraka ity fitahirizana tambajotra ity ao amin'ny container Buildah amin'ny /var/lib/shared ary izay no izy - tsy mila maka sary amin'ny alalan'ny pull intsony ny containers Buildah. Noho izany, arianay ny dingana alohan'ny mponina ary vonona avy hatrany hamoaka ny kaontenera.
Ary mazava ho azy, azo ampiasaina ao anatin'ny rafitra Kubernetes mivantana na fotodrafitrasa fitoeran'entana izany mba handefasana sy hampandehanana kaontenera na aiza na aiza tsy misy fisintonana sary. Fanampin'izay, rehefa mahazo fangatahana fanosehana ny rejistra kaontenera hampiditra sary nohavaozina aminy, dia afaka mandefa ho azy io sary io ho any amin'ny fitahirizana tambazotra ifampizarana, izay misy azy avy hatrany amin'ny nodes rehetra.
Mety ho gigabytes maro indraindray ny sarin'ny fitoeran-javatra. Ny fampandehanana ny fitahirizana fanampiny dia manafoana ny filΓ na ny fanaovana klΓ΄nina ny sary toy izany amin'ny alalan'ny nodes ary mahatonga ny fandefasana kaontenera ho eo no ho eo.
Ho fanampin'izay, miasa amin'ny endri-javatra vaovao overlay volume mounts izahay amin'izao fotoana izao izay hahatonga ny fananganana kaontenera haingana kokoa.
famaranana
Ny fampandehanana ny Buildah ao anaty kaontenera ao amin'ny tontolo Kubernetes/CRI-O, Podman, na Docker aza dia azo atao, ary tsotra sy azo antoka kokoa noho ny fampiasana docker.socket. Nampitomboinay be ny fahafaha-miasa amin'ny sary, ary azonao atao ny mampandeha azy ireo amin'ny fomba isan-karazany ho an'ny fifandanjana tsara indrindra eo amin'ny fiarovana sy ny fampisehoana.
Ny fiasan'ny fitahirizana fanampiny dia ahafahanao manafaingana na manafoana tanteraka ny fampidinana sary amin'ny nodes.
Source: www.habr.com