ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ Nginx ကို command နဟစ်ခုဖဌင့် စုစည်သထာသသည်။

မေတ္တာနဟင့်ကဌာသလိုက်ပါ၏!
ကျလန်ုပ်၏အမည်မဟာ Sergey ဖဌစ်ပါသည်၊ ကျလန်ုပ်သည် tinkoff.ru ပလပ်ဖောင်သ၏ API အဖလဲ့တလင် အခဌေခံအဆောက်အအုံအင်ဂျင်နီယာအဖဌစ် အလုပ်လုပ်ပါသည်။

ကဆောင်သပါသတလင်ကျလန်ုပ်တို့၏အသင်သသည် Balancers ကိုအခဌေခံ၍ ချိန်ခလင်လျဟာပဌင်ဆင်ရာတလင်ကဌုံတလေ့ရသောပဌဿနာမျာသအကဌောင်သပဌောပါမည်။ Nginx အမျိုသမျိုသသောပရောဂျက်မျာသအတလက်။ အမျာသစုကို ကျော်လလဟာသနိုင်စေမယ့် tool အကဌောင်သကိုလည်သ ပဌောပဌပေသပါမယ်။

Nginx သည် ဘက်စုံသုံသ၍ တက်ကဌလစလာ လုပ်ဆောင်နေသော ပရောက်စီဆာဗာဖဌစ်သည်။ ၎င်သတလင် module အမျာသအပဌာသပါ ၀ င်သည်၊ ကသည်မဟာ စာရင်သအပဌည့်အစုံမဟုတ်ပါ။. ပရောဂျက်တစ်ခုစီသည် Balancer ၏လုပ်ဆောင်နိုင်စလမ်သနဟင့် Nginx ဗာသရဟင်သ (ဥပမာ၊ http/2 နဟင့် grpc proxying ရဟိနေခဌင်သ) နဟင့် ၎င်သ၏ module မျာသ၏ဖလဲ့စည်သမဟုအပေါ်တလင် အချို့သောလိုအပ်ချက်မျာသကို ပဌဌာန်သထာသသည်။

သီသခဌာသ Linux ဖဌန့်ဖဌူသမဟုအောက်တလင် လုပ်ဆောင်နေသည့် လိုအပ်သော module အစုံပါသည့် အသစ်သောဗာသရဟင်သကို ကျလန်ုပ်တို့ မဌင်တလေ့လိုပါသည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ၎င်သတို့သည် deb- နဟင့် rpm-based စနစ်မျာသဖဌစ်သည်။ ကလန်တိန်နာမျာသပါသော ရလေသချယ်မဟုကို ကဆောင်သပါသတလင် ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ။

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ ချိန်ခလင်လျဟာလုပ်ဆောင်နိုင်စလမ်သကို အမဌန်ပဌောင်သလဲလိုပါသည်။ ကနေရာတလင် ချက်ချင်သပင် မေသစရာရဟိလာသည်- အရင်သအမဌစ်မျာသကို တတ်နိုင်သမျဟ အနည်သငယ်သုံသကာ ၎င်သကို မည်သို့အောင်မဌင်နိုင်မည်နည်သ။ ကျလန်ုပ်တို့သည် input parameters မျာသကို ကန့်သတ်နံပါတ်မျာသ သတ်မဟတ်နိုင်စေရန် လုပ်ငန်သစဉ်ကို သတ်မဟတ်ခဌင်သသည် ပိုကောင်သမည်ဖဌစ်ပဌီသ output တလင် လိုချင်သော OS အတလက် deb/rpm package ပုံစံဖဌင့် artifact တစ်ခုကို လက်ခံရရဟိမည်ဖဌစ်သည်။

ရလဒ်အနေဖဌင့် ပဌဿနာမျာသစလာကို ပုံဖော်နိုင်သည်-

  • Nginx ၏နောက်ဆုံသထလက်ဗာသရဟင်သနဟင့် အမဌဲတမ်သပက်ကေ့ဂျ်မျာသ မရဟိပါ။
  • လိုအပ်သော module မျာသနဟင့်ပက်ကေ့ချ်မျာသမရဟိပါ။
  • ပက်ကေ့ဂျ်တစ်ခုကို ကိုယ်တိုင် ပဌုစုပဌီသ တည်ဆောက်ခဌင်သသည် အချိန်ကုန်ပဌီသ ပင်ပန်သလလန်သလဟသည်။
  • ကသို့မဟုတ်ထို Nginx စံနမူနာကို မည်သို့စုစည်သထာသသည်ကို ဖော်ပဌချက်မရဟိပါ။

ကပဌဿနာမျာသကိုဖဌေရဟင်သရန်၊ လူသာသဖတ်နိုင်သောဖော်မတ်တလင် သတ်မဟတ်ချက်တစ်ခုထည့်သလင်သရန်နဟင့် ၎င်သကိုအခဌေခံ၍ လိုအပ်သောလုပ်ဆောင်နိုင်စလမ်သဖဌင့် Nginx ပက်ကေ့ခ်ျကို စုစည်သမည့်ကိရိယာတစ်ခုအတလက် လိုအပ်လာသည်။

Github ၏ကျယ်ပဌောလဟသောနေရာတလင်ကျလန်ုပ်တို့အတလက်သင့်လျော်သောရလေသချယ်ခလင့်ကိုရဟာမတလေ့သောကဌောင့်ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ကိရိယာကိုဖန်တီသရန်ဆုံသဖဌတ်ခဲ့သည် - nginx-တည်ဆောက်သူ.

အသေသစိတ်အချက်အလက် (တည်သဖဌတ်)

ကျလန်ုပ်တို့၏တူသလ်တလင်၊ ထို့နောက် Git repository တလင်ထည့်သလင်သနိုင်သည့် ကုဒ်ပုံစံဖဌင့် သတ်မဟတ်ချက်၏ဖော်ပဌချက်ကို ဖန်တီသလိုပါသည်။ ထိုသို့လုပ်ဆောင်ရန်၊ ကျလန်ုပ်တို့သည် ထိုသို့သောအရာမျာသအတလက် ရင်သနဟီသသည့်ပုံစံကို ရလေသချယ်ခဲ့သည် - yaml။ သတ်မဟတ်ချက် ဥပမာ-

nginx_version: 1.14.1
output_package: deb
modules:
  - module:
      name: nginx-auth-ldap
      git_url: https://github.com/kvspb/nginx-auth-ldap.git
      git_branch: master
      dependencies:
        - libldap2-dev
  - module:
      name: ngx_http_substitutions_filter_module
      git_url: https://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
  - module:
      name: headers-more-nginx-module
      web_url: https://github.com/openresty/headers-more-nginx-module/archive/v0.261.zip
  - module:
      name: nginx-module-vts
      git_url: https://github.com/vozlt/nginx-module-vts.git
      git_tag: v0.1.18
  - module:
      name: ngx_devel_kit
      git_url: https://github.com/simplresty/ngx_devel_kit.git
      git_tag: v0.3.0
  - module:
      name: ngx_cache_purge
      git_url: https://github.com/FRiCKLE/ngx_cache_purge.git
  - module:
      name: ngx_http_dyups_module
      git_url: https://github.com/yzprofile/ngx_http_dyups_module.git
  - module:
      name: nginx-brotli
      git_url: https://github.com/eustas/ngx_brotli.git
      git_tag: v0.1.2
  - module:
      name: nginx_upstream_check_module
      git_url: https://github.com/yaoweibin/nginx_upstream_check_module.git
  - module:
      name: njs
      git_url: https://github.com/nginx/njs.git
      git_tag: 0.2.5
      config_folder_path: nginx

ကနေရာတလင် ကျလန်ုပ်တို့သည် လိုအပ်သော module အစုံဖဌင့် Nginx ဗာသရဟင်သ 1.14.2 ပါသည့် deb ပက်ကေ့ချ်ကို မဌင်လိုကဌောင်သ ညလဟန်ပဌပါသည်။ မော်ဂျူသမျာသပါသည့်အပိုင်သသည် စိတ်ကဌိုက်ရလေသချယ်နိုင်သည်။ ၎င်သတို့တစ်ခုစီအတလက် သင်သတ်မဟတ်နိုင်သည်-

  • အမည်။
  • ရနိုင်သောလိပ်စာ-
    • Git repository အကိုင်သအခက် သို့မဟုတ် တဂ်ကိုလည်သ သတ်မဟတ်နိုင်သည်။
    • ဝဘ်လင့်ခ်ကို သိမ်သဆည်သပါ။
    • မဟတ်တမ်သသို့ ပဌည်တလင်သလင့်ခ်။

အချို့သော module မျာသသည် တပ်ဆင်ရန် နောက်ထပ်မဟီခိုမဟုမျာသ လိုအပ်သည်၊ ဥပမာ nginx-auth-ldap သည် libldap2-dev ကို ထည့်သလင်သရန်လိုအပ်သည်။ module ကိုဖော်ပဌသည့်အခါ လိုအပ်သောမဟီခိုမဟုမျာသကိုလည်သ သတ်မဟတ်နိုင်ပါသည်။

ပတ်ဝန်သကျင်

ကျလန်ုပ်တို့၏တူသလ်တလင် compilation၊ package assembly နဟင့် အခဌာသသော auxiliary software မျာသအတလက် ထည့်သလင်သထာသသော utilities မျာသပါရဟိသော ပတ်ဝန်သကျင်တစ်ခုကို လျင်မဌန်စလာရနိုင်သည်။ သင်လိုအပ်သမျဟအရာအာသလုံသပါရဟိသော Docker ကလန်တိန်နာသည် ကနေရာတလင် စံနမူနာဖဌစ်သည် (သိုလဟောင်ရုံတလင် ubuntu နဟင့် centos အတလက် Docker ဖိုင်မျာသ၏ နမူနာအချို့ရဟိနဟင့်ပဌီသဖဌစ်သည်)။

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

pip3 install -r requirements.txt
./main.py build -f [кПМфОг_файл].yaml -r [МПЌер_ревОзОО]

ကနေရာတလင် တည်သဖဌတ်မဟုနံပါတ်ကို ရလေသချယ်နိုင်မည်ဖဌစ်ပဌီသ ဗာသရဟင်သတင်ခဌင်သအတလက် အသုံသပဌုသည်။ ၎င်သကို ဆာဗာမျာသတလင် အပ်ဒိတ်လုပ်ရန် လလယ်ကူစေရန် ပက်ကေ့ခ်ျ၏ မက်တာအချက်အလက်တလင် ရေသသာသထာသသည်။
မဟတ်တမ်သတလေကနေ ဘာတလေဖဌစ်နေလဲ စောင့်ကဌည့်နိုင်တယ်။ ကသည်မဟာ အဓိကအချက်မျာသ၏ ဥပမာတစ်ခုဖဌစ်သည်။

builder - INFO - Parse yaml file: example.config.yaml
builder - INFO - Download scripts for build deb package
builder - INFO - Downloading nginx src...
builder - INFO - --> http://nginx.org/download/nginx-1.14.1.tar.gz
builder - INFO - Downloading 3d-party modules...
builder - INFO - Module nginx-auth-ldap will download by branch
builder - INFO - -- Done: nginx-auth-ldap
builder - INFO - -- Done: ngx_http_substitutions_filter_module
builder - INFO - Module headers-more-nginx-module will downloading
builder - INFO - Module nginx-module-vts will download by tag
builder - INFO - -- Done: nginx-module-vts
builder - INFO - Module ngx_devel_kit will download by tag
builder - INFO - -- Done: ngx_devel_kit
builder - INFO - -- Done: ngx_cache_purge
builder - INFO - -- Done: ngx_http_dyups_module
builder - INFO - Downloading dependencies
builder - INFO - Building .deb package
builder - INFO - Running 'dh_make'...
builder - INFO - Running 'dpkg-buildpackage'...
dpkg-deb: building package 'nginx' in '../nginx_1.14.1-1_amd64.deb'.

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

တသာသတည်သ

ကျလန်ုပ်တို့၏ကိရိယာကို CI/CD လုပ်ငန်သစဉ်မျာသတလင်လည်သ ပေါင်သစပ်နိုင်သည်။ ယနေ့လက်ရဟိရဟိနေသည့် CI စနစ်မျာသစလာထဲမဟ မည်သည့်အရာမဆို ယင်သကို ဥပမာအနေဖဌင့် ကူညီပေသနိုင်ပါသည်။ အသင်သမဌို့ သို့မဟုတ် Gitlab CI.

ရလဒ်အနေဖဌင့် Git repository တလင် သတ်မဟတ်ချက်မျာသ ပဌောင်သလဲသည့်အခါတိုင်သ၊ artifact တည်ဆောက်မဟုသည် အလိုအလျောက် စတင်မည်ဖဌစ်သည်။ တည်သဖဌတ်မဟုနံပါတ်သည် build launch counter နဟင့် ချိတ်ဆက်ထာသသည်။
အချိန်အနည်သငယ်ပိုပေသခဌင်သဖဌင့်၊ သင်သည် သင်၏ဒေသခံ ပက်ကေ့ဂျ်သိုလဟောင်မဟု၊ Nexus၊ Artifactory စသည်တို့သို့ ပေသပို့မည့် artifact ကို configure လုပ်နိုင်ပါသည်။

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

နောက်တစ်ခုကဘာလဲ

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

  • ကျလန်ုပ်တို့သည် ဖလဲ့စည်သမဟု၏ဖဌစ်နိုင်ခဌေကို ချဲ့ထလင်သော်လည်သ တစ်ချိန်တည်သတလင် ၎င်သကို တတ်နိုင်သမျဟ ရိုသရဟင်သအောင်ထာသပါ။ သင်သည် နဟစ်ခုသာလိုအပ်ပါက ဘောင်တစ်ထောင်ကို မသတ်မဟတ်ချင်ဘဲ ကျန်သည် ပုံသေအာသဖဌင့် ကိုက်ညီပါသည်။ ၎င်သတလင် စုစည်သမဟုအလံမျာသ ပါ၀င်သည် (ယခု သင်သည် ၎င်သတို့ကို အတလင်သပိုင်သဖလဲ့စည်သမဟုပုံစံဖိုင် src/config.py တလင် ပဌောင်သလဲနိုင်သည်)၊ တပ်ဆင်မဟုလမ်သကဌောင်သ နဟင့် စတင်အသုံသပဌုသူ။
  • ကျလန်ုပ်တို့သည် အမျိုသမျိုသသော artifact repositories သို့ ပက်ကေ့ဂျ်တစ်ခုကို အလိုအလျောက် ပေသပို့ခဌင်သအတလက် ရလေသချယ်စရာမျာသကို ပေါင်သထည့်နေပါသည်။
  • မော်ဂျူသတစ်ခုကို တင်သည့်အခါ စိတ်ကဌိုက်အမိန့်ကို လုပ်ဆောင်ပါ (ဥပမာ၊ အသုံသပဌုရန် github.com/nginx-modules/nginx_upstream_check_module သတ်သတ်မဟတ်မဟတ်ဗာသရဟင်သတစ်ခု၏ patch ကို ညသစလာအသုံသပဌုရပါမည်)
  • စစ်ဆေသမဟုမျာသထည့်ခဌင်သ-
    • အထုပ်ကို မဟန်ကန်စလာ ထည့်သလင်သထာသသည်။
    • Nginx တလင် လိုအပ်သောဗာသရဟင်သရဟိပဌီသ လိုအပ်သောအလံမျာသနဟင့် မော်ဂျူသမျာသဖဌင့် တည်ဆောက်ထာသသည်။
    • လိုအပ်သော လမ်သကဌောင်သမျာသ၊ အကောင့်မျာသနဟင့် အခဌာသအရာမျာသကို ဖန်တီသထာသသည်။

သို့သော် သင်သည် ကကိရိယာကို ယခုအသုံသပဌုနိုင်ပဌီသ တိုသတက်မဟုမျာသကိုလည်သ အကဌံပဌုနိုင်သည်- github.com/TinkoffCreditSystems/Nginx-builder မင်္ဂလာပါ

source: www.habr.com

မဟတ်ချက် Add