OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

အားလုံးပဲမင်္ဂလာပါ ဒီဘလော့ဂ်မှာ။ ဤသည်မှာ Red Hat OpenShift တွင် ခေတ်မီဝဘ်အက်ပလီကေးရှင်းများကို မည်သို့အသုံးချရမည်ကို ပြသသည့် စီးရီးတစ်ခု၏ တတိယမြောက် ပို့စ်ဖြစ်သည်။

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

ယခင်ပို့စ်နှစ်ခုတွင်၊ အဆင့်အနည်းငယ်အတွင်း ခေတ်မီဝဘ်အက်ပလီကေးရှင်းများကို မည်သို့အသုံးပြုရပုံနှင့် NGINX ကဲ့သို့သော စင်ပြင်ပရှိ HTTP ဆာဗာပုံနှင့်အတူ S2I ပုံအသစ်ကို အသုံးပြုနည်းကို ပြသခဲ့သည်။ .

ယနေ့ ကျွန်ုပ်တို့သည် OpenShift ပလပ်ဖောင်းတွင် သင့်အက်ပ်လီကေးရှင်းအတွက် ဖွံ့ဖြိုးတိုးတက်မှုဆာဗာကို မည်သို့လည်ပတ်ရမည်ကို ပြသမည်ဖြစ်ပြီး ၎င်းကို ဒေသဆိုင်ရာ ဖိုင်စနစ်နှင့် တစ်ပြိုင်တည်းလုပ်ဆောင်ရမည်ဖြစ်ပြီး OpenShift Pipelines သည် အဘယ်အရာဖြစ်ပြီး ၎င်းတို့ကို ချိတ်ဆက်ထားသော စည်းဝေးပွဲများအတွက် အစားထိုးအဖြစ် မည်သို့အသုံးပြုနိုင်ကြောင်းကိုလည်း ဆွေးနွေးမည်ဖြစ်သည်။

ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift

ဖွံ့ဖြိုးတိုးတက်ရေးလုပ်ငန်းစဉ်

တွင်ဖော်ပြထားသည့်အတိုင်းဖြစ်သည်။ ပထမပို့စ်ခေတ်မီဝဘ်အက်ပလီကေးရှင်းများအတွက် ပုံမှန်ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်သည် ဒေသတွင်းဖိုင်များသို့ ပြောင်းလဲမှုများကို ခြေရာခံသည့် "ဖွံ့ဖြိုးတိုးတက်မှုဆာဗာ" တစ်မျိုးဖြစ်သည်။ ၎င်းတို့ဖြစ်ပေါ်သောအခါ၊ အပလီကေးရှင်းတည်ဆောက်မှုကို အစပျိုးပြီးနောက် ၎င်းကို browser သို့ အပ်ဒိတ်လုပ်သည်။

ခေတ်မီဘောင်အများစုတွင်၊ ထိုကဲ့သို့သော "ဖွံ့ဖြိုးတိုးတက်မှုဆာဗာ" ကို သက်ဆိုင်ရာ command line tools များတွင် တည်ဆောက်ထားသည်။

ဒေသဆိုင်ရာ ဥပမာ

ပထမဦးစွာ၊ စက်တွင်းရှိ အက်ပ်လီကေးရှင်းများကို အသုံးပြုသည့်အခါ ၎င်းသည် မည်သို့အလုပ်လုပ်သည်ကို ကြည့်ကြပါစို့။ လျှောက်လွှာကို ဥပမာအနေနဲ့ ကြည့်ရအောင် တုံ့ပြန် ယခင်ဆောင်းပါးများမှ၊ အလုပ်အသွားအလာ သဘောတရားများသည် အခြားသော ခေတ်မီဘောင်အားလုံးတွင် အကျုံးဝင်လုနီးပါးဖြစ်သော်လည်း၊
ထို့ကြောင့် ကျွန်ုပ်တို့၏ React ဥပမာတွင် "dev server" ကို စတင်ရန်၊ အောက်ပါ command ကို ရိုက်ထည့်ပါမည်။

$ npm run start

ထို့နောက် terminal window တွင် ဤကဲ့သို့ တစ်ခုခုကို တွေ့ရလိမ့်မည်-

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

ကျွန်ုပ်တို့၏ အပလီကေးရှင်းသည် မူရင်းဘရောက်ဆာတွင် ဖွင့်ပါမည်-

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

ယခု ကျွန်ုပ်တို့သည် ဖိုင်ကို အပြောင်းအလဲလုပ်ပါက၊ အပလီကေးရှင်းသည် ဘရောက်ဆာတွင် အပ်ဒိတ်လုပ်သင့်သည်။

အိုကေ၊ ဒေသန္တရမုဒ်တွင် ဖွံ့ဖြိုးတိုးတက်မှုနှင့်အတူ အရာအားလုံး ရှင်းလင်းပြတ်သားသော်လည်း OpenShift တွင် တူညီအောင် မည်သို့ပြုလုပ်ရမည်နည်း။

OpenShift ရှိ ဖွံ့ဖြိုးတိုးတက်ရေးဆာဗာ

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

သို့သော် အနီးကပ်ကြည့်လျှင် script ကို run ပါ။ ထိုဥပမာမှ၊ သင့် command ကို execute လုပ်ခွင့်ပြုသည့် $NPM_RUN ဝန်းကျင် variable ပါရှိသည်။

ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့၏အပလီကေးရှင်းကိုအသုံးပြုရန် nodeshift module ကိုသုံးနိုင်သည်။

$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app

မှတ်ချက်- အထက်ဖော်ပြပါ ဥပမာသည် ယေဘူယျအယူအဆကို ဖော်ပြရန်အတွက် အတိုကောက်ဖြစ်သည်။

ဤတွင် ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ OpenShift pod အတွင်းရှိ React ဖွံ့ဖြိုးတိုးတက်မှုဆာဗာကို စတင်သည့် yarn start command ကိုဖွင့်ရန် runtime ကိုပြောပြသော ကျွန်ုပ်တို့၏အသုံးချမှုတွင် NPM_RUN ပတ်ဝန်းကျင် variable ကိုထည့်သွင်းထားပါသည်။

Running pod ၏ မှတ်တမ်းကို ကြည့်ပါက၊ ၎င်းသည် ဤကဲ့သို့ ဖြစ်သည်-

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

ဟုတ်ပါတယ်၊၊ အပြောင်းအလဲတွေအတွက်လည်း စောင့်ကြည့်ပေးမယ့် ကုဒ်နဲ့ local code ကို synchronize မလုပ်မချင်း၊ ဒါက ဘာမှဖြစ်မှာမဟုတ်ပါဘူး။

အဝေးထိန်းနှင့် စက်တွင်းကုဒ်ကို စင့်ခ်လုပ်နေသည်။

ကံကောင်းထောက်မစွာ၊ nodeshift သည် ထပ်တူပြုခြင်းအတွက် အလွယ်တကူ ကူညီပေးနိုင်ပြီး အပြောင်းအလဲများကို ခြေရာခံရန် watch command ကို အသုံးပြုနိုင်ပါသည်။

ထို့ကြောင့် ကျွန်ုပ်တို့၏အပလီကေးရှင်းအတွက် ဖွံ့ဖြိုးတိုးတက်မှုဆာဗာကို အသုံးချရန် အမိန့်ကို ကျွန်ုပ်တို့ run ပြီးနောက်၊ ကျွန်ုပ်တို့သည် အောက်ပါ command ကို ဘေးကင်းစွာ အသုံးပြုနိုင်ပါသည်။

$ npx nodeshift watch

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

ထို့ကြောင့်၊ ယခု ကျွန်ုပ်တို့သည် src/App.js ဖိုင်ကို အပ်ဒိတ်လုပ်ပါက၊ စနစ်သည် ဤအပြောင်းအလဲများကို တုံ့ပြန်ပြီး၊ ၎င်းတို့ကို အဝေးထိန်း အစုအဝေးသို့ ကူးယူပြီး ဖွံ့ဖြိုးတိုးတက်မှုဆာဗာကို စတင်ပါ၊ ထို့နောက် ကျွန်ုပ်တို့၏ အပလီကေးရှင်းကို ဘရောက်ဆာတွင် အပ်ဒိတ်လုပ်ပါမည်။

ပုံပြီးအောင်လုပ်ဖို့၊ ဒီ command တစ်ခုလုံးက ဘယ်လိုပုံစံလဲဆိုတာ ပြကြည့်ရအောင်။

$ npx nodeshift --strictSSL=false --dockerImage=nodeshift/ubi8-s2i-web-app --build.env YARN_ENABLED=true --expose --deploy.env NPM_RUN="yarn start" --deploy.port 3000

$ npx nodeshift watch --strictSSL=false

နာရီ command သည် oc rsync command ၏ထိပ်တွင် abstraction ဖြစ်ပြီး၊ ၎င်းအလုပ်လုပ်ပုံကို သင်ပိုမိုလေ့လာနိုင်ပါသည်။ ဒီမှာ.

၎င်းသည် React အတွက် ဥပမာတစ်ခုဖြစ်သည်၊ သို့သော် အတိအကျတူညီသောနည်းလမ်းကို အခြားသော framework များနှင့် အသုံးပြုနိုင်ပြီး NPM_RUN ပတ်၀န်းကျင် variable ကို လိုအပ်သလို သတ်မှတ်လိုက်ပါ။

Openshift ပိုက်လိုင်းများ

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

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

OpenShift Pipelines ဆိုတာ ဘာလဲ။

OpenShift Pipelines သည် Tekton ကို အသုံးပြု၍ ပိုက်လိုင်းများကို စုစည်းရန်အတွက် ဒီဇိုင်းထုတ်ထားသည့် cloud-native CI/CD စဉ်ဆက်မပြတ်ပေါင်းစပ်မှုနှင့် ပေးပို့မှုစနစ်တစ်ခုဖြစ်သည်။ Tekton သည် အခြေခံအလွှာမှ နုတ်ထွက်ခြင်းဖြင့် အမျိုးမျိုးသော ပလက်ဖောင်းများ (Kubernetes၊ serverless၊ virtual machines စသည်တို့) တွင် သင့်အား အလိုအလျောက် ဖြန့်ကျက်ခွင့်ပြုသည့် လိုက်လျောညီထွေရှိသော ပွင့်လင်းအရင်းအမြစ် Kubernetes-ဇာတိ CI/CD မူဘောင်တစ်ခုဖြစ်သည်။

ဤဆောင်းပါးကိုနားလည်ရန် Pipelines နှင့်ပတ်သက်သော ဗဟုသုတအချို့ လိုအပ်ပါသည်၊ ထို့ကြောင့် သင့်အား ဦးစွာဖတ်ရန် ကျွန်ုပ်တို့ အလေးအနက် အကြံပြုအပ်ပါသည်။ တရားဝင်ဖတ်စာအုပ်.

သင့်အလုပ်ပတ်ဝန်းကျင်ကို သတ်မှတ်ခြင်း။

ဤဆောင်းပါးပါ နမူနာများဖြင့် ကစားရန်၊ သင့်လုပ်ငန်းခွင်ပတ်ဝန်းကျင်ကို ဦးစွာပြင်ဆင်ရန် လိုအပ်သည်-

  1. OpenShift 4 အစုအဝေးတစ်ခုကို ထည့်သွင်းပြီး ပြင်ဆင်သတ်မှတ်ပါ။ ဤအတွက် ကျွန်ုပ်တို့၏နမူနာများက CodeReady Containers (CRD) ကို အသုံးပြုပြီး၊ တွေ့ရှိနိုင်သည့် တပ်ဆင်မှုလမ်းညွှန်ချက်များ ဒီမှာ.
  2. အစုအဝေး အဆင်သင့်ဖြစ်ပြီးနောက်၊ ၎င်းတွင် Pipeline Operator ကို ထည့်သွင်းရန် လိုအပ်သည်။ မစိုးရိမ်ပါနဲ့၊ တပ်ဆင်နည်းက လွယ်ပါတယ်။ ဒီမှာ.
  3. ဒေါင်းလုပ် Tekton CLI (tkn) ဒီမှာ.
  4. ထို့နောက် သင်အသုံးပြုမည့် အက်ပလီကေးရှင်းကို ဖန်တီးရန် ဖန်တီး-တုံ့ပြန်-အက်ပ် ကွန်မန်းလိုင်းတူးလ်ကို လုပ်ဆောင်ပါ (၎င်းသည် ရိုးရှင်းသော အပလီကေးရှင်းတစ်ခုဖြစ်သည်။ တုံ့ပြန်).
  5. (ချန်လှပ်ထားနိုင်သည်) npm ထည့်သွင်းပြီးနောက် npm စတင်ခြင်းဖြင့် ဥပမာအပလီကေးရှင်းကို စက်တွင်းတွင် run ရန် repository ကို Clone လုပ်ပါ။

အပလီကေးရှင်းသိုလှောင်မှုတွင် အပလီကေးရှင်းကိုအသုံးချရန်အသုံးပြုသည့် Kubernetes/OpenShift YAMLs များပါရှိသော k8s ဖိုင်တွဲတစ်ခုလည်း ပါရှိသည်။ ဤတွင် ကျွန်ုပ်တို့ဖန်တီးမည့် Tasks၊ ClusterTasks၊ Resources နှင့် Pipelines များ ရှိပါမည်။ သိုလှောင်မှုများ.

စလိုက်ကြစို့

ကျွန်ုပ်တို့၏နမူနာအတွက် ပထမအဆင့်မှာ OpenShift အစုအဝေးတွင် ပရောဂျက်အသစ်တစ်ခုကို ဖန်တီးရန်ဖြစ်သည်။ ဤပရောဂျက်ကို webapp-pipeline ဟုခေါ်ပြီး အောက်ပါ command ဖြင့် ဖန်တီးကြပါစို့။

$ oc new-project webapp-pipeline

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

ဒီတော့ ပထမဆုံးအနေနဲ့...

လုပ်ငန်းတာဝန်များ

ကျွန်ုပ်တို့၏ပိုက်လိုင်းအတွင်း အပလီကေးရှင်းကို အသုံးချနိုင်စေမည့် အလုပ်နှစ်ခုကို ဖန်တီးကြပါစို့။ ပထမအလုပ် - apply_manifests_task - သည် ကျွန်ုပ်တို့၏ အပလီကေးရှင်း၏ k8s ဖိုင်တွဲတွင်ရှိသော ထို Kubernetes အရင်းအမြစ်များ (ဝန်ဆောင်မှု၊ အသုံးချမှုနှင့် လမ်းကြောင်း) ၏ YAML ကို အသုံးပြုရန်အတွက် တာဝန်ရှိပါသည်။ ဒုတိယတာဝန် - update_deployment_task - သည် ကျွန်ုပ်တို့၏ပိုက်လိုင်းမှ ဖန်တီးထားသော ပုံတစ်ပုံကို အပ်ဒိတ်လုပ်ထားပြီးသား ပုံတစ်ပုံကို အပ်ဒိတ်လုပ်ရန် တာဝန်ရှိပါသည်။

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

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/update_deployment_task.yaml
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/apply_manifests_task.yaml

ထို့နောက် tkn CLI အမိန့်ကို အသုံးပြု၍ အလုပ်များကို ဖန်တီးထားကြောင်း စစ်ဆေးပါမည်။

$ tkn task ls

NAME                AGE
apply-manifests     1 minute ago
update-deployment   1 minute ago

မှတ်ချက်- ဤအရာများသည် သင့်လက်ရှိပရောဂျက်အတွက် ဒေသဆိုင်ရာတာဝန်များဖြစ်သည်။

အစုအဖွဲ့အလုပ်များ

အစုလိုက်လုပ်ဆောင်စရာများသည် အခြေခံအားဖြင့် ရိုးရှင်းသောအလုပ်များနှင့် အတူတူပင်ဖြစ်သည်။ ဆိုလိုသည်မှာ၊ ၎င်းသည် သီးခြားလုပ်ငန်းတစ်ခုကို လုပ်ဆောင်သည့်အခါ တစ်နည်းမဟုတ် တစ်နည်းဖြင့် ပေါင်းစပ်ထားသော ပြန်လည်အသုံးပြုနိုင်သော အဆင့်များစုစည်းမှုဖြစ်သည်။ ခြားနားချက်မှာ အစုလိုက်လုပ်ဆောင်စရာတစ်ခုကို အစုအဝေးအတွင်း နေရာတိုင်းတွင် ရရှိနိုင်သည်။ ပိုက်လိုင်းအော်ပရေတာထည့်သည့်အခါ အလိုအလျောက်ဖန်တီးထားသည့် အစုလိုက်လုပ်ဆောင်စရာများစာရင်းကို ကြည့်ရန်၊ ကျွန်ုပ်တို့သည် tkn CLI ညွှန်ကြားချက်ကို ထပ်မံအသုံးပြုပါမည်-

$ tkn clustertask ls

NAME                       AGE
buildah                    1 day ago
buildah-v0-10-0            1 day ago
jib-maven                  1 day ago
kn                         1 day ago
maven                      1 day ago
openshift-client           1 day ago
openshift-client-v0-10-0   1 day ago
s2i                        1 day ago
s2i-go                     1 day ago
s2i-go-v0-10-0             1 day ago
s2i-java-11                1 day ago
s2i-java-11-v0-10-0        1 day ago
s2i-java-8                 1 day ago
s2i-java-8-v0-10-0         1 day ago
s2i-nodejs                 1 day ago
s2i-nodejs-v0-10-0         1 day ago
s2i-perl                   1 day ago
s2i-perl-v0-10-0           1 day ago
s2i-php                    1 day ago
s2i-php-v0-10-0            1 day ago
s2i-python-3               1 day ago
s2i-python-3-v0-10-0       1 day ago
s2i-ruby                   1 day ago
s2i-ruby-v0-10-0           1 day ago
s2i-v0-10-0                1 day ago

ယခု အစုလိုက်လုပ်ဆောင်စရာနှစ်ခုကို ဖန်တီးကြပါစို့။ ပထမတစ်ခုသည် S2I ရုပ်ပုံအား ထုတ်လုပ်ပြီး အတွင်းပိုင်း OpenShift မှတ်ပုံတင်ခြင်းသို့ ပေးပို့မည်ဖြစ်သည်။ ဒုတိယအချက်မှာ ကျွန်ုပ်တို့၏အကြောင်းအရာအဖြစ် ကျွန်ုပ်တို့တည်ဆောက်ထားပြီးဖြစ်သော အက်ပ်ကိုအသုံးပြု၍ ကျွန်ုပ်တို့၏ရုပ်ပုံကို NGINX ကိုအခြေခံ၍ တည်ဆောက်ရန်ဖြစ်သည်။

ပုံကိုဖန်တီးပြီး ပေးပို့ပါ။

ပထမလုပ်ငန်းတာဝန်ကို ဖန်တီးသောအခါ၊ ချိတ်ဆက်ထားသော စည်းဝေးပွဲများအကြောင်း ယခင်ဆောင်းပါးတွင် လုပ်ထားပြီးဖြစ်သည့်အတိုင်း ပြန်လုပ်ပါမည်။ ကျွန်ုပ်တို့၏အပလီကေးရှင်းကိုတည်ဆောက်ရန်အတွက် S2I ရုပ်ပုံ (ubi8-s2i-web-app) ကိုအသုံးပြုခဲ့ပြီး OpenShift အတွင်းပိုင်းမှတ်ပုံတင်ခြင်းတွင်သိမ်းဆည်းထားသောပုံတစ်ခုနှင့်အဆုံးသတ်ခဲ့သည်ကိုသတိရပါ။ ယခုကျွန်ုပ်တို့သည်ကျွန်ုပ်တို့၏အက်ပ်အတွက် DockerFile တစ်ခုဖန်တီးရန် ဤ S2I ဝဘ်အက်ပ်ပုံကိုအသုံးပြုပြီး အမှန်တကယ်တည်ဆောက်မှုပြုလုပ်ရန် Buildah ကိုအသုံးပြုကာ ရလဒ်ကို OpenShift အတွင်းပိုင်းမှတ်ပုံတင်ခြင်းသို့တွန်းပို့မည်ဖြစ်သောကြောင့်၊ သင်၏အပလီကေးရှင်းများကိုအသုံးပြုသည့်အခါ OpenShift သည်အတိအကျလုပ်ဆောင်သည်ဖြစ်သောကြောင့်၊ .

ဒါတွေအားလုံးကို ငါတို့ဘယ်လိုသိတာလဲ မင်းမေးတယ်။ ထံမှ တရားဝင် Node.js ၏တရားဝင်ဗားရှင်းကျွန်ုပ်တို့သည် ၎င်းကို ကူးယူပြီး ကိုယ်တိုင်ပြင်ဆင်ပါသည်။

ဒါဆို အခု s2i-web-app cluster task ကို ဖန်တီးလိုက်ကြရအောင်။

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml

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

params:
      - name: OUTPUT_DIR
        description: The location of the build output directory
        default: build

မူရင်းအားဖြင့်၊ ဤကန့်သတ်ချက်သည် တည်ဆောက်ရန် ညီမျှသည်၊ ၎င်းသည် React သည် စုစည်းထားသော အကြောင်းအရာကို ထည့်သွင်းသည့်နေရာတွင် ဖြစ်သည်။ အခြားသော မူဘောင်များသည် မတူညီသောလမ်းကြောင်းများကို အသုံးပြုသည်၊ ဥပမာ၊ Ember တွင် ၎င်းသည် ဝေးကွာသည်။ ကျွန်ုပ်တို့၏ ပထမဆုံးအစုလိုက်လုပ်ငန်းဆောင်တာ၏ ရလဒ်သည် ကျွန်ုပ်တို့စုဆောင်းထားသော HTML၊ JavaScript နှင့် CSS ပါ၀င်သည့် ပုံဖြစ်လိမ့်မည်။

NGINX ကိုအခြေခံ၍ ပုံတစ်ပုံတည်ဆောက်ပါ။

ကျွန်ုပ်တို့၏ဒုတိယအစုအဖွဲ့တာဝန်အတွက်၊ ကျွန်ုပ်တို့တည်ဆောက်ထားပြီးဖြစ်သော အပလီကေးရှင်း၏အကြောင်းအရာကိုအသုံးပြု၍ ကျွန်ုပ်တို့အတွက် NGINX-based ရုပ်ပုံတစ်ခုတည်ဆောက်သင့်သည်။ အခြေခံအားဖြင့်၊ ဤသည်မှာ သံကြိုးများဖြင့် ချည်နှောင်ထားသော တည်ဆောက်မှုများကို ကြည့်ရှုခဲ့သည့် ယခင်အပိုင်း၏ အစိတ်အပိုင်းဖြစ်သည်။

ဒါကိုလုပ်ဖို့၊ ကျွန်ုပ်တို့ - အထက်ဖော်ပြပါအတိုင်းပါပဲ - အစုလိုက်လုပ်ဆောင်စရာ webapp-build-runtime ကို ဖန်တီးပါမည်-

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml

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

ပြီး​တော့ ကျွန်​​တော်​တို့က ​နောက်​တစ်​ခုကို ​ကောင်း​ကောင်း​လေး ဆက်​​လျှောက်​သွား​တော့...

အရင်းမြစ်များ

ထို့ကြောင့်၊ ကျွန်ုပ်တို့ပြောခဲ့သည့်အတိုင်း၊ အစုလိုက်လုပ်ဆောင်စရာများကို တတ်နိုင်သမျှ ယေဘူယျဖြစ်သင့်သောကြောင့် ကျွန်ုပ်တို့သည် input (Git repository) နှင့် output (နောက်ဆုံးပုံများ) အဖြစ် အသုံးပြုမည့် အရင်းအမြစ်များကို ဖန်တီးရန်လိုအပ်ပါသည်။ ကျွန်ုပ်တို့လိုအပ်သော ပထမဆုံးအရင်းအမြစ်မှာ ကျွန်ုပ်တို့၏အပလီကေးရှင်းတည်ရှိရာ Git ဖြစ်ပြီး၊

# This resource is the location of the git repo with the web application source
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
  name: web-application-repo
spec:
  type: git
  params:
    - name: url
      value: https://github.com/nodeshift-starters/react-pipeline-example
    - name: revision
      value: master

ဤတွင် PipelineResource သည် git အမျိုးအစားဖြစ်သည်။ ဘောင်များကဏ္ဍရှိ url ကီးသည် တိကျသောသိုလှောင်ရေးဌာနသို့ ညွှန်ပြပြီး မာစတာဌာနခွဲကို သတ်မှတ်ပေးသည် (၎င်းသည် ရွေးချယ်နိုင်သော်လည်း ပြီးပြည့်စုံမှုအတွက် ကျွန်ုပ်တို့ ရေးထားသည်)။

ယခု ကျွန်ုပ်တို့သည် s2i-web-app လုပ်ငန်းဆောင်တာ၏ ရလဒ်များကို သိမ်းဆည်းမည့် ပုံအတွက် အရင်းအမြစ်တစ်ခု ဖန်တီးရန် လိုအပ်သည်၊ ၎င်းသည် ဤကဲ့သို့ လုပ်ဆောင်သည်-

# This resource is the result of running "npm run build",  the resulting built files will be located in /opt/app-root/output
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
  name: built-web-application-image
spec:
  type: image
  params:
    - name: url
      value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-application:latest

ဤနေရာတွင် PipelineResource သည် အမျိုးအစားပုံဖြစ်ပြီး၊ url ဘောင်၏တန်ဖိုးသည် အထူးသဖြင့် webapp-pipeline namespace တွင်ရှိသော အတွင်းပိုင်း OpenShift Image Registry ကိုညွှန်ပြသည်။ မတူညီသော namespace ကိုအသုံးပြုနေပါက ဤဆက်တင်ကိုပြောင်းရန် မမေ့ပါနှင့်။

နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့လိုအပ်သော နောက်ဆုံးအရင်းအမြစ်သည် အမျိုးအစားပုံဖြစ်မည်ဖြစ်ပြီး ၎င်းသည် အသုံးချမှုအတွင်း အသုံးပြုမည့် နောက်ဆုံး NGINX ပုံဖြစ်လိမ့်မည်-

# This resource is the image that will be just the static html, css, js files being run with nginx
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
  name: runtime-web-application-image
spec:
  type: image
  params:
    - name: url
      value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtime-web-application:latest

တဖန်၊ ဤရင်းမြစ်သည် webapp-pipeline namespace ရှိ အတွင်းပိုင်း OpenShift registry တွင် ပုံအား သိမ်းဆည်းထားကြောင်း သတိပြုပါ။

ဤအရင်းအမြစ်အားလုံးကို တစ်ပြိုင်နက်ဖန်တီးရန် ကျွန်ုပ်တို့သည် ဖန်တီးမိန့်ကို အသုံးပြုသည်-

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml

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

$ tkn resource ls

Conveyor ပိုက်လိုင်း

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

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml

ဒါပေမယ့် ဒီ command ကို မ run ခင် ဒီ components တွေကို ကြည့်ရအောင်။ ပထမအမည်မှာ-

apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
  name: build-and-deploy-react

ထို့နောက် spec ကဏ္ဍတွင် ကျွန်ုပ်တို့ အစောပိုင်းက ဖန်တီးထားသော အရင်းအမြစ်များကို ညွှန်ပြသည်ကို တွေ့ရသည်-

spec:
  resources:
    - name: web-application-repo
      type: git
    - name: built-web-application-image
      type: image
    - name: runtime-web-application-image
      type: image

ထို့နောက် ကျွန်ုပ်တို့၏ ပိုက်လိုင်း ပြီးမြောက်ရန် လိုအပ်သည့် အလုပ်များကို ဖန်တီးပါ။ ပထမဦးစွာ၊ ၎င်းသည် ကျွန်ုပ်တို့ဖန်တီးထားပြီးဖြစ်သော s2i-web-app လုပ်ငန်းကို လုပ်ဆောင်ရပါမည်။

tasks:
    - name: build-web-application
      taskRef:
        name: s2i-web-app
        kind: ClusterTask

ဤတာဝန်သည် ထည့်သွင်းမှု (gir အရင်းအမြစ်) နှင့် အထွက် (built-web-application-image resource) ဘောင်များကို ယူသည်။ ကျွန်ုပ်တို့သည် ၎င်းကို ကိုယ်တိုင်လက်မှတ်ထိုးထားသော လက်မှတ်များကို အသုံးပြုနေသောကြောင့် ၎င်းသည် TLS ကို အတည်မပြုနိုင်စေရန် အထူးကန့်သတ်ဘောင်တစ်ခုကိုလည်း ဖြတ်သန်းပါသည်။

resources:
        inputs:
          - name: source
            resource: web-application-repo
        outputs:
          - name: image
            resource: built-web-application-image
      params:
        - name: TLSVERIFY
          value: "false"

နောက်လုပ်စရာက အတူတူနီးပါးပါပဲ၊ ကျွန်တော်တို့ ဖန်တီးပြီးဖြစ်တဲ့ webapp-build-runtime cluster task ကို ဒီနေရာမှာပဲ ခေါ်ပါတယ်-

name: build-runtime-image
    taskRef:
      name: webapp-build-runtime
      kind: ClusterTask

ယခင်အလုပ်ကဲ့သို့ပင်၊ ကျွန်ုပ်တို့သည် အရင်းအမြစ်တစ်ခုဖြင့် ဖြတ်သန်းခဲ့သော်လည်း ယခုအခါ ၎င်းသည် တည်ဆောက်ထားသော ဝဘ်-အက်ပ်လီကေးရှင်း-ရုပ်ပုံ (ကျွန်ုပ်တို့၏ယခင်လုပ်ဆောင်မှု၏ ရလဒ်) ဖြစ်သည်။ ပြီးတော့ output တစ်ခုအနေနဲ့ ပုံကို ထပ်ပြီး သတ်မှတ်ပါတယ်။ ဤတာဝန်ကို ယခင်တစ်ခုပြီးနောက် လုပ်ဆောင်ရမည်ဖြစ်သောကြောင့်၊ ကျွန်ုပ်တို့သည် runAfter အကွက်ကို ထည့်သည်-

resources:
        inputs:
          - name: image
            resource: built-web-application-image
        outputs:
          - name: image
            resource: runtime-web-application-image
        params:
        - name: TLSVERIFY
          value: "false"
      runAfter:
        - build-web-application

နောက်ထပ်လုပ်ဆောင်စရာနှစ်ခုမှာ ကျွန်ုပ်တို့၏ဝဘ်အက်ပ်လီကေးရှင်း၏ k8s လမ်းညွှန်တွင်နေထိုင်သည့် ဝန်ဆောင်မှု၊ လမ်းကြောင်းနှင့် ဖြန့်ကျက်ခြင်း YAML ဖိုင်များကို အသုံးပြုခြင်းနှင့် ပုံအသစ်များဖန်တီးသည့်အခါ ဤအသုံးချမှုကို အပ်ဒိတ်လုပ်ခြင်းတို့အတွက် တာဝန်ရှိပါသည်။ ဆောင်းပါးအစတွင် ဤအစုအဖွဲ့အလုပ်နှစ်ခုကို ကျွန်ုပ်တို့သတ်မှတ်ထားသည်။

Conveyor စတင်ခြင်း။

ထို့ကြောင့်၊ ကျွန်ုပ်တို့၏ ပိုက်လိုင်း၏ အစိတ်အပိုင်းအားလုံးကို ဖန်တီးထားပြီး၊ ၎င်းကို အောက်ပါ command ဖြင့် လုပ်ဆောင်ပါမည်။

$ tkn pipeline start build-and-deploy-react

ဤအဆင့်တွင်၊ command line ကို အပြန်အလှန်အကျိုးသက်ရောက်စွာအသုံးပြုပြီး ၎င်း၏တောင်းဆိုမှုတစ်ခုစီအတွက် သင့်လျော်သောအရင်းအမြစ်များကို သင်ရွေးချယ်ရန်လိုအပ်သည်- git အရင်းအမြစ်အတွက်၊ web-application-repo ကိုရွေးချယ်ပါ၊ ထို့နောက် ပထမဆုံး image resource၊ built-web-application -image နှင့် နောက်ဆုံးတွင်၊ ဒုတိယပုံအရင်းအမြစ် -runtime-web-application-image အတွက်၊

? Choose the git resource to use for web-application-repo: web-application-repo (https://github.com/nodeshift-starters/react-pipeline-example)
? Choose the image resource to use for built-web-application-image: built-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-
application:latest)
? Choose the image resource to use for runtime-web-application-image: runtime-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtim
e-web-application:latest)
Pipelinerun started: build-and-deploy-react-run-4xwsr

ယခု အောက်ပါ command ကို အသုံးပြု၍ ပိုက်လိုင်း၏ အခြေအနေကို စစ်ဆေးကြည့်ကြပါစို့။

$ tkn pipeline logs -f

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

$ oc get route react-pipeline-example --template='http://{{.spec.host}}'

ပိုမိုမြင်သာစေရန်အတွက်၊ ကဏ္ဍရှိ ဝဘ်ကွန်ဆိုးလ်၏ ဆော့ဖ်ဝဲအင်ဂျင်နီယာမုဒ်တွင် ကျွန်ုပ်တို့၏ပိုက်လိုင်းကို ကြည့်ရှုနိုင်ပါသည်။ ပိုက်လိုင်းများပုံတွင်ပြထားသည့်အတိုင်း၊ ၁။

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

ပုံ.၁။ သွယ်တန်းထားသော ပိုက်လိုင်းများ ပြန်လည်သုံးသပ်ခြင်း။

လည်ပတ်နေသော ပိုက်လိုင်းကို နှိပ်ခြင်းဖြင့် ပုံ 2 တွင် ပြထားသည့်အတိုင်း နောက်ထပ်အသေးစိတ်အချက်အလက်များကို ပြသသည်။

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

ထမင်း။ 2. ပိုက်လိုင်းအကြောင်း နောက်ထပ်အချက်အလက်များ။

ပိုမိုသိရှိပြီးနောက်၊ သင်သည် မြင်ကွင်းထဲတွင် လည်ပတ်နေသည့်အက်ပ်များကို မြင်နိုင်သည်။ topologyFig.3 တွင်ပြထားသည့်အတိုင်း။

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

Fig 3. Launched pod.

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

OpenShift၊ အပိုင်း 3- ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်အဖြစ် OpenShift နှင့် OpenShift Pipelines တွင် ခေတ်မီအက်ပ်လီကေးရှင်းများ

ထမင်း။ 4. React အပလီကေးရှင်းကို လုပ်ဆောင်ခြင်း။

ကောက်ချက်

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

အပိုအရင်းအမြစ်များ (EN)

လာမည့် webinars များ၏ကြေငြာချက်များ

Red Hat OpenShift Container Platform နှင့် Kubernetes ကိုအသုံးပြုသည့် မူရင်းအတွေ့အကြုံအကြောင်း သောကြာနေ့ webinars များကို ကျွန်ုပ်တို့ စတင်နေပါသည်။

source: www.habr.com

မှတ်ချက် Add