የእኛን Nginx በሁለት ትዕዛዞች እንሰበስባለን

ሠላም!
ስሜ ሰርጌይ እባላለሁ በ tinkoff.ru መድረክ ኤፒአይ ቡድን ውስጥ እንደ መሠረተ ልማት መሐንዲስ እሰራለሁ።

በዚህ ጽሁፍ ላይ ተመስርቼ ቡድናችን ሚዛን ሰጭዎችን ሲያዘጋጅ ያጋጠሙትን ችግሮች እናገራለሁ እም ለተለያዩ ፕሮጀክቶች. እንዲሁም ብዙዎቹን ለማሸነፍ ስለፈቀደልኝ መሳሪያ እነግርዎታለሁ.

Nginx ሁለገብ እና በንቃት የሚገነባ ተኪ አገልጋይ ነው። ብዙ ቁጥር ያላቸው ሞጁሎች አሉት ፣ ይህ ሙሉ ዝርዝር አይደለም. እያንዳንዱ ፕሮጀክት በተመጣጣኝ ሚዛን እና በ Nginx ስሪት (ለምሳሌ የ http/2 እና grpc ፕሮክሲንግ መኖር) እና የሞጁሎቹ ስብጥር ላይ የተወሰኑ መስፈርቶችን ያስገድዳል።

በተለየ የሊኑክስ ስርጭት ስር የሚሰራ አዲስ የሞጁሎች ስብስብ ያለው አዲስ ስሪት ማየት እንፈልጋለን። በእኛ ሁኔታ, እነዚህ ዴብ እና ራፒኤም ላይ የተመሰረቱ ስርዓቶች ናቸው. ከመያዣዎች ጋር ያለው አማራጭ በዚህ ጽሑፍ ውስጥ አይታሰብም.

የሂሳብ ሰሪዎቻችንን ተግባር በፍጥነት መለወጥ እንፈልጋለን። እና እዚህ ጥያቄው ወዲያውኑ ይነሳል-በተቻለ መጠን ጥቂት ሀብቶችን ሲያወጡ ይህንን እንዴት ማግኘት እንደሚቻል? የተወሰኑ የግቤት መለኪያዎችን እንድንለይ ሂደቱን ማዋቀር እና በውጤቱ ላይ ለተፈለገው ስርዓተ ክወና በዲቢ / ደቂቃ ጥቅል መልክ አርቲፊኬት መቀበል የተሻለ ነው።

በዚህ ምክንያት በርካታ ችግሮች ሊፈጠሩ ይችላሉ-

  • ሁልጊዜ የቅርብ ጊዜው የ Nginx ስሪት ያላቸው ጥቅሎች የሉም።
  • ከሚያስፈልጉት ሞጁሎች ጋር ምንም ጥቅሎች የሉም.
  • ጥቅልን በእጅ መሰብሰብ እና መገንባት ጊዜ የሚወስድ እና በጣም አድካሚ ነው።
  • ይህ ወይም ያ Nginx ምሳሌ እንዴት እንደሚሰበሰብ ምንም መግለጫ የለም።

እነዚህን ችግሮች ለመፍታት በሰው ሊነበብ በሚችል ቅርጸት ዝርዝር መግለጫን እንደ ግብአት የሚወስድ እና የ Nginx ጥቅልን በእሱ ላይ በመመስረት አስፈላጊውን ተግባር የሚሰበስብ መሳሪያ ያስፈልጋል።

በ Github ሰፊነት ላይ ለእኛ ተስማሚ አማራጭ ሳያገኙ የራሳችንን መሳሪያ ለመፍጠር ወሰንን - 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

እዚህ የዴብ ፓኬጅ ከ Nginx ስሪት 1.14.2 ጋር ከሚፈለገው የሞጁሎች ስብስብ ጋር ማየት እንደምንፈልግ እንጠቁማለን። ሞጁሎች ያሉት ክፍል አማራጭ ነው። ለእያንዳንዳቸው የሚከተሉትን ማዘጋጀት ይችላሉ-

  • ስም
  • ማግኘት የምትችልበት አድራሻ፡-
    • የጂት ማከማቻ። እንዲሁም ቅርንጫፍ ወይም መለያን መግለጽ ይችላሉ.
    • የድር አገናኝን በማህደር ያስቀምጡ።
    • ወደ ማህደሩ አካባቢያዊ አገናኝ።

አንዳንድ ሞጁሎች ተጨማሪ ጥገኞችን መጫን ይፈልጋሉ፣ ለምሳሌ 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'.

ስለዚህ ፣ በሁለት ትዕዛዞች ብቻ ፣ አከባቢን እና አስፈላጊውን የ Nginx ስብሰባን እንፈጥራለን ፣ እና ጥቅሉ ስክሪፕቱ ከተጀመረበት ማውጫ ውስጥ ይታያል።

መክተት

እንዲሁም የእኛን መሳሪያ ከ CI/CD ሂደቶች ጋር ማዋሃድ እንችላለን። ዛሬ ካሉት ብዙዎቹ የሲአይሲ ስርዓቶች በዚህ ላይ ሊረዱ ይችላሉ, ለምሳሌ የቡድንነት ወይም Gitlab CI.

በውጤቱም ፣ ዝርዝር መግለጫው በጊት ማከማቻ ውስጥ በተቀየረ ቁጥር ፣የቅርሶቹ ግንባታ በራስ-ሰር ይጀምራል። የክለሳ ቁጥሩ ከግንባታ ማስጀመሪያ ቆጣሪ ጋር ተያይዟል።
ትንሽ ተጨማሪ ጊዜ ሲኖር ቅርሱን ወደ የአካባቢዎ የጥቅል ማከማቻ፣ Nexus፣ Artifctory እና የመሳሰሉትን ማዋቀር ይችላሉ።

ተጨማሪ ጠቀሜታ የያምል ማዋቀሪያ ፋይሉ ከአንሲቪል ወይም ከሌላ አውቶማቲክ ማዋቀሪያ ስርዓት ጋር ሊገናኝ ይችላል, እና ከዚያ እኛ ማሰማራት የምንፈልገውን የስሪት ቁጥር እና የጥቅል አይነት መውሰድ እንችላለን.

የሚቀጥለው ምንድነው

ፕሮጀክቱ ገና አልተጠናቀቀም. አሁን እየሰራን ያለነው እነሆ፡-

  • የማዋቀር እድልን እናሰፋለን, ግን በተመሳሳይ ጊዜ በተቻለ መጠን ቀላል ያድርጉት. ሁለት ብቻ ከፈለጉ አንድ ሺህ መለኪያዎችን መግለፅ አይፈልጉም, እና የተቀረው በነባሪነት ይስማማል. ይህ የማጠናቀር ባንዲራዎችን ያካትታል (አሁን በውስጣዊ ውቅር ፋይል src/config.py)፣ የመጫኛ ዱካ እና የማስጀመሪያ ተጠቃሚ።
  • እሽግ ወደ ተለያዩ ቅርሶች ማከማቻዎች በራስ ሰር ለመላክ አማራጮችን እየጨመርን ነው።
  • ሞጁሉን ሲጭኑ ብጁ ትዕዛዝ ያስፈጽሙ (ለምሳሌ፣ ለመጠቀም github.com/nginx-modules/nginx_upstream_check_module መጀመሪያ የአንድ የተወሰነ ስሪት ማጣበቂያ መተግበር አለብዎት)
  • ሙከራዎችን ማከል;
    • ጥቅሉ በትክክል ተጭኗል።
    • Nginx የሚፈለገው ስሪት አለው እና በተፈለገው ባንዲራዎች እና ሞጁሎች ነው የተሰራው።
    • አስፈላጊዎቹ መንገዶች፣ መለያዎች እና የመሳሰሉት ተፈጥረዋል።

ግን ይህንን መሳሪያ አሁን መጠቀም ይችላሉ, እና እንዲሁም ማሻሻያዎችን ይጠቁሙ - github.com/TinkoffCreditSystems/Nginx-builder እንኳን ደህና መጣህ!

ምንጭ: hab.com

አስተያየት ያክሉ