ကွန်တိန်နာအတွင်း Buildah ကိုအသုံးပြုရန် အကြံပြုချက်များ

container runtime ကို သီးခြား tooling အစိတ်အပိုင်းများအဖြစ် ခွဲထုတ်ခြင်း၏ လှပမှုသည် အဘယ်နည်း။ အထူးသဖြင့်၊ ဤကိရိယာများသည် အချင်းချင်း ကာကွယ်ရန်အတွက် စတင်ပေါင်းစပ်နိုင်သည်။

ကွန်တိန်နာအတွင်း Buildah ကိုအသုံးပြုရန် အကြံပြုချက်များ

အထဲမှာ ကွန်တိန်နာထည့်ထားတဲ့ OCI ရုပ်ပုံတွေကို ဆောက်ဖို့ စိတ်ကူးကို လူတော်တော်များများက ဆွဲဆောင်ကြပါတယ်။ Kubernetes သို့မဟုတ် အလားတူစနစ်။ ကျွန်ုပ်တို့တွင် ပုံများကို အဆက်မပြတ်စုဆောင်းနေသည့် CI/CD တစ်ခုရှိသည် ဆိုပါစို့ RedHat OpenShift/Kubernetes သည် တည်ဆောက်နေစဉ်အတွင်း load balancing ၏စည်းကမ်းချက်များ၌အတော်လေးအသုံးဝင်လိမ့်မည်။ မကြာသေးမီအထိ၊ လူအများစုသည် ကွန်တိန်နာများကို Docker socket သို့ ရိုးရိုးရှင်းရှင်းအသုံးပြုခွင့်ပေးပြီး docker build command ကို အသုံးပြုခွင့်ပေးခဲ့သည်။ ဟိုတုန်းက ငါတို့ပြတယ်။၎င်းသည် အလွန်လုံခြုံမှုမရှိသောကြောင့်၊ အမှန်မှာ၊ ၎င်းသည် စကားဝှက်မဲ့ root သို့မဟုတ် sudo ကို ပေးခြင်းထက်ပင် ဆိုးရွားပါသည်။

အဲဒါကြောင့် လူတွေက Buildah ကို ကွန်တိန်နာထဲမှာ ပြေးဖို့ အမြဲကြိုးစားကြတယ်။ တိုတိုပြောရရင်၊ ငါတို့ဖန်တီးတယ်။ နမူနာ ကျွန်ုပ်တို့၏ထင်မြင်ယူဆချက်အရ Buildah ကို ကွန်တိန်နာတစ်ခုအတွင်း မည်သို့လည်ပတ်ပြီး သက်ဆိုင်ရာပုံများကို တင်ထားရန် အကောင်းဆုံးဖြစ်မည်နည်း။ quay.io/buildah. စလိုက်ကြစို့...

သင့်အောင်လုပ်ခြင်း

ဤပုံများကို Dockerfiles မှတည်ဆောက်ထားပြီး folder ရှိ Buildah repository တွင်တွေ့နိုင်ပါသည်။ buildahimage.
ဤတွင်ကျွန်ုပ်တို့စဉ်းစားပါမည်။ 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

OverlayFS ၏ host Linux kernel အဆင့်တွင်အကောင်အထည်ဖော်မည့်အစား၊ ကျွန်ုပ်တို့သည် container အတွင်းပရိုဂရမ်ကိုအသုံးပြုသည် fuse-overlayအဘယ်ကြောင့်ဆိုသော်၊ လက်ရှိတွင် OverlayFS သည် Linux စွမ်းရည်များကို အသုံးပြု၍ SYS_ADMIN ခွင့်ပြုချက်များပေးမှသာ တပ်ဆင်နိုင်သောကြောင့်ဖြစ်သည်။ ကျွန်ုပ်တို့သည် မည်သည့် root အခွင့်ထူးများမပါဘဲ ကျွန်ုပ်တို့၏ Buildah ကွန်တိန်နာများကို လုပ်ဆောင်လိုပါသည်။ Fuse-overlay သည် အလွန်လျင်မြန်စွာအလုပ်လုပ်ပြီး VFS သိုလှောင်မှုဒရိုက်ဘာထက် ပိုမိုကောင်းမွန်သောစွမ်းဆောင်ရည်ရှိသည်။ Fuse ကိုအသုံးပြုသည့် Buildah ကွန်တိန်နာကိုအသုံးပြုသောအခါ၊ သင်သည် /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

ထို့နောက် အပိုသိုလှောင်မှုအတွက် လမ်းညွှန်တစ်ခု ဖန်တီးပါသည်။ ကွန်တိန်နာ / သိုလှောင်မှု နောက်ထပ်ဖတ်ရန်-သီးသန့်ပုံစတိုးဆိုင်များကို ချိတ်ဆက်ခြင်းသဘောတရားကို ပံ့ပိုးပေးသည်။ ဥပမာအားဖြင့်၊ သင်သည် စက်တစ်ခုတွင် ထပ်ဆင့်သိုလှောင်မှုဧရိယာတစ်ခုကို စီစဉ်သတ်မှတ်နိုင်ပြီး၊ ထို့နောက် ဤသိုလှောင်မှုကို အခြားစက်တစ်ခုတွင်တပ်ဆင်ရန်နှင့် ဆွဲယူခြင်းမရှိဘဲ ၎င်းမှပုံများကို အသုံးပြုရန်အတွက် NFS ကို အသုံးပြုနိုင်သည်။ အသံအတိုးအကျယ်အဖြစ် လက်ခံရယူပြီး ကွန်တိန်နာအတွင်း အသုံးပြုနိုင်ရန် ပုံသိုလှောင်မှုအချို့ကို ချိတ်ဆက်နိုင်စေရန်အတွက် ဤသိုလှောင်ခန်းကို ကျွန်ုပ်တို့ လိုအပ်ပါသည်။

# 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

နောက်ဆုံးတွင်၊ BUILDAH_ISOLATION ပတ်၀န်းကျင် ကိန်းရှင်ကို အသုံးပြုခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် Buildah container အား ပုံမှန်အားဖြင့် chroot isolation ဖြင့် လုပ်ဆောင်ရန် ပြောနေပါသည်။ ကျွန်ုပ်တို့သည် ကွန်တိန်နာတွင် အလုပ်လုပ်နေပြီဖြစ်သောကြောင့် ဤနေရာတွင် ထပ်လောင်းလျှပ်ကာများ မလိုအပ်ပါ။ Buildah သည် ၎င်း၏ကိုယ်ပိုင် namespace-ခြားသောကွန်တိန်နာများကိုဖန်တီးရန်အတွက် SYS_ADMIN အထူးအခွင့်အရေးလိုအပ်သည်၊ ၎င်းသည် လုံခြုံသောကွန်တိန်နာမှတည်ဆောက်ရန်ကျွန်ုပ်တို့၏အကြိုက်နှင့်ဆန့်ကျင်ဘက်ဖြစ်သောကွန်တိန်နာ၏ SELinux နှင့် SECOMP စည်းမျဉ်းများကို ဖြေလျှော့ရန်လိုအပ်ပါသည်။

ကွန်တိန်နာတစ်ခုအတွင်း Buildah ကို ပြေးခြင်း။

အထက်တွင်ဖော်ပြထားသော Buildah ကွန်တိန်နာရုပ်ပုံကားချပ်သည် သင့်အား ထိုကွန်တိန်နာကိုစတင်သည့်နည်းလမ်းများကို လိုက်လျောညီထွေပြောင်းလဲနိုင်စေပါသည်။

အရှိန်နှင့် ဘေးကင်းသည်။

ကွန်ပြူတာလုံခြုံရေးသည် လုပ်ငန်းစဉ်၏အမြန်နှုန်းနှင့် ၎င်းကို မည်မျှကာကွယ်ပေးသည်တို့အကြား အမြဲတမ်းအပေးအယူတစ်ခုဖြစ်သည်။ ကွန်တိန်နာများ တပ်ဆင်ရာတွင်လည်း ဤထုတ်ပြန်ချက်သည် မှန်ပါသည်၊ ထို့ကြောင့် အောက်တွင် ကျွန်ုပ်တို့သည် ထိုသို့သော အပေးအယူတစ်ခုအတွက် ရွေးချယ်စရာများကို စဉ်းစားပါမည်။

အထက်တွင်ဖော်ပြထားသော ကွန်တိန်နာပုံသည် ၎င်း၏သိုလှောင်မှုကို /var/lib/containers တွင် သိမ်းဆည်းထားမည်ဖြစ်သည်။ ထို့ကြောင့်၊ ကျွန်ုပ်တို့သည် ဤဖိုင်တွဲတွင် အကြောင်းအရာကို တပ်ဆင်ရန် လိုအပ်ပြီး ၎င်းကို ကျွန်ုပ်တို့ မည်သို့ပြုလုပ်သည်ဖြစ်စေ ကွန်တိန်နာပုံများ တည်ဆောက်ခြင်း၏ အမြန်နှုန်းကို များစွာအကျိုးသက်ရောက်စေမည်ဖြစ်သည်။

ရွေးချယ်စရာသုံးခုကို စဉ်းစားကြည့်ရအောင်။

1 option ကို။ အမြင့်ဆုံးလုံခြုံရေး လိုအပ်ပါက၊ ကွန်တိန်နာတစ်ခုစီအတွက် ကွန်တိန်နာ/ပုံအတွက် သင့်ကိုယ်ပိုင်ဖိုင်တွဲကို ဖန်တီးပြီး volume-mount မှတစ်ဆင့် ကွန်တိန်နာသို့ ချိတ်ဆက်နိုင်သည်။ ထို့အပြင်၊ ဆက်စပ်လမ်းညွှန်ကို ကွန်တိန်နာကိုယ်တိုင်၊ /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

လုံခြုံရေး။ ထိုသို့သောကွန်တိန်နာတစ်ခုတွင်လည်ပတ်နေသည့် Buildah သည် အမြင့်ဆုံးလုံခြုံရေးရှိသည်- ၎င်းကို စွမ်းရည်များကိုအသုံးပြု၍ မည်သည့် root အခွင့်ထူးများကိုမျှ မပေးဘဲ၊ SECOMP နှင့် SELinux ကန့်သတ်ချက်များအားလုံးကို ၎င်းနှင့်သက်ဆိုင်ပါသည်။ ထိုသို့သောကွန်တိန်နာကို —uidmap 0 ကဲ့သို့သော ရွေးချယ်မှုတစ်ခုထည့်သွင်းခြင်းဖြင့် User Namespace isolation ဖြင့်ပင် လုပ်ဆောင်နိုင်သည်။ 100000:10000။

performance ။ သို့သော် ကွန်တိန်နာစာရင်းသွင်းခြင်းမှ မည်သည့်ပုံများကိုမဆို host သို့ အချိန်တိုင်း ကူးယူထားပြီး ကက်ရှ်ချခြင်း လုံးဝအလုပ်မလုပ်သောကြောင့် ဤနေရာတွင် စွမ်းဆောင်ရည် အနည်းငယ်သာရှိသည်။ ၎င်း၏အလုပ်ပြီးမြောက်သောအခါ Buildah ကွန်တိန်နာသည် ဓါတ်ပုံကို မှတ်ပုံတင်ဌာနသို့ ပေးပို့ပြီး လက်ခံသူပေါ်ရှိ အကြောင်းအရာကို ဖျက်ဆီးရပါမည်။ ကွန်တိန်နာပုံအား နောက်တစ်ကြိမ်တည်ဆောက်သည့်အခါ၊ ၎င်းကို မှတ်ပုံတင်ခြင်းမှ ထပ်မံဒေါင်းလုဒ်လုပ်ရမည်ဖြစ်ပြီး၊ ထိုအချိန်ရောက်လျှင် host တွင် ဘာမျှကျန်တော့မည်မဟုတ်သောကြောင့်ဖြစ်သည်။

2 option ကို။ Docker အဆင့် စွမ်းဆောင်ရည် လိုအပ်ပါက၊ host container/storage ကို 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

လုံခြုံရေး။ ဤအရာသည် ကွန်တိန်နာကို တည်ဆောက်ရန် အလုံခြုံဆုံးနည်းလမ်းဖြစ်ပြီး ၎င်းသည် ကွန်တိန်နာအား လက်ခံသူတွင် သိုလှောင်မှုကို ပြုပြင်မွမ်းမံရန်နှင့် Podman သို့မဟုတ် CRI-O အား အန္တရာယ်ရှိသောပုံကို ကျွေးမွေးနိုင်သောကြောင့်ဖြစ်သည်။ ထို့အပြင်၊ Buildah container ရှိ လုပ်ငန်းစဉ်များသည် host ရှိ storage နှင့် အပြန်အလှန်အကျိုးသက်ရောက်နိုင်စေရန် SELinux ခွဲခြားခြင်းကို ပိတ်ရန် လိုအပ်မည်ဖြစ်ပါသည်။ ကျန်ရှိနေသော လုံခြုံရေးအင်္ဂါရပ်များဖြင့် ကွန်တိန်နာကို လော့ခ်ချထားပြီး host တွင် ကွန်တိန်နာကို ရိုးရိုးမဖွင့်နိုင်သောကြောင့် ဤရွေးချယ်မှုသည် Docker socket ထက် ပိုကောင်းနေသေးသည်ကို သတိပြုပါ။

performance ။ caching ကို အပြည့်အဝအသုံးပြုထားသောကြောင့် ဤနေရာတွင် အမြင့်ဆုံးဖြစ်သည်။ အကယ်၍ Podman သို့မဟုတ် CRI-O သည် လိုအပ်သောပုံကို host သို့ ဒေါင်းလုဒ်လုပ်ပြီးပါက၊ ကွန်တိန်နာအတွင်းရှိ Buildah လုပ်ငန်းစဉ်သည် ၎င်းကို ထပ်မံဒေါင်းလုဒ်လုပ်ရန် မလိုအပ်တော့ဘဲ၊ ဤပုံပေါ်အခြေခံထားသော နောက်ဆက်တွဲတည်ဆောက်မှုများသည်လည်း ကက်ရှ်မှ လိုအပ်သည်များကို ယူဆောင်နိုင်မည်ဖြစ်သည်။ .

3 option ကို။ ဤနည်းလမ်း၏ အနှစ်သာရမှာ ရုပ်ပုံအများအပြားကို ကွန်တိန်နာပုံများအတွက် ဘုံဖိုဒါတစ်ခုနှင့် ပရောဂျက်တစ်ခုသို့ ပေါင်းစပ်ရန်ဖြစ်သည်။

# 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

ဤဥပမာတွင်၊ ကျွန်ုပ်တို့သည် လုပ်ဆောင်မှုများကြားရှိ ပရောဂျက်ဖိုင်တွဲ (/var/lib/project3) ကို မဖျက်ပါ၊ ထို့ကြောင့် ပရောဂျက်အတွင်းရှိ နောက်ဆက်တွဲတည်ဆောက်မှုများအားလုံးကို ကက်ချခြင်းမှ အကျိုးကျေးဇူးရရှိမည်ဖြစ်သည်။

လုံခြုံရေး။ ရွေးချယ်စရာ 1 နှင့် 2 အကြားရှိ တစ်ခုခု။ တစ်ဖက်တွင်၊ ကွန်တိန်နာများသည် host ပေါ်ရှိ အကြောင်းအရာများကို ဝင်ရောက်ကြည့်ရှုခွင့်မရှိသည့်အပြင်၊ ထို့ကြောင့် Podman/CRI-O ရုပ်ပုံသိုလှောင်မှုထဲသို့ ဆိုးရွားသောအရာတစ်ခုခုကို လွှဲချော်သွားနိုင်သည်။ အခြားတစ်ဖက်တွင်၊ ၎င်း၏ ဒီဇိုင်းအစိတ်အပိုင်းအနေဖြင့် ကွန်တိန်နာသည် အခြားကွန်တိန်နာများ၏ စုဝေးမှုကို အနှောင့်အယှက်ဖြစ်စေနိုင်သည်။

performance ။ Podman/CRI-O ကို အသုံးပြု၍ ဒေါင်းလုဒ်လုပ်ထားသည့် ပုံများကို သင် အသုံးမပြုနိုင်သောကြောင့် ဤနေရာတွင် မျှဝေထားသော ကက်ရှ်ကို လက်ခံသည့်အဆင့်တွင် အသုံးပြုခြင်းထက် ပိုဆိုးပါသည်။ သို့သော်၊ Buildah ပုံကိုဒေါင်းလုဒ်လုပ်ပြီးသည်နှင့်၊ ထိုပုံကို ပရောဂျက်အတွင်း မည်သည့်နောက်ဆက်တွဲတည်ဆောက်မှုများတွင်မဆို အသုံးပြုနိုင်ပါသည်။

အပိုသိုလှောင်မှု

У ကွန်တိန်နာ / သိုလှောင်မှု အပိုစတိုးဆိုင်များ (အပိုစတိုးဆိုင်များ) သည် ကွန်တိန်နာများကို စတင်တည်ဆောက်သည့်အခါ၊ ကွန်တိန်နာများတည်ဆောက်သည့်အခါတွင် ကွန်တိန်နာအင်ဂျင်များသည် ဖတ်ရှုရန်သာထပ်သောမုဒ်တွင် ပြင်ပရုပ်ပုံစတိုးဆိုင်များကို အသုံးပြုနိုင်သည်။ အခြေခံအားဖြင့်၊ သင်သည် ကွန်တိန်နာကို စတင်သောအခါ၊ ကွန်တိန်နာအင်ဂျင်သည် ၎င်းတို့တွင် လိုချင်သောပုံကို ရှာဖွေနိုင်ရန် storage.conf ဖိုင်တွင် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ဖတ်ရှုရန်-တစ်ခုတည်းသော သိုလှောင်မှုကို ထည့်နိုင်သည်။ ထို့အပြင်၊ ၎င်းသည် ဤသိမ်းဆည်းမှုတစ်ခုခုတွင် ၎င်းကိုမတွေ့ပါက မှတ်ပုံတင်မှ ပုံကို ဒေါင်းလုဒ်လုပ်မည်ဖြစ်သည်။ ကွန်တိန်နာအင်ဂျင်သည် စာရေးနိုင်သော သိုလှောင်မှုတွင်သာ ရေးသားနိုင်လိမ့်မည်...

အပေါ်ကို လှိမ့်ပြီး image quay.io/buildah/stable ကို တည်ဆောက်ဖို့ အသုံးပြုတဲ့ Dockerfile ကို ကြည့်မယ်ဆိုရင်၊ ဒီလို မျဉ်းကြောင်းတွေ ရှိပါတယ်။

# 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

ပထမစာကြောင်းတွင် ကျွန်ုပ်တို့သည် /var/lib/shared ဖိုင်တွဲရှိ သိုလှောင်မှုဒရိုက်ဗာအား /var/lib/shared folder တွင် "additionalimagestores" ကိုအသုံးပြုရန်ပြောသော ကွန်တိန်နာပုံအတွင်း /etc/containers/storage.conf ကို ပြင်ဆင်ပါသည်။ နောက်တစ်ကြောင်းတွင် ကျွန်ုပ်တို့သည် မျှဝေထားသောဖိုင်တွဲတစ်ခုကို ဖန်တီးပြီး ကွန်တိန်နာ/သိုလှောင်မှုမှ အလွဲသုံးစားမလုပ်မိစေရန်အတွက် လော့ခ်ဖိုင်အချို့ကို ပေါင်းထည့်ပါသည်။ အဓိကအားဖြင့်၊ ကျွန်ုပ်တို့သည် ကွန်တိန်နာအလွတ်ပုံစတိုးတစ်ခုကို ဖန်တီးနေပါသည်။

သင်သည် ဤဖိုင်တွဲထက်မြင့်သောအဆင့်တွင် ကွန်တိန်နာ/သိုလှောင်မှုကို တပ်ဆင်ပါက၊ Buildah သည် ရုပ်ပုံများကို အသုံးပြုနိုင်သည်။

Buildah ကွန်တိန်နာသည် hosts ပေါ်ရှိ containers/store သို့ဖတ်နိုင်၊ ရေးနိုင်ပြီး Podman/CRI-O အဆင့်တွင် caching ပုံများကြောင့် အမြင့်ဆုံးစွမ်းဆောင်ရည်ရှိသောကြောင့် အထက်တွင်ဖော်ပြထားသောဆွေးနွေးထားသော Option 2 သို့ပြန်သွားကြပါစို့၊ သို့သော် အနည်းဆုံးလုံခြုံရေးကိုပေးပါသည်။ သိုလှောင်မှုသို့တိုက်ရိုက်ရေးနိုင်သောကြောင့်ဖြစ်သည်။ ယခု ဤနေရာတွင် အပိုသိုလှောင်ခန်းကို ထည့်သွင်းပြီး ကမ္ဘာနှစ်ခုလုံး၏ အကောင်းဆုံးကို ရယူလိုက်ကြပါစို့။

# 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

လက်ခံသူ၏ /var/lib/containers/storage ကို ဖတ်ရန်-သပ်သပ်မုဒ်တွင် ကွန်တိန်နာအတွင်း /var/lib/shared တွင်တပ်ဆင်ထားကြောင်း သတိပြုပါ။ ထို့ကြောင့်၊ ကွန်တိန်နာတစ်ခုတွင်အလုပ်လုပ်သော Buildah သည် Podman/CRI-O (ဟယ်လို၊ အမြန်နှုန်း) ကို အသုံးပြု၍ ယခင်ကဒေါင်းလုဒ်လုပ်ထားသည့် မည်သည့်ပုံများကိုမဆို အသုံးပြုနိုင်ပြီး ၎င်း၏ကိုယ်ပိုင်သိုလှောင်မှုတွင်သာ ရေးနိုင်သည် (ဟယ်လို၊ လုံခြုံရေး)။ ကွန်တိန်နာအတွက် SELinux ခြားနားခြင်းကို မပိတ်ဘဲ ၎င်းကို လုပ်ဆောင်ကြောင်းကိုလည်း သတိပြုပါ။

အရေးကြီးဆုံးအရာ

မည်သည့်အခြေအနေမျိုးတွင်မဆို အရင်းခံသိုလှောင်မှုမှ ပုံများကို ဖျက်သင့်ပါသည်။ မဟုတ်ပါက Buildah ကွန်တိန်နာ ပျက်သွားနိုင်သည်။

ဒါတွေအားလုံးဟာ အားသာချက်တွေ မဟုတ်ပါဘူး။

အပိုသိုလှောင်မှု၏ဖြစ်နိုင်ချေများသည် အထက်ပါအခြေအနေများတွင် အကန့်အသတ်မရှိပါ။ ဥပမာအားဖြင့်၊ သင်သည် ကွန်တိန်နာပုံအားလုံးကို မျှဝေထားသော ကွန်ရက်သိုလှောင်မှုတွင် ထားရှိနိုင်ပြီး ၎င်းကို Buildah ကွန်တိန်နာများအားလုံးသို့ ဝင်ရောက်ခွင့်ပေးနိုင်သည်။ ကျွန်ုပ်တို့တွင် ကျွန်ုပ်တို့၏ CI/CD စနစ်သည် ကွန်တိန်နာပုံများကို တည်ဆောက်ရန်အတွက် ပုံမှန်အသုံးပြုသည့် ပုံရာပေါင်းများစွာရှိသည် ဆိုကြပါစို့။ ကျွန်ုပ်တို့သည် ဤရုပ်ပုံအားလုံးကို သိုလှောင်ရုံတစ်ခုတွင် အာရုံစိုက်ပြီးနောက် နှစ်သက်ရာကွန်ရက်သိုလှောင်မှုကိရိယာများ (NFS၊ Gluster၊ Ceph၊ ISCSI၊ S3...) ကို အသုံးပြု၍ ကျွန်ုပ်တို့သည် Buildah သို့မဟုတ် Kubernetes node များအားလုံးတွင် ဤသိုလှောင်မှုအား ယေဘုယျအသုံးပြုခွင့်ကို ဖွင့်ပေးပါသည်။

ယခု ဤကွန်ရက်သိုလှောင်မှုကို /var/lib/shared ရှိ Buildah ကွန်တိန်နာတွင် ထည့်သွင်းရန် လုံလောက်ပါပြီ - Buildah ကွန်တိန်နာများသည် ဆွဲထုတ်ခြင်းဖြင့် ပုံများကို ဒေါင်းလုဒ်လုပ်ရန် မလိုအပ်တော့ပါ။ ထို့ကြောင့် ကျွန်ုပ်တို့သည် လူဦးရေအကြိုအဆင့်ကို စွန့်ပစ်ကာ ကွန်တိန်နာများကို ထုတ်ပစ်ရန် ချက်ချင်းအဆင်သင့်ဖြစ်နေပါပြီ။

ပုံများကို ဒေါင်းလုဒ်ဆွဲစရာမလိုဘဲ မည်သည့်နေရာတွင်မဆို ကွန်တိန်နာများကို စတင်၍ လုပ်ဆောင်ရန်အတွက် ၎င်းကို တိုက်ရိုက် Kubernetes စနစ် သို့မဟုတ် ကွန်တိန်နာအခြေခံအဆောက်အအုံအတွင်းတွင် အသုံးပြုနိုင်သည်။ ထို့အပြင်၊ container registry သည် ၎င်းထံ မွမ်းမံထားသော ပုံတစ်ပုံကို အပ်လုဒ်လုပ်ရန် တွန်းအားပေးတောင်းဆိုမှုကို လက်ခံရရှိကာ ဤပုံကို မျှဝေထားသော ကွန်ရက်သိုလှောင်မှုသို့ အလိုအလျောက် ပေးပို့နိုင်ပြီး၊ ၎င်းသည် node အားလုံးတွင် ချက်ချင်းရရှိနိုင်မည်ဖြစ်သည်။

ကွန်တိန်နာပုံများသည် တစ်ခါတစ်ရံတွင် များစွာသော ဂစ်ဂါဘိုက်အရွယ်အစားအထိ ရောက်ရှိနိုင်သည်။ အပိုသိုလှောင်မှု၏လုပ်ဆောင်ချက်သည် node များတစ်လျှောက်တွင်ထိုကဲ့သို့သောပုံများကိုပုံတူပွားခြင်းကိုရှောင်ရှားရန်နှင့်စတင်သည့်ကွန်တိန်နာများကိုချက်ချင်းနီးပါးပြုလုပ်နိုင်သည်။

ထို့အပြင်၊ ကျွန်ုပ်တို့သည် လက်ရှိတွင် ကွန်တိန်နာများ တည်ဆောက်ခြင်းကို ပိုမိုမြန်ဆန်စေမည့် overlay volume mounts ဟုခေါ်သော အင်္ဂါရပ်အသစ်ကို လုပ်ဆောင်နေပါသည်။

ကောက်ချက်

Kubernetes/CRI-O၊ Podman သို့မဟုတ် Docker ရှိ ကွန်တိန်နာအတွင်း Buildah ကို run ခြင်းသည် docker.socket ကိုအသုံးပြုခြင်းထက် ဖြစ်နိုင်ချေ၊ ရိုးရှင်းပြီး များစွာပိုမိုလုံခြုံပါသည်။ ကျွန်ုပ်တို့သည် ရုပ်ပုံများနှင့် လုပ်ဆောင်ခြင်း၏ ပြောင်းလွယ်ပြင်လွယ်ကို အလွန်တိုးမြှင့်ထားသောကြောင့် ၎င်းတို့ကို လုံခြုံရေးနှင့် စွမ်းဆောင်ရည်အကြား ချိန်ခွင်လျှာကို အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ရန် နည်းလမ်းအမျိုးမျိုးဖြင့် ၎င်းတို့ကို လုပ်ဆောင်နိုင်သည်။

အပိုသိုလှောင်မှု၏လုပ်ဆောင်ချက်သည် သင့်အား node များသို့ ပုံများဒေါင်းလုဒ်ဆွဲခြင်းကို အရှိန်မြှင့်ရန် သို့မဟုတ် လုံးဝဖယ်ရှားပစ်နိုင်သည်။

source: www.habr.com

မှတ်ချက် Add