موږ خپل نګینکس د یو څو امرونو سره راټولوو

سلام!
زما نوم سرګي دی، زه د tinkoff.ru پلیټ فارم API ټیم کې د زیربنا انجنیر په توګه کار کوم.

پدې مقاله کې به زه د هغه ستونزو په اړه وغږیږم چې زموږ ټیم ورسره مخ و کله چې د بیلانس چمتو کولو پراساس نګینکس د مختلفو پروژو لپاره. زه به تاسو ته د هغه وسیلې په اړه هم ووایم چې ما ته یې اجازه راکړه چې ډیری یې بریالي کړم.

نګینکس یو څو اړخیز او په فعاله توګه پرمختللی پراکسي سرور دی. دا یو لوی شمیر ماډلونه لري، دا یو بشپړ لیست ندی. هره پروژه د بیلانس فعالیت او د نګینکس نسخه (د مثال په توګه د http/2 او grpc پراکسي شتون) او د دې ماډلونو جوړښت باندې ځینې اړتیاوې پلي کوي.

موږ غواړو د ماډلونو اړین سیټ سره تازه نسخه وګورو ، د ځانګړي لینکس توزیع لاندې پرمخ ځي. زموږ په قضیه کې، دا د deb- او rpm پر بنسټ سیسټمونه دي. د کانتینرونو اختیار پدې مقاله کې نه دی په پام کې نیول شوی.

موږ غواړو ژر تر ژره زموږ د بیلانس فعالیت بدل کړو. او دلته پوښتنه سمدلاسه راپورته کیږي: دا څنګه ترلاسه کول پداسې حال کې چې د امکان تر حده لږې سرچینې مصرف کړئ؟ دا به حتی غوره وي چې پروسه تنظیم کړئ ترڅو موږ وکولی شو د ان پټ پیرامیټونو محدود شمیر مشخص کړو ، او په محصول کې د مطلوب OS لپاره د deb/rpm کڅوړې په شکل کې آثار ترلاسه کړو.

د پایلې په توګه، یو شمیر ستونزې رامینځته کیدی شي:

  • د نګینکس وروستي نسخه سره تل کڅوړې شتون نلري.
  • د اړتیا وړ ماډلونو سره هیڅ کڅوړې شتون نلري.
  • په لاسي ډول د کڅوړې تالیف کول او رامینځته کول وخت نیسي او خورا ستړی کونکی دی.
  • دلته هیڅ توضیح نشته چې دا یا هغه نګینکس مثال څنګه راټول شوی.

د دې ستونزو د حل لپاره، د یوې وسیلې لپاره اړتیا رامینځته کیږي چې د انسان لخوا د لوستلو وړ ب formatه کې د توضیحاتو په توګه وټاکي او د دې پراساس اړین فعالیت سره د نګینکس کڅوړه راټول کړي.

د ګیتوب په پراخوالي کې زموږ لپاره مناسب انتخاب ونه موندل ، موږ پریکړه وکړه چې خپله وسیله جوړه کړو - nginx جوړونکی.

نرخونه

زموږ په وسیلې کې ، موږ غوښتل د کوډ په بڼه د توضیحاتو توضیحات رامینځته کړو ، کوم چې بیا د Git ذخیره کې کیښودل کیدی شي. د دې کولو لپاره، موږ د داسې شیانو لپاره پیژندل شوی بڼه غوره کړه - 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

دلته موږ په ګوته کوو چې موږ غواړو د نګینکس نسخه 1.14.2 سره د ماډلونو اړین سیټ سره د ډیب کڅوړه وګورو. د ماډلونو سره برخه اختیاري ده. د هر یو لپاره تاسو کولی شئ تنظیم کړئ:

  • نوم.
  • پته چې تاسو یې ترلاسه کولی شئ:
    • د Git ذخیره. تاسو کولی شئ یوه څانګه یا ټاګ هم مشخص کړئ.
    • آرشیف ویب لینک.
    • آرشیف ته سیمه ایز لینک.

ځینې ​​ماډلونه د نصبولو لپاره اضافي انحصار ته اړتیا لري، د بیلګې په توګه nginx-auth-ldap libldap2-dev نصب ته اړتیا لري. د ماډل تشریح کولو په وخت کې اړین انحصار هم مشخص کیدی شي.

چاپیریال

زموږ په وسیلې کې تاسو کولی شئ په چټکۍ سره د تالیف ، بسته بندۍ او نورو مرستندویه سافټویر لپاره نصب شوي اسانتیاو سره چاپیریال ترلاسه کړئ. د هر هغه څه سره چې تاسو ورته اړتیا لرئ د ډاکر کانټینر دلته مثالی دی (ذخیره دمخه د اوبنټو او سینټو لپاره د ډاکر فایلونو یو څو مثالونه لري).

وروسته له دې چې توضیحات چمتو شوي او چاپیریال چمتو شوی ، موږ خپل جوړونکی پیل کوو ، مخکې یې د دې انحصار نصب کړی:

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'.

نو، یوازې د یو څو کمانډونو سره، موږ چاپیریال او د اړتیا وړ نګینکس مجلس رامینځته کوو، او کڅوړه په ډایرکټر کې ښکاري له کوم ځای څخه چې سکریپټ پیل شوی.

سرایت کول

موږ کولی شو خپل وسیله په CI/CD پروسو کې مدغم کړو. د ډیری CI سیسټمونو څخه کوم چې نن شتون لري کولی شي پدې کې مرسته وکړي ، د مثال په توګه ټیم ښار او یا Gitlab CI.

د پایلې په توګه ، هرکله چې د Git ذخیره کې توضیحات بدل شي ، د هنري اثارو جوړول په اوتومات ډول پیل کیږي. د بیاکتنې شمیره د جوړونې لانچ کاونټر سره تړاو لري.
د یو څه ډیر وخت سره، تاسو کولی شئ هغه اثار تنظیم کړئ چې ستاسو د محلي کڅوړې ذخیره، Nexus، هنري فابریکه، او داسې نورو ته لیږل کیږي.

یوه اضافي ګټه دا ده چې د yaml ترتیب کولو فایل د ځواب یا بل اتوماتیک ترتیب سیسټم سره وصل کیدی شي ، او له هغه ځایه موږ کولی شو د نسخې شمیره او بسته ډول واخلو چې موږ یې ځای په ځای کول غواړو.

نور څه شی دی

پروژه لا بشپړه شوې نه ده. دلته هغه څه دي چې موږ یې اوس کار کوو:

  • موږ د ترتیب کولو امکان پراخوو، مګر په ورته وخت کې دا د امکان تر حده ساده ساتو. تاسو نه غواړئ زر پیرامیټونه تعریف کړئ که تاسو یوازې دوه ته اړتیا لرئ، او پاتې نور په ډیفالټ سره فټ کیږي. پدې کې د تالیف بیرغونه شامل دي (اوس تاسو کولی شئ دا د داخلي تشکیلاتو فایل src/config.py کې بدل کړئ) ، د نصبولو لاره ، او کارونکي لانچ کړئ.
  • موږ مختلف هنري ذخیره کولو ته په اتوماتيک ډول د کڅوړې لیږلو اختیارونه اضافه کوو.
  • د ماډل بارولو په وخت کې دودیز کمانډ اجرا کړئ (د مثال په توګه، د کارولو لپاره github.com/nginx-modules/nginx_upstream_check_module تاسو باید لومړی د یوې ځانګړې نسخې پیچ پلي کړئ)
  • د ازموینې اضافه کول:
    • بسته په سمه توګه نصب شوې ده.
    • نګینکس اړین نسخه لري او د اړتیا وړ بیرغونو او ماډلونو سره جوړ شوی.
    • اړینې لارې، حسابونه او داسې نور جوړ شوي.

مګر تاسو اوس کولی شئ دا وسیله وکاروئ، او د پرمختګ وړاندیز هم وکړئ - github.com/TinkoffCreditSystems/Nginx-builder ښه راغلاست!

سرچینه: www.habr.com

Add a comment