Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ

ကျွန်ုပ်တို့၏တောင်းဆိုချက်အရ Habr သည် ဗဟိုချက်တစ်ခုဖန်တီးခဲ့သည်။ Kubernetes ပြီးတော့ ပထမဆုံး ထုတ်ဝေတာကို ကျေနပ်ပါတယ်။ စာရင်းသွင်းပါ။

Kubernetes သည် လွယ်ကူသည်။ နာရီအနည်းငယ်အတွင်း မည်သူမဆို ဤနည်းပညာကို ကျွမ်းကျင်နိုင်သော်လည်း ဤဒေသတွင် အလုပ်လုပ်ရန် ဘဏ်များသည် ကျွန်ုပ်အား အဘယ်ကြောင့် ငွေအမြောက်အများပေးကြသနည်း။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ

Kubernetes သည် အလွန်လျင်မြန်စွာ လေ့လာနိုင်သည်ဟု သင်သံသယရှိပါက၊ သင်ကိုယ်တိုင် ကြိုးစားလုပ်ဆောင်ရန် အကြံပြုအပ်ပါသည်။ ဆိုလိုသည်မှာ၊ ဤပစ္စည်းကို ကျွမ်းကျင်ပြီး Kubernetes အစုအဝေးရှိ microservices များကို အခြေခံ၍ အပလီကေးရှင်းတစ်ခုကို သင် run နိုင်မည်ဖြစ်သည်။ ကျွန်ုပ်သည် ဤနေရာတွင် ကျွန်ုပ်အသုံးပြုသည့် တူညီသောနည်းစနစ်တွင် ပါရှိသောကြောင့် ကျွန်ုပ်သည် ကျွန်ုပ်တို့၏ဖောက်သည်များအား Kubernetes နှင့် မည်သို့အလုပ်လုပ်ရမည်နည်း။ ဤလမ်းညွှန်ချက်သည် အခြားသူများနှင့် မည်သို့ကွာခြားသနည်း။ တကယ်တော့ အများကြီးပဲ။ ထို့ကြောင့်၊ ဤပစ္စည်းများအများစုသည် Kubernetes ၏သဘောတရားများနှင့် kubectl command ၏အင်္ဂါရပ်များဖြစ်သော ရိုးရှင်းသောအရာများကို ရှင်းလင်းချက်ဖြင့် စတင်သည်။ ဤဆောင်းပါးများ၏ရေးသားသူများသည် ၎င်းတို့၏စာဖတ်သူသည် အပလီကေးရှင်းဖွံ့ဖြိုးတိုးတက်မှု၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် Docker containers တို့နှင့် ရင်းနှီးသည်ဟု ယူဆသည်။ ငါတို့ တခြားလမ်းကို သွားမယ်။ ပထမဦးစွာ၊ ကွန်ပျူတာရှိ မိုက်ခရိုဆားဗစ်များကို အခြေခံ၍ အက်ပလီကေးရှင်းတစ်ခုအား မည်သို့လုပ်ဆောင်ရမည်ကို ဆွေးနွေးကြပါစို့။ ထို့နောက် microservice တစ်ခုစီအတွက် ကွန်တိန်နာပုံများ တည်ဆောက်ခြင်းကို ကြည့်ရှုပါမည်။ ၎င်းနောက်၊ ကျွန်ုပ်တို့သည် Kubernetes နှင့် ရင်းနှီးပြီး Kubernetes မှ စီမံခန့်ခွဲသည့် အစုအဝေးရှိ microservices များကို အခြေခံ၍ အပလီကေးရှင်းတစ်ခု၏ ဖြန့်ကျက်မှုကို ပိုင်းခြားစိတ်ဖြာပါမည်။

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

ကဲ နောက်ထပ်မသဲကွဲဘဲ၊ ငါတို့နဲ့အလုပ်လုပ်မယ့် application အကြောင်းပြောကြရအောင်။

စမ်းသပ်အက်ပ်

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

ဤသည်မှာ ဤအပလီကေးရှင်း၏ ပင်မဝင်းဒိုးပုံစံဖြစ်သည်။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
စိတ်သဘောထား ဆန်းစစ်ခြင်း ဝဘ်အက်ပလီကေးရှင်း

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

  • SA-Frontend သည် React static ဖိုင်များကို ဆောင်ရွက်ပေးသည့် Nginx ဝဘ်ဆာဗာတစ်ခုဖြစ်သည်။
  • SA-WebApp သည် ရှေ့တန်းမှ တောင်းဆိုချက်များကို ကိုင်တွယ်သည့် Java တွင် ရေးသားထားသော ဝဘ်အက်ပလီကေးရှင်းတစ်ခုဖြစ်သည်။
  • SA-Logic သည် စာသားခံစားချက်ကို ပိုင်းခြားစိတ်ဖြာမှုလုပ်ဆောင်သည့် Python အပလီကေးရှင်းတစ်ခုဖြစ်သည်။

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

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
လျှောက်လွှာတွင်ဒေတာစီးဆင်းသည်။

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

  1. ဘရောက်ဆာသည် ဆာဗာမှ ဖိုင်တစ်ခု တောင်းဆိုသည်။ index.html (ထိုအရာက React အက်ပ်ပက်ကေ့ချ်ကို တင်သည်)။
  2. အသုံးပြုသူသည် အပလီကေးရှင်းနှင့် အပြန်အလှန် တုံ့ပြန်နိုင်ပြီး၊ ၎င်းသည် Spring ကို အခြေခံ၍ ဝဘ်အက်ပလီကေးရှင်းသို့ ခေါ်ဆိုမှုကို ဖြစ်စေသည်။
  3. ဝဘ်အက်ပလီကေးရှင်းသည် စာသားကိုခွဲခြမ်းစိတ်ဖြာရန် တောင်းဆိုချက်ကို Python အပလီကေးရှင်းသို့ ပေးပို့သည်။
  4. Python အပလီကေးရှင်းသည် စာသား၏ ခံစားချက်ကို ပိုင်းခြားစိတ်ဖြာပြီး တောင်းဆိုချက်ကို တုံ့ပြန်သည့်အနေဖြင့် ရလဒ်ကို ပြန်ပေးသည်။
  5. Spring အပလီကေးရှင်းသည် React အပလီကေးရှင်းထံသို့ တုံ့ပြန်မှုတစ်ခု ပေးပို့သည် (ထို့နောက်၊ ၎င်းသည် ခွဲခြမ်းစိတ်ဖြာထားသော စာသား၏ရလဒ်ကို အသုံးပြုသူထံ ပြသသည်)။

ဤအပလီကေးရှင်းအားလုံးအတွက် ကုဒ်ကို တွေ့နိုင်သည်။ ဒီမှာ. ကျွန်ုပ်တို့ရှေ့တွင် ၎င်းနှင့်စိတ်ဝင်စားစရာကောင်းသော စမ်းသပ်မှုများများစွာရှိသောကြောင့် ဤ repository ကို ယခုသင်ကိုယ်တိုင်ကူးယူရန် အကြံပြုလိုပါသည်။

စက်တွင်းရှိ မိုက်ခရိုဝန်ဆောင်မှုများကို အခြေခံ၍ အက်ပ်တစ်ခုအား လုပ်ဆောင်ခြင်း။

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

▍ ဒေသဖွံ့ဖြိုးတိုးတက်မှုအတွက် React ကို စနစ်ထည့်သွင်းခြင်း။

React အပလီကေးရှင်းကို run ရန်အတွက်၊ သင်သည် Node.js framework နှင့် NPM ကို သင့်ကွန်ပျူတာပေါ်တွင် ထည့်သွင်းရန်လိုအပ်သည်။ သင်ဤအရာအားလုံးကိုထည့်သွင်းပြီးနောက်၊ ပရောဂျက်ဖိုင်တွဲသို့ terminal ကိုအသုံးပြုပါ။ sa-frontend အောက်ပါ command ကို run ပါ။

npm install

ဖိုင်တွဲတွင် ဤအမိန့်ကို အကောင်အထည်ဖော်ခြင်းဖြင့် node_modules React အပလီကေးရှင်း၏မှီခိုမှုများ၊ ဖိုင်တွင်ပါရှိသောမှတ်တမ်းများကိုတင်လိမ့်မည်။ package.json. တူညီသောဖိုင်တွဲရှိမှီခိုအားဒေါင်းလုဒ်လုပ်ပြီးနောက်၊ အောက်ပါ command ကို run ပါ။

npm start

ဒါပါပဲ။ React အက်ပ်သည် ယခုလည်ပတ်နေပြီး ဘရောက်ဆာလိပ်စာသို့ လမ်းညွှန်ခြင်းဖြင့် ဝင်ရောက်ကြည့်ရှုနိုင်ပါသည်။ localhost:3000. သူ၏ကုဒ်တွင် တစ်ခုခုကို သင်ပြောင်းလဲနိုင်သည်။ ဘရောက်ဆာတွင် ဤပြောင်းလဲမှုများ၏ အကျိုးသက်ရောက်မှုကို သင်ချက်ချင်းမြင်ရပါမည်။ modules များ၏ "hot" ဟုခေါ်သောအစားထိုးမှုကြောင့်၎င်းသည်ဖြစ်နိုင်သည်။ ယင်းကြောင့် ရှေ့ဆုံးဖွံ့ဖြိုးတိုးတက်မှုသည် ရိုးရှင်းပြီး ပျော်စရာကောင်းသော အတွေ့အကြုံအဖြစ် ပြောင်းလဲသွားပါသည်။

▍ ထုတ်လုပ်ရန်အတွက် React အက်ပ်ကို ပြင်ဆင်ခြင်း။

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

React အက်ပ်ကို တည်ဆောက်ရန်၊ terminal ကို အသုံးပြု၍ နောက်တစ်ကြိမ်၊ ဖိုင်တွဲသို့ သွားပါ။ sa-frontend အောက်ပါ command ကို run ပါ။

npm run build

၎င်းသည် ပရောဂျက်ဖိုင်တွဲတွင် လမ်းညွှန်တစ်ခု ဖန်တီးပေးလိမ့်မည်။ build. ၎င်းတွင် React အပလီကေးရှင်း အလုပ်လုပ်ရန်အတွက် လိုအပ်သော static ဖိုင်များ ပါ၀င်မည်ဖြစ်သည်။

▍ Nginx ဖြင့် တည်ငြိမ်သောဖိုင်များကို ဝန်ဆောင်မှုပေးခြင်း

ပထမဦးစွာသင်သည် Nginx ဝဘ်ဆာဗာကိုထည့်သွင်းပြီးလည်ပတ်ရန်လိုအပ်သည်။ ဒါဟာဖြစ်ပါတယ် ၎င်းကို ဒေါင်းလုဒ်လုပ်ပြီး ထည့်သွင်းခြင်းနှင့် လုပ်ဆောင်ခြင်းအတွက် လမ်းညွှန်ချက်များကို သင်ရှာဖွေနိုင်သည်။ ထို့နောက် ဖိုင်တွဲ၏ အကြောင်းအရာများကို ကော်ပီကူးရန် လိုအပ်သည်။ sa-frontend/build folder သို့ [your_nginx_installation_dir]/html.

ဤချဉ်းကပ်မှုဖြင့် React အပလီကေးရှင်း၏ စည်းဝေးပွဲအတွင်း ဖိုင်ထုတ်ပေးသည်။ index.html မှာ ရရှိနိုင်ပါတယ်။ [your_nginx_installation_dir]/html/index.html. ၎င်းသည် ပုံမှန်အားဖြင့် Nginx ဆာဗာမှ ၎င်းကိုဝင်ရောက်သည့်အခါ ပြဿနာဖြစ်စေသောဖိုင်ဖြစ်သည်။ ဆိပ်ကမ်းတစ်ခုတွင် နားထောင်ရန် ဆာဗာကို စီစဉ်သတ်မှတ်ထားသည်။ 80သို့သော် ဖိုင်ကို တည်းဖြတ်ခြင်းဖြင့် သင်အလိုရှိသည့်အတိုင်း ၎င်းကို စိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။ [your_nginx_installation_dir]/conf/nginx.conf.

သင်၏ဘရောက်ဆာကိုဖွင့်ပြီးသွားပါ။ localhost:80. React အက်ပ်စာမျက်နှာကို သင်တွေ့ရပါမည်။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
Nginx ဆာဗာမှ ဝန်ဆောင်မှုပေးသော တုံ့ပြန်အက်ပ်

အကယ်၍ သင်သည် ယခုအကွက်တွင် တစ်ခုခုထည့်ပါ။ Type your sentence ခလုတ်ကိုနှိပ်ပါ။ Send - ဘာမှဖြစ်မလာဘူး။ ဒါပေမယ့် console ကိုကြည့်ရင် error messages တွေကို အဲဒီမှာတွေ့နိုင်ပါတယ်။ ဤအမှားများဖြစ်ပွားသည့်နေရာကို အတိအကျနားလည်ရန်အတွက် အပလီကေးရှင်းကုဒ်ကို ခွဲခြမ်းစိတ်ဖြာကြည့်ကြပါစို့။

▍ ရှေ့ဆုံးအပလီကေးရှင်း၏ကုဒ်ကို ခွဲခြမ်းစိတ်ဖြာခြင်း။

ဖိုင်ရဲ့ ကုဒ်ကို ကြည့်လိုက်ပါ။ App.jsခလုတ်ကို နှိပ်တာကို တွေ့နိုင်တယ်။ Send method ကိုခေါ်သည်။ analyzeSentence(). ဤနည်းလမ်းအတွက် ကုဒ်ကို အောက်တွင် ပြထားသည်။ တစ်ချိန်တည်းမှာပင်၊ ပုံစံ၏မှတ်ချက်တစ်ခုစီပါရှိသည့်စာကြောင်းတစ်ခုစီအတွက်အချက်ကိုအာရုံစိုက်ပါ။ # Номерကုဒ်အောက်မှာ ရှင်းပြချက်တစ်ခုရှိပါတယ်။ အလားတူပင်၊ ကျွန်ုပ်တို့သည် အခြားကုဒ်အပိုင်းအစများကို ခွဲခြမ်းစိပ်ဖြာပါမည်။

analyzeSentence() {
    fetch('http://localhost:8080/sentiment', {  // #1
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
                       sentence: this.textField.getValue()})// #2
    })
        .then(response => response.json())
        .then(data => this.setState(data));  // #3
}

1. POST တောင်းဆိုမှုပြုလုပ်ထားသည့် URL။ ဤလိပ်စာသည် ထိုသို့သောတောင်းဆိုမှုများကို စောင့်ဆိုင်းနေသည့် အက်ပ်တစ်ခုဟု ယူဆပါသည်။

2.လျှောက်လွှာကို တောင်းခံလွှာပေးပို့သည်။ ဤသည်မှာ တောင်းဆိုချက်ကိုယ်ထည် ဥပမာတစ်ခုဖြစ်သည်။

{
    sentence: "I like yogobella!"
}

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

const polarityComponent = this.state.polarity !== undefined ?
    <Polarity sentence={this.state.sentence} 
              polarity={this.state.polarity}/> :
    null;

ကုဒ်သည် အတော်လေး အလုပ်လုပ်ပုံရသည်။ ဘာပဲဖြစ်ဖြစ် ဒီမှာ ဘာမှားနေတာလဲ။ အပလီကေးရှင်းက POST တောင်းဆိုချက်ကို ပေးပို့ရန် ကြိုးစားနေသည့် လိပ်စာတွင်၊ ဤတောင်းဆိုချက်ကို လက်ခံပြီး လုပ်ဆောင်နိုင်သည့် မည်သည့်အရာမှ မရှိသေးဟု သင်ယူဆပါက၊ သင်သည် လုံးဝမှန်ပါလိမ့်မည်။ ပြောရရင် လိပ်စာကို ရောက်လာတဲ့ တောင်းဆိုချက်တွေကို စီမံဆောင်ရွက်ဖို့ http://localhost:8080/sentimentSpring ကို အခြေခံ၍ ဝဘ်အက်ပလီကေးရှင်းကို လုပ်ဆောင်ရန် လိုအပ်သည်။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
POST တောင်းဆိုချက်ကို လက်ခံနိုင်သော Spring application တစ်ခု လိုအပ်ပါသည်။

▍ Spring ကိုအခြေခံ၍ ဝဘ်အက်ပလီကေးရှင်းကို စနစ်ထည့်သွင်းခြင်း။

Spring အပလီကေးရှင်းကို အသုံးပြုရန်အတွက်၊ သင်သည် JDK8 နှင့် Maven နှင့် မှန်ကန်စွာ ပြင်ဆင်သတ်မှတ်ထားသော ပတ်ဝန်းကျင် ကိန်းရှင်များ လိုအပ်ပါသည်။ ဤအရာအားလုံးကို သင်ထည့်သွင်းပြီးနောက်၊ သင်သည် ကျွန်ုပ်တို့၏ပရောဂျက်တွင် ဆက်လက်လုပ်ဆောင်နိုင်ပါသည်။

▍ အပလီကေးရှင်းကို jar ဖိုင်တစ်ခုအဖြစ် ထုပ်ပိုးခြင်း။

terminal ကို အသုံးပြု၍ ဖိုင်တွဲသို့ လမ်းညွှန်ပါ။ sa-webapp အောက်ပါ command ကိုရိုက်ထည့်ပါ။

mvn install

folder ထဲမှာ ဒီ command ကို execute လုပ်ပြီးနောက် sa-webapp လမ်းညွှန်ကိုဖန်တီးလိမ့်မည်။ target. ဤနေရာတွင် Java အပလီကေးရှင်းသည် ဖိုင်ဖြင့်ကိုယ်စားပြုသော jar ဖိုင်တစ်ခုတွင် ထုပ်ပိုးထားသောနေရာ၌တည်ရှိမည်ဖြစ်သည်။ sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍ Java အပလီကေးရှင်းကို စတင်ခြင်း။

ဖိုင်တွဲသို့သွားပါ target အောက်ပါ command ဖြင့် application ကို run ပါ။

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar

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

Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"

ကျွန်ုပ်တို့အတွက်၊ ဤနေရာတွင် အရေးကြီးဆုံးအချက်မှာ အဓိပ္ပာယ်ရှင်းလင်းရန် မဖြစ်နိုင်ကြောင်း ဖော်ပြခြင်းဖြစ်ပါသည်။ sa.logic.api.url. error ဖြစ်ပွားသည့်ကုဒ်ကို ခွဲခြမ်းစိတ်ဖြာကြည့်ရအောင်။

▍Java အပလီကေးရှင်းကုဒ်ခွဲခြမ်းစိတ်ဖြာခြင်း။

ဤသည်မှာ အမှားအယွင်းဖြစ်ပွားသည့် ကုဒ်အတိုအထွာဖြစ်သည်။

@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
    @Value("${sa.logic.api.url}")    // #1
    private String saLogicApiUrl;
    @PostMapping("/sentiment")
    public SentimentDto sentimentAnalysis(
        @RequestBody SentenceDto sentenceDto) 
    {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.postForEntity(
                saLogicApiUrl + "/analyse/sentiment",    // #2
                sentenceDto, SentimentDto.class)
                .getBody();
    }
}

  1. S တွင်၊entimentController လယ်ကွင်းတစ်ခုရှိတယ်။ saLogicApiUrl. ၎င်း၏တန်ဖိုးကို ပိုင်ဆိုင်မှုက သတ်မှတ်သည်။ sa.logic.api.url.
  2. အတန်း saLogicApiUrl တန်ဖိုးနှင့် ပေါင်းစပ်သည်။ /analyse/sentiment. ၎င်းတို့သည် စာသားခွဲခြမ်းစိတ်ဖြာမှုကို လုပ်ဆောင်သည့် မိုက်ခရိုဆားဗစ်သို့ ခေါ်ဆိုရန်အတွက် လိပ်စာတစ်ခုကို ပေါင်းစပ်ဖွဲ့စည်းထားသည်။

▍ ပစ္စည်းတန်ဖိုး သတ်မှတ်ခြင်း။

Spring တွင် default source of property values ​​သည် file တစ်ခုဖြစ်သည်။ application.propertiesတွင်တွေ့နိုင်ပါသည်၊ sa-webapp/src/main/resources. သို့သော် ၎င်းကိုအသုံးပြုခြင်းသည် ပိုင်ဆိုင်မှုတန်ဖိုးများကို သတ်မှတ်ရန် တစ်ခုတည်းသောနည်းလမ်းမဟုတ်ပါ။ အောက်ပါ command ဖြင့်လည်း ၎င်းကို သင်လုပ်နိုင်သည်-

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL

ဤပိုင်ဆိုင်မှု၏တန်ဖိုးသည် ကျွန်ုပ်တို့၏ Python အပလီကေးရှင်း၏လိပ်စာကို ညွှန်ပြသင့်သည်။

၎င်းကို configuration ပြုလုပ်ခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် စာသားခွဲခြမ်းစိတ်ဖြာရန် တောင်းဆိုချက်များကို လုပ်ဆောင်ရန် လိုအပ်သည့်နေရာတွင် Spring ဝဘ်အက်ပ်ကို ပြောပြသည်။

ကျွန်ုပ်တို့၏ဘဝများကို မရှုပ်ထွေးစေရန်အတွက် Python အပလီကေးရှင်းကို ရရှိနိုင်မည်ဟု ကျွန်ုပ်တို့ ဆုံးဖြတ်ပါမည်။ localhost:5000 အဲဒါကို မမေ့ဖို့ ကြိုးစားပါ။ ရလဒ်အနေဖြင့် Spring အပလီကေးရှင်းကိုစတင်ရန် command သည်ဤကဲ့သို့ဖြစ်နေလိမ့်မည်။

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
ကျွန်ုပ်တို့၏စနစ်သည် Python အပလီကေးရှင်းတစ်ခုပျောက်ဆုံးနေပါသည်။

ယခုကျွန်ုပ်တို့သည် Python အက်ပလီကေးရှင်းကို run ရန်သာလိုအပ်ပြီး system သည်မျှော်လင့်ထားသည့်အတိုင်းအလုပ်လုပ်လိမ့်မည်။

▍ Python အပလီကေးရှင်းကို စနစ်ထည့်သွင်းခြင်း။

Python အပလီကေးရှင်းကို run ရန်အတွက် သင့်တွင် Python 3 နှင့် Pip ကို ထည့်သွင်းထားရမည်ဖြစ်ပြီး၊ သင့်တွင် သင့်လျော်သောပတ်ဝန်းကျင် ကိန်းရှင်များကို မှန်ကန်စွာသတ်မှတ်ထားရပါမည်။

▍ မှီခိုမှုကို ထည့်သွင်းပါ။

ပရောဂျက်ဖိုင်တွဲသို့သွားပါ။ sa-logic/sa အောက်ပါ command များကို run ပါ။

python -m pip install -r requirements.txt
python -m textblob.download_corpora

▍ အက်ပ်ဖွင့်ခြင်း။

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

python sentiment_analysis.py

ဤအမိန့်ကိုလုပ်ဆောင်ပြီးနောက်၊ ကျွန်ုပ်တို့အား အောက်ပါအတိုင်းပြောပါမည်။

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

ဆိုလိုသည်မှာ အပလီကေးရှင်းသည် လည်ပတ်နေပြီး တောင်းဆိုမှုများကို စောင့်ဆိုင်းနေပါသည်။ localhost:5000/

▍ ကုဒ်သုတေသန

တောင်းဆိုချက်များကိုမည်သို့တုံ့ပြန်သည်ကိုနားလည်ရန် Python အပလီကေးရှင်းကုဒ်ကိုကြည့်ကြပါစို့။

from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__)                                   #1
@app.route("/analyse/sentiment", methods=['POST'])      #2
def analyse_sentiment():
    sentence = request.get_json()['sentence']           #3
    polarity = TextBlob(sentence).sentences[0].polarity #4
    return jsonify(                                     #5
        sentence=sentence,
        polarity=polarity
    )
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)                #6

  1. အရာဝတ္ထု အစပြုခြင်း Flask.
  2. ၎င်းထံသို့ POST တောင်းဆိုမှုများ ပြုလုပ်ရန်အတွက် လိပ်စာကို သတ်မှတ်ခြင်း။
  3. ပစ္စည်းဥစ္စာကို ပြန်လည်ရယူခြင်း။ sentence တောင်းဆိုမှုအဖွဲ့မှ
  4. အမည်မသိ အရာဝတ္ထု အစပြုခြင်း TextBlob တန်ဖိုးကိုရယူပါ။ polarity တောင်းဆိုချက်၏ကိုယ်ထည်တွင် ပထမဆုံးလက်ခံရရှိသည့် အဆိုပြုချက်အတွက် (ကျွန်ုပ်တို့၏ကိစ္စတွင်၊ ဤသည်မှာ ခွဲခြမ်းစိတ်ဖြာရန်အတွက် တင်ပြသော တစ်ခုတည်းသောအဆိုပြုချက်ဖြစ်သည်)။
  5. တုံ့ပြန်မှုတစ်ခု၊ ကမ်းလှမ်းချက်၏စာသားပါရှိသောကိုယ်ထည်နှင့် ၎င်းအတွက်တွက်ချက်ထားသောညွှန်ပြချက် polarity.
  6. Flask အက်ပလီကေးရှင်းကို စတင်ခြင်းမှာ ရရှိနိုင်ပါသည်။ 0.0.0.0:5000 (ဖောင်ပုံစံတည်ဆောက်မှုကို အသုံးပြု၍ ၎င်းကိုသင်ဝင်ရောက်နိုင်သည်။ localhost:5000).

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

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
အပလီကေးရှင်းတွင်ပါဝင်သည့် microservices အားလုံးကို ကျန်းမာသောအခြေအနေသို့ ယူဆောင်လာပါသည်။

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

နောက်အပိုင်းတွင်၊ Docker containers တွင် ကျွန်ုပ်တို့၏ microservices များကို မည်သို့လုပ်ဆောင်ရမည်ကို ဆွေးနွေးပါမည်။ Kubernetes အစုအဝေးတွင် အလုပ်လုပ်ရန် အက်ပ်လီကေးရှင်းကို ပြင်ဆင်ရန်အတွက် ၎င်းသည် လိုအပ်ပါသည်။

Docker ကွန်တိန်နာများ

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

Образ контейнера — это легковесный, автономный, исполняемый пакет, содержащий некое приложение, который включает в себя всё необходимое для его запуска: код приложения, среду исполнения, системные средства и библиотеки, настройки. Контейнеризированными программами можно пользоваться в средах Linux и Windows, при этом они всегда будут работать одинаково независимо от инфраструктуры.

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

ကွန်တိန်နာများ၏ အင်္ဂါရပ်များကို စူးစမ်းလေ့လာပြီး ၎င်းတို့ကို အပလီကေးရှင်းများဖွင့်ရန် အခြားနည်းလမ်းများနှင့် နှိုင်းယှဉ်ရန်၊ virtual machine နှင့် container ကိုအသုံးပြု၍ React အက်ပ်ကို ဝန်ဆောင်မှုပေးသည့် ဥပမာကို ကြည့်ကြပါစို့။

▍ virtual machine ကို အသုံးပြု၍ React အပလီကေးရှင်းတစ်ခု၏ တည်ငြိမ်ဖိုင်များကို ဝန်ဆောင်မှုပေးခြင်း

virtual machines များကို အသုံးပြု၍ static files များကို ပြုပြင်ထိန်းသိမ်းရန် ကြိုးပမ်းရာတွင် အောက်ပါအားနည်းချက်များကို ကြုံတွေ့ရနိုင်သည်-

  1. virtual machine တစ်ခုစီသည် ပြီးပြည့်စုံသော လည်ပတ်မှုစနစ်ဖြစ်သောကြောင့် အရင်းအမြစ်များကို ထိရောက်စွာအသုံးပြုခြင်း မရှိပေ။
  2. ပလပ်ဖောင်းမှီခို။ အချို့သောပြည်တွင်းကွန်ပြူတာတွင်အလုပ်လုပ်သောအရာသည်ထုတ်လုပ်မှုဆာဗာပေါ်တွင်ကောင်းစွာအလုပ်မလုပ်ပါ။
  3. virtual machine solution တစ်ခု၏ နှေးကွေးပြီး ရင်းမြစ်အကြိတ်အနယ် ချဲ့ထွင်ခြင်း။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
Nginx ဝဘ်ဆာဗာသည် virtual machine တစ်ခုတွင်လည်ပတ်နေသောတည်ငြိမ်ဖိုင်များကိုဝန်ဆောင်မှုပေးသည်။

အလားတူပြဿနာကိုဖြေရှင်းရန် ကွန်တိန်နာများကို အသုံးပြုပါက၊ virtual machine များနှင့် နှိုင်းယှဉ်ပါက အောက်ပါအားသာချက်များကို မှတ်သားနိုင်သည်-

  1. အရင်းအမြစ်များကို ထိရောက်စွာအသုံးပြုခြင်း- Docker ကို အသုံးပြု၍ လည်ပတ်မှုစနစ်နှင့် လုပ်ဆောင်ပါ။
  2. ပလပ်ဖောင်း လွတ်လပ်ရေး။ ဆော့ဖ်ဝဲရေးသားသူသည် ၎င်းတို့၏ကိုယ်ပိုင်ကွန်ပျူတာပေါ်တွင် လုပ်ဆောင်နိုင်သည့် ကွန်တိန်နာတစ်ခုသည် မည်သည့်နေရာတွင်မဆို လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။
  3. ပုံအလွှာများကို အသုံးပြုခြင်းဖြင့် ပေါ့ပါးစွာ ဖြန့်ကျက်ခြင်း။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
Nginx ဝဘ်ဆာဗာသည် ကွန်တိန်နာတစ်ခုအတွင်း လည်ပတ်နေသော တည်ငြိမ်ဖိုင်များကို ဆောင်ရွက်ပေးသည်။

ကျွန်ုပ်တို့သည် အချက်အနည်းငယ်တွင် virtual machines နှင့် containers များကိုသာ နှိုင်းယှဉ်ထားသော်လည်း containers များ၏ အားသာချက်များကို ခံစားသိရှိရန် လုံလောက်ပါသည်။ ဒါဟာဖြစ်ပါတယ် Docker ကွန်တိန်နာများအကြောင်း အသေးစိတ်ကို သင်ရှာဖွေနိုင်ပါသည်။

▍ React အက်ပ်အတွက် ကွန်တိန်နာပုံတစ်ပုံကို တည်ဆောက်ခြင်း။

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

ကျွန်ုပ်တို့သည် ဖိုင်နှင့် အလုပ်မလုပ်မီ DockerfileNginx ဆာဗာသို့ အပ်လုဒ်တင်ရန်အတွက် React အပလီကေးရှင်း၏ ဖိုင်များကို ပြင်ဆင်ရန်အတွက် ကျွန်ုပ်တို့ လုပ်ဆောင်ခဲ့သည်များကို သတိရပါ။

  1. React အက်ပ်ပက်ကေ့ချ်ကို တည်ဆောက်ခြင်း (npm run build).
  2. Nginx ဆာဗာကို စတင်နေပါသည်။
  3. လမ်းညွှန်တစ်ခု၏ အကြောင်းအရာများကို ကူးယူခြင်း။ build ပရောဂျက်ဖိုင်တွဲမှ sa-frontend ဆာဗာဖိုဒါသို့ nginx/html.

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

▍ SA-Frontend အပလီကေးရှင်းအတွက် Dockerfile ကိုပြင်ဆင်ခြင်း။

ထည့်သွင်းရမည့် ညွှန်ကြားချက်များ Dockerfile လျှောက်လွှာများအတွက် SA-Frontendcommand နှစ်ခုသာ ပါဝင်ပါသည်။ အမှန်မှာ Nginx ဖွံ့ဖြိုးတိုးတက်ရေးအဖွဲ့သည် အခြေခံတစ်ခုကို ပြင်ဆင်ထားပြီးဖြစ်သည်။ ပုံရိပ် ကျွန်ုပ်တို့၏ပုံရိပ်ကိုတည်ဆောက်ရန် ကျွန်ုပ်တို့အသုံးပြုမည့် Nginx အတွက်။ ဤတွင် ကျွန်ုပ်တို့ဖော်ပြရန် လိုအပ်သော အဆင့်နှစ်ဆင့်ရှိပါသည်။

  1. Nginx ပုံကို ရုပ်ပုံ၏အခြေခံအဖြစ် သင်ပြုလုပ်ရန်လိုအပ်သည်။
  2. ဖိုင်တွဲ အကြောင်းအရာ sa-frontend/build ပုံဖိုဒါသို့ကူးယူရန်လိုအပ်သည်။ nginx/html.

ကျွန်ုပ်တို့သည် ဤဖော်ပြချက်မှ ဖိုင်သို့သွားလျှင် Dockerfileထို့နောက် ဤကဲ့သို့ ပေါ်လာလိမ့်မည်-

FROM nginx
COPY build /usr/share/nginx/html

သင်တွေ့မြင်ရသည့်အတိုင်း၊ ဤနေရာတွင် အရာအားလုံးသည် အလွန်ရိုးရှင်းသည်၊ ဖိုင်၏အကြောင်းအရာများသည် အတော်လေးဖတ်ရလွယ်ကူပြီး နားလည်နိုင်သောအဖြစ်သို့ပင်ထွက်လာပါသည်။ ဤဖိုင်သည် ပုံကိုယူရန် စနစ်အား ပြောထားသည်။ nginx ၎င်းတွင်ရှိပြီးသားအရာအားလုံးနှင့်အတူ၊ လမ်းညွှန်၏အကြောင်းအရာများကိုကူးယူပါ။ build လမ်းညွှန်သို့ nginx/html.

ဤနေရာတွင် ဖိုင်များကို ဖိုဒါမှ ဖိုင်များကို ကူးယူရမည့်နေရာကို အတိအကျ သိနိုင်ပုံနှင့် စပ်လျဉ်းသည့် မေးခွန်းတစ်ခု ရှိနိုင်ပါသည်။ buildဆိုလိုတာက လမ်းက ဘယ်ကလာတာလဲ။ /usr/share/nginx/html. တကယ်တော့ ဒီမှာ ဘာမှ မရှုပ်ထွေးပါဘူး။ အမှန်မှာ သက်ဆိုင်ရာ သတင်းအချက်အလက်များကို ရှာဖွေနိုင်သည်။ ဖော်ပြချက် ပုံ။

▍ ပုံအား စုစည်းပြီး သိုလှောင်ခန်းသို့ အပ်လုဒ်တင်ခြင်း။

ကျွန်ုပ်တို့သည် ပြီးပြည့်စုံသောပုံဖြင့် လုပ်ဆောင်ခြင်းမပြုမီ၊ ၎င်းကို ရုပ်ပုံသိမ်းဆည်းမှုသို့ တင်ပြရန် လိုအပ်ပါသည်။ ဒါကိုလုပ်ဖို့၊ အခမဲ့ cloud-based image hosting platform Docker Hub ကို သုံးပါမယ်။ ဤအဆင့်တွင်၊ သင်သည်အောက်ပါအတိုင်းလုပ်ဆောင်ရန်လိုအပ်သည်-

  1. ထည့်သွင်းပါ Docker.
  2. Docker Hub ဆိုက်တွင် မှတ်ပုံတင်ပါ။
  3. Terminal တွင် အောက်ပါ command ကို run ခြင်းဖြင့် သင့်အကောင့်သို့ ဝင်ရောက်ပါ။
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

ယခုသင်လိုအပ်သည်၊ terminal ကိုအသုံးပြု၍ လမ်းညွှန်သို့သွားပါ။ sa-frontend အောက်ဖော်ပြပါ command ကို ထိုနေရာတွင် run ပါ။

docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .

ဤနေရာနှင့် အောက်တွင် ဆင်တူသော command များ $DOCKER_USER_ID Docker Hub တွင် သင်၏အသုံးပြုသူအမည်ဖြင့် အစားထိုးသင့်သည်။ ဥပမာအားဖြင့်၊ ဤ command ၏ အစိတ်အပိုင်းသည် ဤကဲ့သို့ ဖြစ်နိုင်ပါသည်။ rinormaloku/sentiment-analysis-frontend.

ဤကိစ္စတွင်၊ ဤအမိန့်ကို ၎င်းမှဖယ်ရှားခြင်းဖြင့် အတိုချုံးနိုင်သည်။ -f Dockerfileဤအမိန့်ကို ကျွန်ုပ်တို့လုပ်ဆောင်သည့်ဖိုင်တွဲတွင် ဤဖိုင်ရှိပြီးသားဖြစ်သောကြောင့်၊

repository သို့ ပြီးသွားသောပုံကို ပေးပို့ရန်အတွက်၊ ကျွန်ုပ်တို့သည် အောက်ပါ command ကို လိုအပ်ပါသည်။

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

၎င်းကို အပြီးသတ်ပြီးနောက်၊ ပုံအား cloud သိုလှောင်မှုသို့ အောင်မြင်စွာ တွန်းပို့ခြင်းရှိ၊

▍ ကွန်တိန်နာကို စတင်ခြင်း။

ယခု မည်သူမဆို ဒေါင်းလုဒ်လုပ်၍ ခေါ်ဝေါ်သော ပုံကို အသုံးပြုနိုင်ပါပြီ။ $DOCKER_USER_ID/sentiment-analysis-frontend. ဒီလိုလုပ်ဖို့၊ အောက်ပါ command တွေရဲ့ sequence ကို run ဖို့လိုအပ်ပါတယ်။

docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

ယခု ကွန်တိန်နာသည် အလုပ်လုပ်နေပြီး ကျွန်ုပ်တို့လိုအပ်သော အခြားပုံများကို ဖန်တီးခြင်းဖြင့် ကျွန်ုပ်တို့ ဆက်လက်လုပ်ဆောင်နိုင်ပါသည်။ ဒါပေမယ့် ဆက်မလုပ်ခင် ဒီဇိုင်းကို နားလည်ရအောင် 80:80image ကို run ရန် command တွင်တွေ့ရှိရပြီးရှုပ်ထွေးပုံရသည်။

  • ပထမနံပါတ် 80 သည် host ၏ port နံပါတ် (ဆိုလိုသည်မှာ local computer) ဖြစ်သည်။
  • ဒုတိယနံပါတ် 80 တောင်းဆိုချက်ကို ပြန်ညွှန်းသင့်သည့် ကွန်တိန်နာ၏ ဆိပ်ကမ်းဖြစ်သည်။

အောက်ပါပုံဥပမာကို သုံးသပ်ကြည့်ပါ။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
Port Forwarding

စနစ်သည် ဆိပ်ကမ်းမှ တောင်းဆိုချက်များကို ပေးပို့သည်။ <hostPort> ဆိပ်ကမ်းသို့ <containerPort>. ဆိုလိုသည်မှာ ဆိပ်ကမ်းကို ဝင်ရောက်ခြင်း ဖြစ်သည်။ 80 ကွန်ပြူတာကို port တစ်ခုသို့ ပြန်ညွှန်းသည်။ 80 ကွန်တိန်နာ။

ဆိပ်ကမ်းမှာကတည်းက 80 local computer မှာဖွင့်ထားတဲ့ application ကို ဒီ computer မှာဝင်ရောက်ကြည့်ရှုနိုင်ပါတယ်။ localhost:80. သင့်စနစ်သည် Docker ကို မပံ့ပိုးပါက၊ သင်သည် Docker virtual machine တစ်ခုတွင် အပလီကေးရှင်းကို run နိုင်ပြီး၊ လိပ်စာနှင့် တူလိမ့်မည်၊ <docker-machine ip>:80. Docker virtual machine ၏ IP လိပ်စာကိုရှာဖွေရန်၊ သင်သည် command ကိုသုံးနိုင်သည်။ docker-machine ip.

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

▍.dockerignore ဖိုင်

လျှောက်လွှာရုပ်ပုံတည်ဆောက်ခြင်း။ SA-Frontendဤလုပ်ငန်းစဉ်သည် အလွန်နှေးကွေးသည်ကို ကျွန်ုပ်တို့ သတိပြုမိနိုင်သည်။ အဘယ်ကြောင့်ဆိုသော် image build context ကို Docker daemon သို့ ပေးပို့ရသောကြောင့် ဖြစ်သည်။ build context ကိုကိုယ်စားပြုသော directory ကို command အတွက်နောက်ဆုံးအငြင်းအခုံအဖြစ်ပေးသည်။ docker build. ကျွန်ုပ်တို့၏ကိစ္စတွင်၊ ဤအမိန့်စာ၏အဆုံးတွင် အစက်တစ်ခုရှိသည်။ ၎င်းသည် စည်းဝေးပွဲအကြောင်းအရာတွင် အောက်ပါဖွဲ့စည်းပုံအား ရလဒ်အဖြစ် ဖြစ်ပေါ်စေသည်-

sa-frontend:
|   .dockerignore
|   Dockerfile
|   package.json
|   README.md
+---build
+---node_modules
+---public
---src

သို့သော် ဤနေရာတွင် ရှိနေသည့် ဖိုင်တွဲများအားလုံးတွင်၊ ကျွန်ုပ်တို့သည် ဖိုဒါတစ်ခုသာ လိုအပ်ပါသည်။ build. အခြားမည်သည့်အရာကိုမဆို ဒေါင်းလုဒ်ဆွဲခြင်းသည် အချိန်ဖြုန်းခြင်းဖြစ်သည်။ Docker အား လျစ်လျူရှုရမည့် လမ်းညွှန်များကို ပြောပြခြင်းဖြင့် တည်ဆောက်မှုကို အရှိန်မြှင့်နိုင်သည်။ ဒါကိုလုပ်ဖို့၊ ဖိုင်တစ်ခုလိုတယ်။ .dockerignore. ဖိုင်နဲ့ ရင်းနှီးတယ်ဆိုရင် ခင်ဗျာ။ .gitignoreဤဖိုင်၏ဖွဲ့စည်းပုံသည် ရင်းနှီးနေပုံရသည်။ ၎င်းသည် image build system လျစ်လျူရှုနိုင်သောလမ်းကြောင်းများကိုစာရင်းပြုစုထားသည်။ ကျွန်ုပ်တို့၏အခြေအနေတွင်၊ ဤဖိုင်၏အကြောင်းအရာများသည် ဤကဲ့သို့ဖြစ်သည်-

node_modules
src
public

ဖိုင် .dockerignore ဖိုင်နှင့်တူညီသောဖိုဒါတွင်ရှိရမည်။ Dockerfile. ယခု ပုံ၏ ပရိသတ်သည် စက္ကန့်အနည်းငယ် ကြာမည်ဖြစ်သည်။

ယခု Java အပလီကေးရှင်းအတွက် ရုပ်ပုံနှင့် ဆက်ဆံကြပါစို့။

▍ Java အပလီကေးရှင်းအတွက် ကွန်တိန်နာပုံတစ်ပုံကို တည်ဆောက်ခြင်း။

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

ဖိုင်ကိုဖွင့်ပါ။ Dockerfileပရောဂျက်ဖိုင်တွဲတွင်ရှိသော၊ sa-webapp. ဤဖိုင်၏ စာသားကို သင်ဖတ်ပါက၊ ၎င်းတွင် သော့ချက်စာလုံးများဖြင့် စတင်သည့် တည်ဆောက်မှုအသစ်နှစ်ခုသာ တွေ့ရပါမည်။ ENV и EXPOSE:

ENV SA_LOGIC_API_URL http://localhost:5000
…
EXPOSE 8080

သော့ချက်စာလုံး ENV Docker containers အတွင်းရှိ ပတ်၀န်းကျင် ပြောင်းလဲနိုင်သော ပြောင်းလဲမှုများကို ကြေငြာနိုင်စေပါသည်။ အထူးသဖြင့်၊ ကျွန်ုပ်တို့၏အခြေအနေတွင်၊ ၎င်းသည် စာသားပိုင်းခြားစိတ်ဖြာမှုကို လုပ်ဆောင်သည့် အပလီကေးရှင်း၏ API ကို ဝင်ရောက်ကြည့်ရှုရန် URL တစ်ခုကို သတ်မှတ်ခွင့်ပြုသည်။

သော့ချက်စာလုံး EXPOSE Docker ကို ဆိပ်ကမ်းတစ်ခုဖွင့်ရန် သင့်အား ပြောခွင့်ပြုသည်။ ကျွန်ုပ်တို့သည် အပလီကေးရှင်းနှင့်အလုပ်လုပ်သောကြောင့် ဤ port ကိုအသုံးပြုပါမည်။ ဤနေရာတွင် သင်မြင်နိုင်သည်။ Dockerfile လျှောက်လွှာများအတွက် SA-Frontend ထိုကဲ့သို့ အမိန့်မရှိပါ။ ၎င်းသည် စာရွက်စာတမ်းကိစ္စအတွက်သာဖြစ်ပြီး တစ်နည်းအားဖြင့် ဤတည်ဆောက်မှုသည် စာဖတ်သူအတွက်ဖြစ်သည်။ Dockerfile.

ပုံကိုတည်ဆောက်ပြီး repository သို့တွန်းချခြင်းသည် ယခင်ဥပမာနှင့်တူသည်။ သင့်အရည်အချင်းကို အလွန်ယုံကြည်မှုမရှိသေးပါက၊ သက်ဆိုင်ရာ command များကို ဖိုင်တွင် တွေ့နိုင်ပါသည်။ README.md ဖိုင်တွဲထဲမှာ sa-webapp.

▍ Python အပလီကေးရှင်းအတွက် ကွန်တိန်နာပုံတစ်ပုံကို တည်ဆောက်ခြင်း။

ဖိုင်ရဲ့ အကြောင်းအရာတွေကို လေ့လာကြည့်ရင် Dockerfile ဖိုင်တွဲထဲမှာ sa-logicအဲဒီမှာ ဘာမှ အသစ်မတွေ့ဘူး။ ပုံကိုတည်ဆောက်ပြီး repository သို့တွန်းပို့ခြင်းအတွက် command များသည် သင့်အတွက်ရင်းနှီးပြီးသားဖြစ်သင့်ပြီးဖြစ်သော်လည်း၊ ကျွန်ုပ်တို့၏အခြားအပလီကေးရှင်းများတွင်ကဲ့သို့၎င်းတို့ကိုဖိုင်ထဲတွင်တွေ့နိုင်သည်။ README.md ဖိုင်တွဲထဲမှာ sa-logic.

▍ ကွန်တိန်နာတင်ထားသော အပလီကေးရှင်းများကို စမ်းသပ်ခြင်း။

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

  1. အပလီကေးရှင်းကွန်တိန်နာကို စလိုက်ရအောင် sa-logic ဆိပ်ကမ်းတစ်ခုတွင် နားထောင်ရန် ၎င်းကို စီစဉ်သတ်မှတ်ပါ။ 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. အပလီကေးရှင်းကွန်တိန်နာကို စလိုက်ရအောင် sa-webapp ဆိပ်ကမ်းတစ်ခုတွင် နားထောင်ရန် ၎င်းကို စီစဉ်သတ်မှတ်ပါ။ 8080. ထို့အပြင်၊ Python အပလီကေးရှင်းသည် Java အပလီကေးရှင်းမှ တောင်းဆိုချက်များကို နားထောင်မည့် ဆိပ်ကမ်းကို ပတ်၀န်းကျင် ပြောင်းလဲသတ်မှတ်ပေးခြင်းဖြင့် သတ်မှတ်ရန် လိုအပ်သည်။ SA_LOGIC_API_URL:
    $ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app

ကွန်တိန်နာတစ်ခု သို့မဟုတ် Docker VM ၏ IP လိပ်စာကို သိရှိရန် ဖိုင်ကို ကိုးကားပါ။ README.

အပလီကေးရှင်းကွန်တိန်နာကို စလိုက်ရအောင် sa-frontend:

docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

ယခု browser တွင် လိပ်စာသို့ သွားရန်အတွက် အရာအားလုံး အဆင်သင့်ဖြစ်ပါပြီ။ localhost:80 နှင့် app ကိုစမ်းသပ်။

ကျေးဇူးပြု၍ သင်သည် port ကိုပြောင်းလျှင်သတိပြုပါ။ sa-webappသို့မဟုတ် သင်သည် Docker VM ကို အသုံးပြုနေပါက ဖိုင်ကို တည်းဖြတ်ရန် လိုအပ်မည်ဖြစ်သည်။ App.js ဖိုင်တွဲတစ်ခုမှ sa-frontendနည်းလမ်းရှိ IP လိပ်စာ သို့မဟုတ် ပို့တ်နံပါတ်ကို ပြောင်းလဲခြင်းဖြင့် analyzeSentence()အသုံးမပြုတော့သော ဒေတာအစား လက်ရှိအချက်အလက်ကို အစားထိုးခြင်းဖြင့်။ အဲဒီနောက်မှာတော့ ပုံကို ပြန်လည်စုစည်းပြီး အသုံးပြုရမှာ ဖြစ်ပါတယ်။

ဤသည်မှာ ကျွန်ုပ်တို့၏ အပလီကေးရှင်းပုံသဏ္ဍာန်သည် ယခုပုံစံဖြစ်သည်။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ
Microservices များသည် ကွန်တိန်နာများတွင် အလုပ်လုပ်ပါသည်။

အနှစ်ချုပ်- အဘယ်ကြောင့် Kubernetes အစုအဝေးကို လိုအပ်သနည်း။

ကျွန်ုပ်တို့သည် ဖိုင်များကို ပြန်လည်သုံးသပ်ခဲ့သည်။ Dockerfileပုံများတည်ဆောက်ပုံနှင့် Docker repository သို့ တွန်းပို့ပုံအကြောင်း ဆွေးနွေးခဲ့သည်။ ထို့အပြင်၊ ဖိုင်ကိုအသုံးပြု၍ ပုံများစုစည်းမှုကို အရှိန်မြှင့်နည်းကို လေ့လာခဲ့သည်။ .dockerignore. ရလဒ်အနေဖြင့်၊ ကျွန်ုပ်တို့၏ မိုက်ခရိုဝန်ဆောင်မှုများသည် ယခု Docker ကွန်တိန်နာများတွင် လုပ်ဆောင်နေပါသည်။ ဤနေရာတွင် ကျွန်ုပ်တို့သည် Kubernetes ကို အဘယ်ကြောင့် လိုအပ်သည်နှင့် ပတ်သက်၍ လုံးဝ မျှတသော မေးခွန်းတစ်ခု ရှိနိုင်ပါသည်။ ဤမေးခွန်းအတွက် အဖြေကို ဤအကြောင်းအရာ၏ ဒုတိယအပိုင်းတွင် အာရုံစိုက်ပါမည်။ ဤအတောအတွင်း အောက်ပါမေးခွန်းကို သုံးသပ်ပါ။
ကျွန်ုပ်တို့၏ စာသားခွဲခြမ်းစိတ်ဖြာမှု ဝဘ်အက်ပလီကေးရှင်းသည် ကမ္ဘာတစ်ဝှမ်းတွင် ရေပန်းစားလာသည်ဟု ယူဆကြပါစို့။ သန်းနဲ့ချီတဲ့ တောင်းဆိုမှုတွေဟာ မိနစ်တိုင်း သူ့ဆီရောက်လာတယ်။ ဆိုလိုသည်မှာ microservices ဖြစ်သည်။ sa-webapp и sa-logic ကြီးမားသောဖိအားအောက်တွင်ရှိလိမ့်မည်။ မိုက်ခရိုဝန်ဆောင်မှုများ လုပ်ဆောင်သည့် ကွန်တိန်နာများကို မည်ကဲ့သို့ စကေးချနိုင်မည်နည်း။

Kubernetes ကျူတိုရီရယ် အပိုင်း 1- အက်ပ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများနှင့် ကွန်တိန်နာများ

source: www.habr.com

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster