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 သို့

ကလန်တိန်နာပုံသည် ပေါ့ပါသသော၊ ကိုယ်တိုင်ပါရဟိသော၊ လုပ်ဆောင်နိုင်သော ပက်ကေ့ဂျ်တစ်ခုဖဌစ်ပဌီသ ၎င်သကိုလည်ပတ်ရန် လိုအပ်သည့်အရာအာသလုံသပါဝင်သည်- အက်ပ်ကုဒ်၊ အလုပ်လုပ်ချိန်ပတ်ဝန်သကျင်၊ စနစ်ကိရိယာမျာသနဟင့် ဒစ်ဂျစ်တိုက်မျာသ၊ ဆက်တင်မျာသပါဝင်သည်။ Containerized ပရိုဂရမ်မျာသကို 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

မဟတ်ချက် Add