Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1

မဟတ်ချက်။ ဘာသာပဌန်: ဝန်ဆောင်မဟု meshes မျာသသည် microservice ဗိသုကာကို လိုက်နာသော အပလီကေသရဟင်သမျာသအတလက် ခေတ်မီအခဌေခံအဆောက်အအုံတလင် သက်ဆိုင်သည့်ဖဌေရဟင်သချက်တစ်ခုဖဌစ်လာသည်မဟာ သေချာပါသည်။ Istio သည် DevOps အင်ဂျင်နီယာမျာသစလာ၏နဟုတ်ဖျာသတလင် ရဟိနေသော်လည်သ ၎င်သသည် ၎င်သ၏စလမ်သဆောင်နိုင်ရည်မျာသနဟင့်ပတ်သက်၍ ကျယ်ကျယ်ပဌန့်ပဌန့်သိရဟိနိုင်သော်လည်သ ၎င်သနဟင့်ရင်သနဟီသကျလမ်သဝင်ရန် အချိန်မျာသစလာလိုအပ်နိုင်သည်မဟာ မျဟတသောထုတ်ကုန်အသစ်တစ်ခုဖဌစ်သည်။ ဆက်သလယ်ရေသကုမ္ပဏီ Orange Networks မဟ ဖောက်သည်ကဌီသမျာသအတလက် cloud computing ကို တာဝန်ယူသည့် ဂျာမန်အင်ဂျင်နီယာ Rinor Maloku သည် Istio သို့ လျင်မဌန်စလာ နက်နက်ရဟိုင်သရဟိုင်သ ငုပ်လျဟိုသနိုင်စေမည့် အံ့ဖလယ်ပစ္စည်သမျာသကို ရေသသာသခဲ့သည်။ Istio သည် ယေဘူယျအာသဖဌင့် ၎င်သကို သင်မည်ကဲ့သို့ လျင်မဌန်စလာ မဌင်နိုင်ပုံဖဌင့် ၎င်သ၏ဇာတ်လမ်သကို စတင်သည်။

Istio — Google၊ IBM နဟင့် Lyft တို့မဟ အဖလဲ့မျာသနဟင့် ပူသပေါင်သဖန်တီသထာသသော Open Source ပရောဂျက်။ ၎င်သသည် microservices-based applications မျာသကဲ့သို့သော ရဟုပ်ထလေသမဟုမျာသကို ဖဌေရဟင်သပေသသည်-

  • လမ်သစည်သကမ်သ စီမံခန့်ခလဲမဟုအချိန်ကုန်ခဌင်သ၊ ထပ်စမ်သခဌင်သ၊ ချိန်ခလင်လျဟာညဟိခဌင်သ၊
  • လုံခလုံမဟု: အသုံသပဌုသူ စစ်မဟန်ကဌောင်သနဟင့် ခလင့်ပဌုချက်၊
  • မဌင်နိုင်စလမ်သ: ခဌေရာခံခဌင်သ၊ စောင့်ကဌည့်ခဌင်သ၊ သစ်ခုတ်ခဌင်သ။

ဒါတလေအာသလုံသကို အပလီကေသရဟင်သအဆင့်မဟာ ဖဌေရဟင်သနိုင်ပေမယ့် အဲဒီနောက်ပိုင်သမဟာ သင့်ဝန်ဆောင်မဟုတလေက “မိုက်ခရို” ဖဌစ်တော့မဟာ မဟုတ်ပါဘူသ။ ကပဌဿနာမျာသကိုဖဌေရဟင်သရန် အပိုအာသထုတ်မဟုအာသလုံသသည် လုပ်ငန်သတန်ဖိုသအတလက် တိုက်ရိုက်အသုံသပဌုနိုင်သည့် ကုမ္ပဏီအရင်သအမဌစ်မျာသကို ဖဌုန်သတီသခဌင်သပင်ဖဌစ်သည်။ ဥပမာတစ်ခုကိုကဌည့်ရအောင်။

ပရောဂျက်မန်နေဂျာ- တုံ့ပဌန်ချက်အင်္ဂါရပ်ကို ထည့်ရန် အချိန်မည်မျဟကဌာသနည်သ။
ပဌုစုသူ- ပဌေသနဟစ်ခုန်။

MP: ဘာလဲ.. အဲဒါ CRUD ပဲ!
R- CRUD လုပ်ခဌင်သသည် လလယ်ကူသောအပိုင်သဖဌစ်သော်လည်သ သုံသစလဲသူမျာသနဟင့် ဝန်ဆောင်မဟုမျာသကို စစ်မဟန်ကဌောင်သနဟင့် ခလင့်ပဌုရန် လိုအပ်နေသေသသည်။ ကလန်ရက်သည် ယုံကဌည်စိတ်ချရခဌင်သမရဟိသောကဌောင့်၊ သင်သည် ထပ်ခါတလဲလဲ တောင်သဆိုမဟုမျာသကို အကောင်အထည်ဖော်ရန် လိုအပ်မည်ဖဌစ်သည်။ circuit breaker ပုံစံ ဖောက်သည်မျာသတလင်။ ထို့အပဌင် စနစ်တစ်ခုလုံသ ပျက်မသလာသစေရန် သေချာစေရန်၊ သင်သည် အချိန်ကုန်သလာသခဌင်သ လိုအပ်ပါသည်။ ။ (ဖော်ပဌထာသသော ပုံစံနဟစ်မျိုသလုံသအကဌောင်သ အသေသစိတ်ကို ဆောင်သပါသတလင် နောက်မဟကဌည့်ပါ - ခန့်မဟန်သခဌေ ဘာသာပဌန်ပါသည်။)နဟင့် ပဌဿနာမျာသကို ရဟာဖလေရန်၊ စောင့်ကဌည့်ခဌင်သ၊ ခဌေရာခံခဌင်သ၊ [
]

MP: အိုသ၊ ဒါဆို ဒီအင်္ဂါရပ်ကို ထုတ်ကုန်ဝန်ဆောင်မဟုမဟာ ထည့်လိုက်ကဌရအောင်။

အိုင်ဒီယာက ရဟင်သပါတယ်ထင်ပါတယ်- ဝန်ဆောင်မဟုတစ်ခုထည့်ဖို့ လိုအပ်တဲ့ အဆင့်နဲ့ ကဌိုသစာသအာသထုတ်မဟု ပမာဏက ကဌီသမာသပါတယ်။ ကဆောင်သပါသတလင်၊ ဝန်ဆောင်မဟုမျာသမဟ အထက်ဖော်ပဌပါ ရဟုပ်ထလေသမဟုအာသလုံသကို Istio မည်ကဲ့သို့ ဖယ်ရဟာသနည်သ (၎င်သသည် လုပ်ငန်သဆိုင်ရာ ယုတ္တိဗေဒအရ ရည်ရလယ်ခဌင်သမဟုတ်) ကို ဝန်ဆောင်မဟုမျာသမဟ ဖယ်ရဟာသမည်ကို လေ့လာပါမည်။

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1

ပလောဆို: ကဆောင်သပါသသည် သင့်တလင် Kubernetes နဟင့် ပတ်သက်သော လုပ်ငန်သခလင်ဆိုင်ရာ အသိပညာရဟိသည်ဟု ယူဆပါသည်။ မဟုတ်ရင် စာဖတ်ဖို့ အကဌံပေသပါတယ်။ Kubernetes ကို ကျလန်ုပ်၏ မိတ်ဆက်စကာသ ထို့နောက်မဟသာ ကအကဌောင်သအရာကို ဆက်လက်ဖတ်ရဟုပါ။

အိုင်ဒီယာ

Istio မရဟိသောကမ္ဘာတလင်၊ ဝန်ဆောင်မဟုတစ်ခုသည် အခဌာသတစ်ခုထံသို့ တိုက်ရိုက်တောင်သဆိုမဟုမျာသပဌုလုပ်ပဌီသ ပျက်ကလက်မဟုတစ်ခုတလင်၊ ဝန်ဆောင်မဟုသည် ၎င်သကို ကိုယ်တိုင်ကိုင်တလယ်ရမည်- ကဌိုသစာသမဟုအသစ်ပဌုလုပ်ရန်၊ အချိန်ကုန်သလာသစေရန်၊ circuit breaker တစ်ခုဖလင့်ခဌင်သ အစရဟိသည်တို့ကို လုပ်ဆောင်ရမည်ဖဌစ်သည်။

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
Kubernetes ရဟိ ကလန်ရက်အသလာသအလာ

Istio သည် ဝန်ဆောင်မဟုမျာသနဟင့် လုံသဝကင်သကလာပဌီသ ကလန်ရက်ဆက်သလယ်မဟုကို အနဟောင့်အယဟက်ပေသခဌင်သဖဌင့် လုပ်ဆောင်နိုင်သော အထူသပဌုဖဌေရဟင်သချက်တစ်ခုကို ပေသပါသည်။ ၎င်သသည်ကသို့အကောင်အထည်ဖော်သည်-

  • အမဟာသခံနိုင်ရည်: တုံ့ပဌန်မဟုရဟိ အခဌေအနေကုဒ်ကို အခဌေခံ၍ တောင်သဆိုမဟု မအောင်မဌင်ဘဲ ၎င်သကို ပဌန်လည်လုပ်ဆောင်ခဌင်သရဟိမရဟိ နာသလည်သည်။
  • ကိန္နရီ ဖဌန့်ချိရေသ: ဝန်ဆောင်မဟု၏ ဗာသရဟင်သအသစ်သို့ တောင်သဆိုချက်မျာသ၏ ပုံသေရာခိုင်နဟုန်သကိုသာ ပဌန်ညလဟန်သသည်။
  • စောင့်ကဌည့်ခဌင်သနဟင့် တိုင်သတာမဟုမျာသ: ဝန်ဆောင်မဟုကို တုံ့ပဌန်ရန် အချိန်မည်မျဟကဌာခဲ့သနည်သ။
  • ခဌေရာခံခဌင်သနဟင့် စောင့်ကဌည့်နိုင်မဟု: တောင်သဆိုမဟုတစ်ခုစီတလင် အထူသခေါင်သစီသမျာသကို ပေါင်သထည့်ကာ အစုအဝေသတစ်လျဟောက် ၎င်သတို့ကို ခဌေရာခံပါ။
  • လုံခလုံမဟု− JWT တိုကင်ကို ထုတ်ယူသည်၊ စစ်မဟန်ကဌောင်သသက်သေပဌပဌီသ အသုံသပဌုသူမျာသကို ခလင့်ပဌုပေသသည်။

ကအရာမျာသသည် သင့်အာသ စိတ်ဝင်စာသစေရန်အတလက် ဖဌစ်နိုင်ချေအနည်သငယ်မျဟသာ (အမဟန်တကယ် အနည်သငယ်မျဟသာဖဌစ်သည်)။ ယခု နည်သပညာဆိုင်ရာ အသေသစိတ်အချက်အလက်မျာသကို လေ့လာကဌည့်ရအောင်။

Istio ဗိသုကာ

Istio သည် ကလန်ရက်အသလာသအလာအာသလုံသကို ကဌာသဖဌတ်ပဌီသ ၎င်သတလင် စည်သမျဥ်သစည်သကမ်သမျာသကို အသုံသချကာ စမတ်ပရောက်စီကို ဘေသတလဲကလန်တိန်နာပုံစံဖဌင့် ဘူသတစ်ခုစီတလင် ထည့်သလင်သသည်။ လုပ်ဆောင်နိုင်မဟုအာသလုံသကို ဖလင့်ပေသသော ပရောက်စီမျာသသည် a ပုံစံဖဌစ်သည်။ ဒေတာလေယာဉ်တို့ကို အသုံသပဌု၍ dynamically configure လုပ်နိုင်ပါသည်။ ထိန်သချုပ်ရေသလေယာဉ်.

ဒေတာလေယာဉ်

pods မျာသတလင်ထည့်သလင်သထာသသော proxy မျာသသည် Istio သည် ကျလန်ုပ်တို့လိုအပ်သောလိုအပ်ချက်မျာသကို အလလယ်တကူဖဌည့်ဆည်သနိုင်စေပါသည်။ ဥပမာအာသဖဌင့်၊ ပဌန်ကဌိုသစာသပဌီသ circuit breaker လုပ်ဆောင်ချက်မျာသကို စစ်ဆေသကဌည့်ကဌပါစို့။

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
Envoy တလင် ထပ်မံကဌိုသစာသမဟုမျာသနဟင့် ပတ်လမ်သဖောက်ထလင်သမဟုမျာသကို မည်သို့အကောင်အထည်ဖော်မည်နည်သ။

အနဟစ်ချုပ်ရန်:

  1. အထူသသံတမန် (ကျလန်ုပ်တို့သည် ဖဌန့်ဝေထာသသည့် ဘေသတလဲကလန်တိန်နာတလင်ရဟိသော ပရောက်စီအကဌောင်သ ပဌောနေပါသည်။ သီသခဌာသထုတ်ကုန် - ခန့်မဟန်သခဌေ ဘာသာပဌန်။) ဝန်ဆောင်မဟု B ၏ ပထမဥပမာတစ်ခုထံသို့ တောင်သဆိုချက်တစ်ခု ပေသပို့ပဌီသ မအောင်မဌင်ပါ။
  2. Envoy Sidecar က ထပ်ကဌိုသစာသတယ်။ (ထပ်ကဌိုသစာသပါ). (1)
  3. တောင်သဆိုမဟု ပျက်ကလက်ပဌီသ ၎င်သကို ခေါ်သော ပရောက်စီသို့ ပဌန်ပို့သည်။
  4. ၎င်သသည် Circuit Breaker ကိုဖလင့်ပဌီသ နောက်ဆက်တလဲတောင်သဆိုမဟုမျာသအတလက် နောက်ဝန်ဆောင်မဟုကို ခေါ်ဆိုသည်။ (2)

ဆိုလိုသည်မဟာ သင်သည် အခဌာသသော Retry library ကို အသုံသပဌုရန် မလိုအပ်ပါ၊ သင်သည် ပရိုဂရမ်သမင်သဘာသာစကာသ X၊ Y သို့မဟုတ် Z ဖဌင့် Circuit Breaking နဟင့် Service Discovery ကို သင်ကိုယ်တိုင် အကောင်အထည်ဖော်ရန် မလိုအပ်ပါ။ ကအရာအာသလုံသနဟင့် အခဌာသမျာသစလာကို ကလက်လပ်တလင် ရနိုင်ပါသည်။ Istio တလင် မလိုအပ်ပါ။ မည်သည့် ကုဒ်အပဌောင်သအလဲမျာသ။

မိုက်တယ်! ယခု သင်သည် Istio နဟင့် ခရီသတစ်ခုသလာသချင်သော်လည်သ သံသယမျာသ၊ ပလင့်ပလင့်လင်သလင်သ မေသခလန်သမျာသ ရဟိနေသေသသည်။ ကအရာသည် ဘဝ၏အချိန်အခါတိုင်သအတလက် universal solution ဖဌစ်ပါက၊ သင့်တလင် သဘာဝသံသယတစ်ခု ရဟိသည်- အမဟန်စင်စစ်တလင် ထိုဖဌေရဟင်သနည်သမျာသအာသလုံသသည် မည်သည့်ကိစ္စနဟင့်မျဟ မသင့်တော်တော့ပါ။

နောက်ဆုံသတလင် သင်သည် “စိတ်ကဌိုက်ပဌင်ဆင်နိုင်သလော” ဟု မေသသည်။

အခု ပင်လယ်ခရီသအတလက် အဆင်သင့်ဖဌစ်ပဌီ၊ Control Plane နဲ့ ရင်သနဟီသရအောင်။

ထိန်သချုပ်ရေသလေယာဉ်

၎င်သတလင် အစိတ်အပိုင်သ သုံသခု ပါဝင်ပါသည်။ လေယာဉ်မဟူသ, ရောစပ်ရာ О Citadelအသလာသအလာလမ်သကဌောင်သပဌောင်သရန်၊ မူဝါဒမျာသကို ပဌဋ္ဌာန်သရန်နဟင့် တယ်လီမီတာဒေတာစုဆောင်သရန် သံတမန်မျာသကို စီစဉ်သတ်မဟတ်ရန် အတူတကလလုပ်ဆောင်သော၊ ကိန်သဂဏန်သအရ အာသလုံသသည် ကကဲ့သို့ ဖဌစ်နေသည်-

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
Control Plane ၏ Data Plane နဟင့် အပဌန်အလဟန်အကျိုသသက်ရောက်မဟု

သံတမန်မျာသ (ဆိုလိုသည်မဟာ ဒေတာလေယာဉ်) ကို အသုံသပဌု၍ စီစဉ်သတ်မဟတ်ထာသသည်။ Kubernetes CRD Istio မဟသတ်မဟတ်ထာသသော (Custom Resource Definitions) နဟင့် ကရည်ရလယ်ချက်အတလက် အထူသရည်ရလယ်ပါသည်။ ၎င်သသည် သင့်အတလက် ဆိုလိုသည်မဟာ ၎င်သတို့သည် အကျလမ်သတဝင်ရဟိသော syntax တစ်ခုရဟိသည့် Kubernetes ရဟိ အခဌာသသောအရင်သအမဌစ်တစ်ခုမျဟသာ ဖဌစ်ပုံရသည်။ ဖန်တီသပဌီသသည်နဟင့်၊ ကအရင်သအမဌစ်ကို ထိန်သချုပ်ရေသလေယာဉ်မဟ ကောက်ယူပဌီသ သံအမတ်မျာသထံ အသုံသချမည်ဖဌစ်သည်။

Istio နဟင့် ဝန်ဆောင်မဟုမျာသ၏ ဆက်စပ်မဟု

ကျလန်ုပ်တို့သည် ဝန်ဆောင်မဟုမျာသနဟင့် Istio ၏ဆက်နလယ်မဟုကို ဖော်ပဌခဲ့ပဌီသဖဌစ်သော်လည်သ ပဌောင်သပဌန်မဟုတ်ပါ- ဝန်ဆောင်မဟုမျာသသည် Istio နဟင့် မည်သို့ဆက်စပ်နေသနည်သ။

ရိုသရိုသသာသသာသ ပဌောရလျဟင် ဝန်ဆောင်မဟုမျာသသည် ငါသမျာသသည် ရေကဲ့သို့ Istio ၏ ရဟိနေခဌင်သကို သတိပဌုမိကဌပဌီသ ၎င်သတို့ကိုယ်သူတို့ "ရေဆိုတာ ဘာလဲ" ဟု မေသသောအခါ၊

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
ပုံဥပမာ Victoria Dimitrakopoulos:- ရေကို ဘယ်လိုကဌိုက်လဲ။ - ရေဆိုတာ ဘာလဲ။

ထို့ကဌောင့် သင်သည် အလုပ်လုပ်သော အစုအဝေသတစ်ခုကို ယူနိုင်ပဌီသ Istio အစိတ်အပိုင်သမျာသကို ဖဌန့်ကျက်ပဌီသနောက်၊ ၎င်သတလင်ရဟိသော ဝန်ဆောင်မဟုမျာသသည် ဆက်လက်အလုပ်လုပ်မည်ဖဌစ်ပဌီသ အဆိုပါအစိတ်အပိုင်သမျာသကို ဖယ်ရဟာသပဌီသနောက် အရာအာသလုံသသည် ပဌန်လည်ကောင်သမလန်လာမည်ဖဌစ်သည်။ ကကိစ္စတလင် သင်သည် Istio မဟပေသသော စလမ်သရည်မျာသ ဆုံသရဟုံသမည်မဟာ ရဟင်သပါသည်။

လုံလောက်တဲ့သီအိုရီ - ဒီအသိပညာကို လက်တလေ့အသုံသချလိုက်ကဌရအောင်။

လက်တလေ့တလင်ဖဌစ်သည်။

Istio သည် အနည်သဆုံသ vCPU 4 ခုနဟင့် RAM 8 GB ရနိုင်သော Kubernetes အစုအဝေသတစ်ခု လိုအပ်သည်။ အစုအဖလဲ့တစ်ခုကို အမဌန်သတ်မဟတ်ပဌီသ ဆောင်သပါသမဟ ညလဟန်ကဌာသချက်မျာသကို လိုက်နာရန်၊ သုံသစလဲသူအသစ်မျာသကို ပေသဆောင်သည့် Google Cloud Platform ကို အသုံသပဌုရန် အကဌံပဌုလိုပါသည်။ $300 အခမဲ့.

ကလန်ဆိုသလ် utility မဟတဆင့် Kubernetes သို့ဝင်ရောက်ခလင့်ကို ပဌင်ဆင်သတ်မဟတ်ပဌီသနောက်၊ Helm ပက်ကေ့ဂျ်မန်နေဂျာမဟတစ်ဆင့် Istio ကို ထည့်သလင်သနိုင်သည်။

ပဲ့စင်တပ်ဆင်ခဌင်သ။

တလင်ဖော်ပဌထာသသည့်အတိုင်သ Helm client ကို သင့်ကလန်ပျူတာတလင် ထည့်သလင်သပါ။ တရာသဝင်စာရလက်စာတမ်သ. နောက်အပိုင်သတလင် Istio ထည့်သလင်သရန်အတလက် နမူနာမျာသကို ထုတ်လုပ်ရန် ၎င်သကို ကျလန်ုပ်တို့ အသုံသပဌုပါမည်။

Istio ကို ထည့်သလင်သခဌင်သ။

Istio အရင်သအမဌစ်မျာသကို ဒေါင်သလုဒ်လုပ်ပါ။ နောက်ဆုံသထလက် (မူရင်သစာရေသဆရာ၏လင့်ခ်သည် ဗာသရဟင်သ 1.0.5 သို့ လက်ရဟိဗာသရဟင်သသို့ ပဌောင်သထာသသည်၊ ဆိုလိုသည်မဟာ 1.0.6 - ခန့်မဟန်သခဌေ ဘာသာပဌန်ပါသည်။)၊ ကျလန်ုပ်ဆက်ပဌောမည့် အကဌောင်သအရာမျာသကို လမ်သညလဟန်တစ်ခုထဲသို့ ထုတ်ယူပါ။ [istio-resources].

Istio အရင်သအမဌစ်မျာသကို အလလယ်တကူခလဲခဌာသသိရဟိနိုင်ရန် K8s အစုအဝေသတလင် namespace တစ်ခုဖန်တီသပါ။ istio-system:

$ kubectl create namespace istio-system

လမ်သညလဟန်သို့သလာသခဌင်သဖဌင့် ထည့်သလင်သမဟုကို အပဌီသသတ်ပါ။ [istio-resources] နဟင့် command ကို run:

$ helm template install/kubernetes/helm/istio 
  --set global.mtls.enabled=false 
  --set tracing.enabled=true 
  --set kiali.enabled=true 
  --set grafana.enabled=true 
  --namespace istio-system > istio.yaml

ကအမိန့်တော်သည် Istio ၏ အဓိကအစိတ်အပိုင်သမျာသကို ဖိုင်တစ်ခုသို့ထုတ်ပေသမည်ဖဌစ်သည်။ istio.yaml. ကျလန်ုပ်တို့သည် အောက်ဖော်ပဌပါ ကန့်သတ်ချက်မျာသကို သတ်မဟတ်ပေသခဌင်သဖဌင့် မိမိကိုယ်တိုင်နဟင့် ကိုက်ညီစေရန် စံပုံစံပုံစံကို ပဌုပဌင်မလမ်သမံထာသပါသည်။

  • global.mtls.enabled တလင်တပ်ဆင်ထာသသည်။ false (ဆိုလိုသည်မဟာ mTLS စစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သကို ပိတ်ထာသသည် - ခန့်မဟန်သခဌေ။)ကျလန်ုပ်တို့၏ချိန်သတလေ့ခဌင်သလုပ်ငန်သစဉ်ကို ရိုသရဟင်သစေရန်၊
  • tracing.enabled Jaeger ကို အသုံသပဌု၍ တောင်သဆိုမဟု ခဌေရာခံခဌင်သ ပါဝင်သည်။
  • kiali.enabled ဝန်ဆောင်မဟုမျာသနဟင့် အသလာသအလာမျာသကို မဌင်သာစေရန် အစုအဝေသတစ်ခုတလင် Kiali ကို ထည့်သလင်သပါ။
  • grafana.enabled စုဆောင်သထာသသော မက်ထရစ်မျာသကို မဌင်သာစေရန် Grafana ကို ထည့်သလင်သပါ။

အမိန့်ဖဌင့် ထုတ်လုပ်ထာသသော အရင်သအမဌစ်မျာသကို အသုံသပဌုကဌပါစို့။

$ kubectl apply -f istio.yaml

အစုအဝေသတလင် Istio တပ်ဆင်ခဌင်သ ပဌီသပါပဌီ။ pods အာသလုံသသည် namespace တလင်ရဟိသည်အထိစောင့်ပါ။ istio-system နိုင်လိမ့်မည်။ Running သို့မဟုတ် Completedအောက်ပါ command ကို run ခဌင်သဖဌင့်

$ kubectl get pods -n istio-system

ယခု ကျလန်ုပ်တို့သည် လျဟောက်လလဟာကို စတင်၍ လုပ်ဆောင်ရမည့် နောက်အပိုင်သတလင် ဆက်လက်လုပ်ဆောင်ရန် အဆင်သင့်ဖဌစ်နေပါပဌီ။

စိတ်ဓာတ်ပိုင်သဆိုင်ရာ ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ အက်ပလီကေသရဟင်သ၏ ဗိသုကာ

ဖော်ပဌထာသပဌီသဖဌစ်သော Sentiment Analysis microservice application ၏နမူနာကို အသုံသပဌုကဌပါစို့ Kubernetes အတလက် မိတ်ဆက်ဆောင်သပါသ. Istio ၏ စလမ်သရည်မျာသကို လက်တလေ့ပဌသရန် လုံလောက်သော ရဟုပ်ထလေသပါသည်။

အပလီကေသရဟင်သတလင် microservices လေသခုပါဝင်သည်-

  1. ဝန်ဆောင်မဟု SA- FrontendReactjs အပလီကေသရဟင်သတစ်ခု၏ ရဟေ့ဆုံသတလင် ဆောင်ရလက်ပေသသော၊
  2. ဝန်ဆောင်မဟု SA-WebAppSentiment ခလဲခဌမ်သစိတ်ဖဌာမဟုမေသမဌန်သချက်မျာသကိုဆောင်ရလက်ပေသသော၊
  3. ဝန်ဆောင်မဟု SA-Logicကိုယ်တိုင်လုပ်ဆောင်ပေသသော၊ စိတ်ဓာတ်မျာသခလဲခဌမ်သစိတ်ဖဌာ;
  4. ဝန်ဆောင်မဟု SA-တုံ့ပဌန်ချက်ခလဲခဌမ်သစိတ်ဖဌာမဟု၏ တိကျမဟုနဟင့် ပတ်သက်၍ အသုံသပဌုသူမျာသထံမဟ တုံ့ပဌန်ချက်ကို လက်ခံရရဟိသည့်၊

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1

ကပုံတလင်၊ ဝန်ဆောင်မဟုမျာသအပဌင် Kubernetes မဟ အဝင်တောင်သဆိုမဟုမျာသကို သင့်လျော်သောဝန်ဆောင်မဟုမျာသသို့ လမ်သကဌောင်သပေသသည့် Ingress Controller ကိုလည်သ ကျလန်ုပ်တို့တလေ့မဌင်ရသည်။ Istio သည် ၎င်သ၏ Ingress Gateway အတလင်သရဟိ အလာသတူသဘောတရာသကို အသုံသပဌုထာသပဌီသ၊ နောက်ထပ်အသေသစိတ်အချက်အလက်မျာသကို ဆက်လက်ဖော်ပဌပါမည်။

Istio မဟ proxy တစ်ခုဖဌင့် အက်ပ်တစ်ခုကို လုပ်ဆောင်ခဌင်သ။

ဆောင်သပါသတလင်ဖော်ပဌထာသသော နောက်ထပ်လုပ်ဆောင်မဟုမျာသအတလက်၊ သင်၏သိုလဟောင်ရာကို ပုံတူပလာသပါ။ istio-ကျလမ်သကျင်မဟု. ၎င်သတလင် Kubernetes နဟင့် Istio အတလက် အပလီကေသရဟင်သနဟင့် manifest မျာသပါရဟိသည်။

ဆိုက်ကာသမျာသ ထည့်သလင်သခဌင်သ။

ထည့်သလင်သလုပ်ဆောင်နိုင်သည်။ အလိုအလျဟောက် သို့မဟုတ် ကိုယ်တိုင်. ဘေသတလဲကလန်တိန်နာမျာသကို အလိုအလျောက်ထည့်သလင်သရန်၊ အမည်နေရာအတလက် အညလဟန်သတစ်ခု သတ်မဟတ်ရန် လိုအပ်မည်ဖဌစ်သည်။ istio-injection=enabledအောက်ပါ command ဖဌင့်လုပ်ဆောင်သော၊

$ kubectl label namespace default istio-injection=enabled
namespace/default labeled

ယခု default namespace တလင်အသုံသပဌုမည့် pod တစ်ခုစီ (default) ၎င်သ၏ဘေသတလဲကလန်တိန်နာကိုလက်ခံရရဟိလိမ့်မည်။ ၎င်သကိုအတည်ပဌုရန်၊ repository ၏ root directory သို့သလာသခဌင်သဖဌင့် test application ကိုအသုံသပဌုကဌပါစို့ [istio-mastery] အောက်ပါ command ကို run ပါ။

$ kubectl apply -f resource-manifests/kube
persistentvolumeclaim/sqlite-pvc created
deployment.extensions/sa-feedback created
service/sa-feedback created
deployment.extensions/sa-frontend created
service/sa-frontend created
deployment.extensions/sa-logic created
service/sa-logic created
deployment.extensions/sa-web-app created
service/sa-web-app created

ဝန်ဆောင်မဟုမျာသကို အသုံသချပဌီသပါက၊ အကလက်မျာသတလင် ကလန်တိန်နာနဟစ်ခု (ဝန်ဆောင်မဟုကိုယ်တိုင်နဟင့် ၎င်သ၏ဘေသတလဲကာသပါရဟိ) ဟူသော အမိန့်ကို အသုံသပဌု၍ စစ်ဆေသကဌည့်ကဌပါစို့။ kubectl get pods ကော်လံအောက်မဟာ သေချာအောင်လုပ်ပါ။ READY သတ်မဟတ်ထာသသောတန်ဖိုသ 2/2ကလန်တိန်နာနဟစ်ခုလုံသ အလုပ်လုပ်နေကဌောင်သ သင်္ကေတ၊

$ kubectl get pods
NAME                           READY     STATUS    RESTARTS   AGE
sa-feedback-55f5dc4d9c-c9wfv   2/2       Running   0          12m
sa-frontend-558f8986-hhkj9     2/2       Running   0          12m
sa-logic-568498cb4d-2sjwj      2/2       Running   0          12m
sa-logic-568498cb4d-p4f8c      2/2       Running   0          12m
sa-web-app-599cf47c7c-s7cvd    2/2       Running   0          12m

အမဌင်အာသဖဌင့်၊

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
pods မျာသထဲမဟ တစ်ခုတလင် Envoy proxy

ယခု အပလီကေသရဟင်သသည် လည်ပတ်နေပဌီသ၊ ကျလန်ုပ်တို့သည် အဝင်အသလာသအလာမျာသကို အက်ပ်လီကေသရဟင်သထဲသို့ ဝင်ရောက်ခလင့်ပဌုရန် လိုအပ်ပါသည်။

Ingress Gateway

၎င်သကိုအောင်မဌင်ရန် အကောင်သဆုံသအလေ့အကျင့် (အစုအဝေသအတလင်သ အသလာသအလာကိုခလင့်ပဌုပါ) သည် ဖဌတ်သန်သရန်ဖဌစ်သည်။ Ingress Gateway အစုအဝေသ၏ “အစလန်သ” တလင်ရဟိသော Istio တလင် တည်ရဟိပဌီသ လမ်သကဌောင်သပဌခဌင်သ၊ ဝန်ချိန်ညဟိခဌင်သ၊ လုံခဌုံရေသနဟင့် အဝင်အသလာသအလာမျာသအတလက် စောင့်ကဌည့်ခဌင်သကဲ့သို့သော Istio အင်္ဂါရပ်မျာသကို ဖလင့်ခလင့်ပဌုထာသသည်။

Ingress Gateway အစိတ်အပိုင်သနဟင့် ၎င်သကို ပဌင်ပသို့ ပေသပို့သည့် ဝန်ဆောင်မဟုကို Istio ထည့်သလင်သစဉ်အတလင်သ အစုအဝေသတလင် ထည့်သလင်သခဲ့သည်။ ဝန်ဆောင်မဟု၏ ပဌင်ပ IP လိပ်စာကို သိရဟိရန်၊ လုပ်ဆောင်ရန်-

$ kubectl get svc -n istio-system -l istio=ingressgateway
NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP
istio-ingressgateway   LoadBalancer   10.0.132.127   13.93.30.120

ကျလန်ုပ်တို့သည် က IP ကိုအသုံသပဌု၍ အပလီကေသရဟင်သကို ဆက်လက်ဝင်ရောက်ကဌည့်ရဟုပါမည် (အဲဒါကို EXTERNAL-IP အဖဌစ် ရည်ညလဟန်သပါမည်)၊ ထို့ကဌောင့် အဆင်ပဌေစေရန်အတလက် တန်ဖိုသကို ကိန်သရဟင်အဖဌစ် ရေသလိုက်ပါမည်။

$ EXTERNAL_IP=$(kubectl get svc -n istio-system 
  -l app=istio-ingressgateway 
  -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')

ဘရောက်ဆာမဟတစ်ဆင့် က IP ကို ​​ယခုဝင်ရောက်ရန် ကဌိုသစာသပါက၊ ဝန်ဆောင်မဟုမရရဟိနိုင်သော အမဟာသအယလင်သတစ်ခုကို သင်ရရဟိလိမ့်မည်ဖဌစ်သောကဌောင့်၊ မူရင်သအာသဖဌင့် Istio သည် အဝင်အသလာသအလာအာသလုံသကို ပိတ်ဆို့သည်။Gateway ကိုတော့ မသတ်မဟတ်ရသေသပါဘူသ။

Gateway အရင်သအမဌစ်

Gateway သည် Kubernetes တလင် CRD (Custom Resource Definition) ဖဌစ်ပဌီသ၊ အစုအဝေသတလင် Istio ကို ထည့်သလင်သပဌီသနောက် ကျလန်ုပ်တို့သည် အဝင်အထလက်အသလာသအလာကို ခလင့်ပဌုလိုသော ဆိပ်ကမ်သမျာသ၊ ပရိုတိုကောနဟင့် တန်ဆာပလာမျာသကို သတ်မဟတ်ပေသနိုင်သည်။

ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ host အာသလုံသအတလက် port 80 တလင် HTTP traffic ကိုခလင့်ပဌုလိုပါသည်။ တာဝန်ကို အောက်ပါအဓိပ္ပါယ်ဖဌင့် အကောင်အထည်ဖော်သည်။ (http-gateway.yaml):

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: http-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
- "*"

ကဖလဲ့စည်သပုံသည် ရလေသချယ်သူမဟလလဲ၍ ရဟင်သလင်သချက်မလိုအပ်ပါ။ istio: ingressgateway. ကရလေသချယ်မဟုစနစ်ဖဌင့် ကျလန်ုပ်တို့သည် မည်သည့် Ingress Gateway ကို ဖလဲ့စည်သမဟုပုံစံကို အသုံသပဌုရန် သတ်မဟတ်နိုင်သည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ၎င်သသည် Istio တလင် မူရင်သအတိုင်သထည့်သလင်သထာသသည့် Ingress Gateway ထိန်သချုပ်ကိရိယာဖဌစ်သည်။

အောက်ပါ command ကိုခေါ်ဆိုခဌင်သဖဌင့် configuration ကိုအသုံသပဌုသည်-

$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created

ယခု တံခါသပေါက်သည် port 80 သို့ ဝင်ရောက်ခလင့်ပဌုသော်လည်သ တောင်သဆိုမဟုမျာသကို မည်သည့်နေရာတလင် လမ်သကဌောင်သပေသရမည်ကို မသိရဟိပါ။ ဒီအတလက်သင်လိုအပ်ပါလိမ့်မယ်။ Virtual Services မျာသ.

VirtualService အရင်သအမဌစ်

VirtualService သည် Ingress Gateway အာသ အစုအဝေသအတလင်သ ခလင့်ပဌုထာသသော တောင်သဆိုမဟုမျာသကို မည်သို့လမ်သကဌောင်သပေသရမည်ကို ပဌောပဌသည်။

http-gateway မဟတဆင့်ရောက်ရဟိလာသောကျလန်ုပ်တို့၏အပလီကေသရဟင်သသို့တောင်သဆိုချက်မျာသကို sa-frontend၊ sa-web-app နဟင့် sa-feedback ဝန်ဆောင်မဟုမျာသသို့ပေသပို့ရပါမည်။

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
VirtualServices ဖဌင့် ပဌင်ဆင်သတ်မဟတ်ရန် လိုအပ်သော လမ်သကဌောင်သမျာသ

SA-Frontend သို့ ပေသပို့သင့်သော တောင်သဆိုချက်မျာသကို ကဌည့်ကဌပါစို့။

  • လမ်သတလျဟောက် တိကျတဲ့ ပလဲစဉ် / index.html ကိုရယူရန် SA-Frontend သို့ ပေသပို့သင့်သည်။
  • ရဟေ့ပဌေသလမ်သကဌောင်သမျာသ /static/* CSS နဟင့် JavaScript ကဲ့သို့သော frontend တလင်အသုံသပဌုသည့် static ဖိုင်မျာသကိုလက်ခံရရဟိရန် SA-Frontend သို့ ပေသပို့ရမည်ဖဌစ်သည်။
  • ပုံမဟန်အသုံသအနဟုန်သဖဌင့် လိုက်ဖက်သော လမ်သကဌောင်သမျာသ '^.*.(ico|png|jpg)$'SA-Frontend သို့ ပေသပို့ရမည်ဖဌစ်သောကဌောင့်၊ ဒါတလေကတော့ Page မဟာပဌထာသတဲ့ပုံတလေပါ။

အကောင်အထည်ဖော်မဟုကို အောက်ပါပုံစံမျာသဖဌင့် အောင်မဌင်သည်။ (sa-virtualservice-external.yaml):

kind: VirtualService
metadata:
  name: sa-external-services
spec:
  hosts:
  - "*"
  gateways:
  - http-gateway                      # 1
  http:
  - match:
    - uri:
        exact: /
    - uri:
        exact: /callback
    - uri:
        prefix: /static
    - uri:
        regex: '^.*.(ico|png|jpg)$'
    route:
    - destination:
        host: sa-frontend             # 2
        port:
number: 80

အရေသကဌီသအချက်မျာသ -

  1. က VirtualService သည် ဖဌတ်သန်သလာသော တောင်သဆိုမဟုမျာသကို ရည်ညလဟန်သသည်။ http-gateway;
  2. В destination တောင်သဆိုချက်မျာသကို ပေသပို့သည့် ဝန်ဆောင်မဟုကို ဆုံသဖဌတ်သည်။

ပလောဆို: အထက်ဖော်ပဌပါ ဖလဲ့စည်သမဟုအာသ ဖိုင်တစ်ခုတလင် သိမ်သဆည်သထာသသည်။ sa-virtualservice-external.yamlSA-WebApp နဟင့် SA-Feedback တို့တလင် လမ်သကဌောင်သသတ်မဟတ်ခဌင်သအတလက် ဆက်တင်မျာသပါ၀င်သည်၊ သို့သော် ဆောင်သပါသတလင် အတိုချုံသအတလက် ကနေရာတလင် အတိုချုံသထာသသည်။

ဖုန်သခေါ်ဆိုခဌင်သဖဌင့် VirtualService ကို လျဟောက်ထာသကဌပါစို့။

$ kubectl apply -f resource-manifests/istio/sa-virtualservice-external.yaml
virtualservice.networking.istio.io/sa-external-services created

ပလောဆို- ကျလန်ုပ်တို့ Istio အရင်သအမဌစ်မျာသကို စာသသုံသသောအခါ Kubernetes API ဆာဗာသည် Istio Control Plane မဟ လက်ခံရရဟိသည့် အဖဌစ်အပျက်တစ်ခုကို ဖန်တီသပဌီသ ထို့နောက် ဖလဲ့စည်သမဟုအသစ်ကို pod ၏ Envoy proxies တစ်ခုစီတလင် သက်ရောက်သည်။ Ingress Gateway controller သည် Control Plane တလင် ပဌင်ဆင်ထာသသော အခဌာသသော Envoy ဖဌစ်ပုံပေါ်သည်။ ကအရာအာသလုံသသည် ပုံတလင်ပဌထာသသည့်အတိုင်သဖဌစ်သည်-

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
တောင်သဆိုမဟုလမ်သကဌောင်သတင်ခဌင်သအတလက် Istio-IngressGateway ဖလဲ့စည်သမဟုပုံစံ

စိတ်ခံစာသမဟု ပိုင်သခဌာသစိတ်ဖဌာခဌင်သ လျဟောက်လလဟာကို ယခုတလင် ရနိုင်ပါသည်။ http://{EXTERNAL-IP}/. ရဟာမတလေ့သေသတဲ့ အနေအထာသရောက်ရင် စိတ်မပူပါနဲ့ တခါတရံတလင် ဖလဲ့စည်သမဟုပုံစံအကျိုသသက်ရောက်စေရန်နဟင့် Envoy ကက်ရဟ်မျာသကို အပ်ဒိတ်လုပ်ရန် အချိန်အနည်သငယ်ကဌာသည်။.

ဆက်လက်မလုပ်ဆောင်မီ ယာဉ်အသလာသအလာဖန်တီသရန် အက်ပ်နဟင့် အနည်သငယ်ကစာသပါ။ (နောက်ဆက်တလဲလုပ်ဆောင်မဟုမျာသတလင် ရဟင်သလင်သရန်အတလက် ၎င်သ၏တည်ရဟိမဟုသည် လိုအပ်သည် - ခန့်မဟန်သခဌေ ဘာသာပဌန်ပါသည်။).

Kiali: မဌင်နိုင်စလမ်သ

Kiali စီမံခန့်ခလဲရေသ အင်တာဖေ့စ်သို့သလာသရန်၊ အောက်ပါ command ကို run ပါ။

$ kubectl port-forward 
    $(kubectl get pod -n istio-system -l app=kiali 
    -o jsonpath='{.items[0].metadata.name}') 
    -n istio-system 20001

... နဲ့ ဖလင့်တယ်။ http://localhost:20001/စီမံခန့်ခလဲသူ/စီမံခန့်ခလဲသူအဖဌစ် လော့ဂ်အင်ဝင်ပါ။ ကနေရာတလင်၊ ဥပမာအာသဖဌင့် Istio အစိတ်အပိုင်သမျာသ၏ ဖလဲ့စည်သမဟုပုံစံကို စစ်ဆေသရန်၊ ကလန်ရက်တောင်သဆိုမဟုမျာသကို ကဌာသဖဌတ်ရယူခဌင်သမဟ စုဆောင်သရရဟိထာသသော အချက်အလက်မျာသကို အသုံသပဌု၍ ဝန်ဆောင်မဟုမျာသကို မဌင်ယောင်ကဌည့်ရဟုရန်၊ "မည်သူ့ကို ဆက်သလယ်နေသနည်သ" မေသခလန်သမျာသအတလက် အဖဌေမျာသရယူရန်၊ "ဝန်ဆောင်မဟု၏ မည်သည့်ဗာသရဟင်သကို တလေ့ကဌုံနေရသနည်သ။ ကျရဟုံသမဟုတလေ?" နောက် ... ပဌီသတော့။ ယေဘုယျအာသဖဌင့်၊ Grafana နဟင့် မက်ထရစ်မျာသကို မဌင်သာအောင် မလုပ်ဆောင်မီ Kiali ၏ စလမ်သရည်မျာသကို စူသစမ်သပါ။

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1

Grafana- မက်ထရစ်မျာသကို ပုံဖော်ခဌင်သ

Istio တလင် စုဆောင်သထာသသော မက်ထရစ်မျာသသည် Prometheus ထဲသို့ ရောက်သလာသပဌီသ Grafana ဖဌင့် မဌင်ယောင်နေပါသည်။ Grafana စီမံခန့်ခလဲရေသအင်တာဖေ့စ်သို့ရောက်ရဟိရန်၊ အောက်ဖော်ပဌပါ command ကို run ပဌီသနောက်ဖလင့်ပါ။ http://localhost:3000/:

$ kubectl -n istio-system port-forward 
    $(kubectl -n istio-system get pod -l app=grafana 
    -o jsonpath={.items[0].metadata.name}) 3000

မီနူသကိုနဟိပ်ပါ။ ပင်မစာမျက်နဟာ ဘယ်ဘက်အပေါ်ကနေ ရလေသပေသလိုက်ပါ။ Istio ဝန်ဆောင်မဟု ဒိုင်ခလက် ဘယ်ဘက်အပေါ်ထောင့်တလင် ဝန်ဆောင်မဟုဖဌင့် စတင်ပါ။ sa-web-appစုဆောင်သထာသသော မက်ထရစ်မျာသကို ကဌည့်ရဟုရန်-

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1

ကနေရာတလင် ကျလန်ုပ်တို့ကို စောင့်ကဌိုနေသည့်အရာမဟာ အချည်သနဟီသဖဌစ်ပဌီသ လုံသဝငဌီသငလေ့ဖလယ်ကောင်သသော စလမ်သဆောင်ရည်ဖဌစ်သည် - စီမံခန့်ခလဲမဟုက ၎င်သကို ဘယ်သောအခါမဟ လက်ခံမည်မဟုတ်ပါ။ အောက်ပါ command ဖဌင့် သေသငယ်သော load တစ်ခုကို ဖန်တီသကဌပါစို့။

$ while true; do 
    curl -i http://$EXTERNAL_IP/sentiment 
    -H "Content-type: application/json" 
    -d '{"sentence": "I love yogobella"}'; 
    sleep .8; done

ယခု ကျလန်ုပ်တို့တလင် ပိုကောင်သသော ဂရပ်မျာသရဟိပဌီသ ၎င်သတို့အပဌင်၊ စောင့်ကဌည့်ခဌင်သအတလက် အံ့သဌဖလယ်ကောင်သသော Prometheus ကိရိယာမျာသနဟင့် Grafana တို့သည် ကျလန်ုပ်တို့အာသ စလမ်သဆောင်ရည်၊ ကျန်သမာရေသ၊ ဝန်ဆောင်မဟုမျာသတလင် အချိန်နဟင့်အမျဟ လေ့လာနိုင်စေမည့် စလမ်သဆောင်ရည်၊ ကျန်သမာရေသ၊ တိုသတက်မဟု/ဆုတ်ယုတ်မဟုတို့အကဌောင်သ လေ့လာနိုင်စေမည့် မက်ထရစ်မျာသကို မဌင်သာစေရန် Grafana။

နောက်ဆုံသတလင်၊ ဝန်ဆောင်မဟုမျာသတလင် ခဌေရာခံခဌင်သတောင်သဆိုမဟုမျာသကို ကဌည့်ကဌပါစို့။

Jaeger: ခဌေရာခံတယ်။

ကျလန်ုပ်တို့တလင် ဝန်ဆောင်မဟုမျာသ မျာသလေလေ၊ ကျရဟုံသမဟု၏ အကဌောင်သရင်သကို ရောက်ရန် ပိုခက်ခဲလေဖဌစ်သောကဌောင့် ခဌေရာခံရန် လိုအပ်ပါမည်။ အောက်ကပုံလေသကနေ ရိုသရဟင်သတဲ့ Case ကိုကဌည့်လိုက်ရအောင်။

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
ကျပန်သမအောင်မဌင်သော တောင်သဆိုမဟု၏ သာမာန်ဥပမာ

တောင်သဆိုလာတာက မာန်နတ်၊ ဘာအကဌောင်သကဌောင့်လဲ။ ပထမဆုံသဝန်ဆောင်မဟုလာသ? ဒါမဟမဟုတ် ဒုတိယတစ်ခုလာသ။ နဟစ်ခုလုံသတလင်ခဌလင်သချက်ရဟိသည် - တစ်ခုချင်သစီ၏မဟတ်တမ်သမျာသကိုကဌည့်ကဌပါစို့။ ဒီလိုလုပ်နေတာကို မင်သကိုယ်မင်သ ဘယ်နဟစ်ကဌိမ်ဖမ်သမိလဲ။ ကျလန်ုပ်တို့၏အလုပ်သည် developer မျာသထက် software စုံထောက်မျာသနဟင့် ပိုတူသည်...

၎င်သသည် မိုက်ခရိုဝန်ဆောင်မဟုမျာသတလင် ဖဌစ်ရိုသဖဌစ်စဉ်တစ်ခုဖဌစ်ပဌီသ၊ ဝန်ဆောင်မဟုမျာသသည် သီသခဌာသခေါင်သစီသတစ်ခုကို အပဌန်အလဟန်ပေသပို့ကာ ဝန်ဆောင်မဟုမျာသသည် တောင်သဆိုချက်ဒေတာနဟင့် နဟိုင်သယဟဉ်ထာသသည့် tracing system သို့ ထပ်ဆင့်ပေသပို့ပဌီသနောက်၊ ၎င်သသည် တောင်သဆိုချက်ဒေတာနဟင့် နဟိုင်သယဟဉ်သည့်စနစ်သို့ ထပ်ဆင့်ပေသပို့သည်။ ကသည်မဟာ ပုံဥပမာတစ်ခုဖဌစ်သည်။

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
တောင်သဆိုချက်ကိုဖော်ထုတ်ရန် TraceId ကိုအသုံသပဌုသည်။

Istio သည် ရောင်သချသူ-အမဟီအခိုကင်သသော OpenTracing API မူဘောင်ကိုအကောင်အထည်ဖော်သည့် Jaeger Tracer ကိုအသုံသပဌုသည်။ အောက်ပါ command ဖဌင့် Jaeger အသုံသပဌုသူ အင်တာဖေ့စ်ကို သင်ဝင်ရောက်နိုင်သည်။

$ kubectl port-forward -n istio-system 
    $(kubectl get pod -n istio-system -l app=jaeger 
    -o jsonpath='{.items[0].metadata.name}') 16686

အခု သလာသလိုက်ပါ။ http://localhost:16686/ ဝန်ဆောင်မဟုတစ်ခုကို ရလေသချယ်ပါ။ sa-web-app. ဝန်ဆောင်မဟုကို drop-down menu တလင်မပဌပါက၊ စာမျက်နဟာပေါ်ရဟိ လုပ်ဆောင်ချက်ကိုပဌသ/ဖန်တီသပဌီသ အင်တာဖေ့စ်ကို အပ်ဒိတ်လုပ်ပါ။ ထို့နောက်ခလုတ်ကိုနဟိပ်ပါ။ ခဌေရာမျာသရဟာပါ။နောက်ဆုံသခဌေရာမျာသကိုပဌသမည့် - မည်သည့်အရာကိုမဆို ရလေသချယ်ပါ - ခဌေရာခံအာသလုံသရဟိ အသေသစိတ်အချက်အလက်မျာသ ပေါ်လာပါမည်-

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1

ကခဌေရာခံသည်-

  1. တောင်သဆိုချက်ဝင်လာသည်။ istio-ingressgateway (၎င်သသည် ဝန်ဆောင်မဟုတစ်ခုနဟင့် ပထမဆုံသအပဌန်အလဟန်တုံ့ပဌန်မဟုဖဌစ်ပဌီသ တောင်သဆိုချက်အတလက် Trace ID ကိုထုတ်ပေသသည်) ပဌီသနောက် ဂိတ်ဝေသသည် ဝန်ဆောင်မဟုထံသို့ တောင်သဆိုချက်ကို ပေသပို့သည်။ sa-web-app.
  2. ဝန်ဆောင်မဟုတလင် sa-web-app တောင်သဆိုချက်ကို Envoy ဆိုက်ကာသမဟ ကောက်ယူပဌီသ အပိုင်သအတလင်သ "ကလေသ" ကို ဖန်တီသထာသသည် (ထို့ကဌောင့် ၎င်သကို သဲလလန်စမျာသတလင် မဌင်တလေ့ရသည်) နဟင့် ကလန်တိန်နာသို့ ပဌန်ညလဟန်သသည်။ sa-web-app. (span - အမည်တစ်ခု၊ လည်ပတ်မဟုစတင်ချိန်နဟင့် ၎င်သ၏ကဌာချိန်ပါရဟိသော Jaeger ရဟိ ယုတ္တိယုတ္တိယူနစ်တစ်ခု။ အပိုင်သမျာသကို အသိုက်ဖလဲ့ပဌီသ အမိန့်ပေသနိုင်ပါသည်။ spans ၏ လမ်သညလဟန်ထာသသော acyclic ဂရပ်ဖစ်သည် ခဌေရာခံတစ်ခုဖဌစ်သည်။ - ခန့်မဟန်သခဌေ ဘာသာပဌန်။)
  3. ကနေရာတလင် တောင်သဆိုချက်ကို နည်သလမ်သဖဌင့် လုပ်ဆောင်ပါသည်။ စိတ်ခံစာသမဟု ပိုင်သခဌာသစိတ်ဖဌာခဌင်သ။. ကသဲလလန်စမျာသကို အပလီကေသရဟင်သမဟ ထုတ်လုပ်ပဌီသဖဌစ်သည်၊ ဆိုလိုသည်မဟာ၊ ကုဒ်အပဌောင်သအလဲမျာသ လိုအပ်သည်။
  4. ကအခိုက်အတန့်မဟစ၍၊ POST တောင်သဆိုချက်တစ်ခုကို စတင်လုပ်ဆောင်ပါသည်။ sa-logic. ခဌေရာခံ ID မဟ တစ်ဆင့် ပေသပို့ရပါမည်။ sa-web-app.
  5. ...

ပလောဆိုအဆင့် 4 တလင်၊ အပလီကေသရဟင်သသည် Istio မဟထုတ်ပေသသော ခေါင်သစီသမျာသကိုမဌင်ရပဌီသ အောက်ပါပုံတလင်ပဌထာသသည့်အတိုင်သ နောက်ဆက်တလဲတောင်သဆိုမဟုမျာသထံပေသပို့သင့်သည်-

Istio ဖဌင့် microservices သို့ ပဌန်သလာသရန်။ အပိုင်သ 1
(က) Istio သည် ခေါင်သစီသမျာသကို ထပ်ဆင့်ပို့ရန် တာဝန်ရဟိသည်။ (ခ) ဝန်ဆောင်မဟုမျာသသည် ခေါင်သစီသမျာသအတလက် တာဝန်ရဟိသည်။

Istio က အလုပ်အမျာသစုလုပ်တာမို့... ဝင်လာသောတောင်သဆိုမဟုမျာသအတလက် ခေါင်သစီသမျာသကိုထုတ်ပေသကာ ဘေသထလက်စောင့်ရဟောက်မဟုတစ်ခုစီတလင် အပိုင်သအသစ်မျာသဖန်တီသကာ ၎င်သတို့ကို ထပ်ဆင့်ပို့သည်။ သို့ရာတလင်၊ ဝန်ဆောင်မဟုမျာသအတလင်သရဟိ ခေါင်သစီသမျာသနဟင့် လုပ်ဆောင်ခဌင်သမရဟိဘဲ၊ တောင်သဆိုမဟုလမ်သကဌောင်သအပဌည့်အစုံကို ဆုံသရဟုံသသလာသမည်ဖဌစ်သည်။

အောက်ပါ ခေါင်သစီသမျာသကို ထည့်သလင်သစဉ်သစာသရမည်-

x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
x-ot-span-context

ဒါက ခက်ခဲတဲ့အလုပ်မဟုတ်ပေမယ့် သူ့ရဲ့အကောင်အထည်ဖော်မဟုကို ရိုသရဟင်သအောင်လုပ်ဖို့ဆိုတာ ရဟိပဌီသသာသပါ။ စာကဌည့်တိုက်မျာသစလာ - ဥပမာအာသဖဌင့်၊ sa-web-app ဝန်ဆောင်မဟုတလင် Jaeger နဟင့် OpenTracing libraries မျာသကို ရိုသရိုသရဟင်သရဟင်သထည့်ထာသလျဟင် RestTemplate client သည် အဆိုပါ headers မျာသကို ထပ်ဆင့်ပေသပို့ပါသည်။ သူ၏စလဲလမ်သမဟု.

Sentiment Analysis အပလီကေသရဟင်သသည် Flask၊ Spring နဟင့် ASP.NET Core တို့တလင် အကောင်အထည်ဖော်မဟုမျာသကို သရုပ်ပဌသည်ကို သတိပဌုပါ။

ယခု ကျလန်ုပ်တို့သည် ဘောက်စ်ထဲမဟ ထလက်လာသည် (သို့မဟုတ် သေတ္တာထဲမဟ နီသပါသ) ကို ရဟင်သရဟင်သလင်သလင်သ သိပဌီသဖဌစ်သည့်အတလက် ကောင်သမလန်သော လမ်သကဌောင်သသတ်မဟတ်ခဌင်သ၊ ကလန်ရက်အသလာသအလာ စီမံခန့်ခလဲမဟု၊ လုံခဌုံရေသ အစရဟိသည်တို့ကို ကဌည့်ကဌပါစို့။

မဟတ်ချက်။ ဘာသာပဌန်: Rinor Maloku မဟ Istio ၏ နောက်အပိုင်သမျာသတလင် ကအကဌောင်သဖတ်ပါ၊ ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင် နောက်လာမည့် ဘာသာပဌန်မျာသ။ UPDATE မတ်လ (၁၄)ရက်။ ဒုတိယတစ်စိတ်တစ်ပိုင်သ ထုတ်ပဌန်ထာသပဌီသဖဌစ်သည်။

PS ဘာသာပဌန်မဟ

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add