Manangona ny Nginx miaraka amin'ny baiko roa izahay

Miarahaba!
Sergey no anarako, miasa ho injeniera fotodrafitrasa ao amin'ny ekipa API amin'ny sehatra tinkoff.ru aho.

Amin'ity lahatsoratra ity dia hiresaka momba ny olana natrehin'ny ekipanay aho tamin'ny fanomanana ny balancers mifototra amin'ny Nginx ho an'ny tetikasa isan-karazany. Holazaiko aminao koa ny fitaovana nahafahako nandresy ny ankamaroan'izy ireo.

Nginx dia mpizara proxy marobe sy mavitrika mavitrika. Izy io dia manana modules marobe, tsy lisitra feno io. Ny tetikasa tsirairay dia mametraka fepetra sasantsasany amin'ny fiasan'ny balancer sy ny version of Nginx (ohatra, ny fisian'ny http/2 sy ny grpc proxying), ary ny firafitry ny modules.

Tianay ny hahita dikan-teny vaovao miaraka amin'ireo mody ilaina ilaina, mandeha amin'ny fizarana Linux manokana. Amin'ny tranga misy antsika dia rafitra mifototra amin'ny deb sy rpm ireo. Ny safidy misy kaontenera dia tsy raisina ato amin'ity lahatsoratra ity.

Tianay ny hanova haingana ny fiasan'ny mpandrindra anay. Ary eto dia mipoitra avy hatrany ny fanontaniana: ahoana no hanatratrarana izany nefa mandany loharanon-karena vitsy araka izay azo atao? Tsara kokoa ny manangana ny dingana mba ahafahantsika mamaritra isa voafetra amin'ny mari-pamantarana fampidirana, ary amin'ny famoahana dia mahazo artifact amin'ny endrika fonosana deb/rpm ho an'ny OS irina.

Vokatr'izany dia afaka mamolavola olana maromaro:

  • Tsy misy fonosana miaraka amin'ny kinova farany an'ny Nginx.
  • Tsy misy fonosana miaraka amin'ny modules ilaina.
  • Mandany fotoana sy mandreraka tokoa ny fanangonana sy fananganana fonosana amin'ny tanana.
  • Tsy misy famaritana ny fomba fanangonana an'ity na ity Nginx ity.

Mba hamahana ireo olana ireo dia ilaina ny fitaovana iray izay hampiditra famaritana amin'ny endrika mora vakiana ary manangona fonosana Nginx miaraka amin'ny fiasa ilaina mifototra amin'izany.

Tsy nahita safidy mety ho anay amin'ny halehiben'ny Github, nanapa-kevitra ny hamorona fitaovana manokana izahay - nginx-builder.

Specifications

Ao amin'ny fitaovantsika dia te-hamorona famaritana ny famaritana amin'ny endrika kaody izahay, izay azo apetraka ao anaty tahiry Git avy eo. Mba hanaovana izany, nifidy ny endrika mahazatra amin'ny zavatra toy izany - yaml. Ohatra momba ny famaritana:

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

Eto izahay dia manondro fa te-hahita fonosana deb miaraka amin'ny Nginx version 1.14.2 miaraka amin'ireo modely ilaina. Ny fizarana misy modules dia azo atao. Ho an'ny tsirairay amin'izy ireo dia azonao atao ny mametraka:

  • Anarana.
  • Adiresy ahazoanao azy:
    • Git repository. Azonao atao koa ny mamaritra sampana na marika.
    • Rohy tranonkala archive.
    • Rohy eo an-toerana mankany amin'ny arisiva.

Ny maody sasany dia mitaky fiankinan-doha fanampiny hapetraka, ohatra ny nginx-auth-ldap mitaky libldap2-dev napetraka. Ny fiankinana ilaina dia azo faritana ihany koa rehefa mamaritra ny module.

Ny tontolo tontolo

Ao amin'ny fitaovanay dia afaka mahazo tontolo iainana miaraka amin'ny fitaovana napetraka ho an'ny fanangonana, fanangonana fonosana ary rindrambaiko fanampiny hafa ianao. Ny kaontenera Docker miaraka amin'ny zavatra rehetra ilainao dia mety eto (ny tahiry dia efa manana ohatra roa amin'ny rakitra Docker ho an'ny ubuntu sy centos).

Aorian'ny fandrafetana ny famaritana sy ny fiomanana ny tontolo iainana, dia manomboka ny mpanamboatra anay, izay efa nametraka ny fiankinany teo aloha:

pip3 install -r requirements.txt
./main.py build -f [ΠΊΠΎΠ½Ρ„ΠΈΠ³_Ρ„Π°ΠΉΠ»].yaml -r [Π½ΠΎΠΌΠ΅Ρ€_Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ]

Ny laharan'ny fanavaozana eto dia azo atao ary ampiasaina amin'ny fivoriamben'ny versione. Voasoratra ao amin'ny fampahafantarana meta an'ny fonosana izy io, manamora ny fanavaozana amin'ny mpizara.
Avy amin'ny logs dia azonao atao ny manara-maso ny zava-mitranga. Ity misy ohatra iray amin'ireo hevi-dehibe:

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

Noho izany, miaraka amin'ny baiko roa fotsiny dia mamorona tontolo iainana sy ny fivoriambe Nginx ilaina, ary ny fonosana dia miseho ao amin'ny lahatahiry izay nanombohana ny script.

fametrahana izany

Azontsika atao koa ny mampiditra ny fitaovantsika amin'ny fizotry ny CI/CD. Ny iray amin'ireo rafitra CI maro misy ankehitriny dia afaka manampy amin'izany, ohatra Teamcity na Gitlab CI.

Vokatr'izany, isaky ny miova ny fanoritsoritana ao amin'ny tahiry Git, dia alefa ho azy ny fananganana ny artifact. Ny laharan'ny fanavaozana dia mifamatotra amin'ny kaontera fandefasana fananganana.
Amin'ny fotoana kely kokoa, azonao atao ny manamboatra ny artifact halefa any amin'ny fitahirizana fonosana eo an-toerana, Nexus, Artifactory, sy ny sisa.

Ny tombony fanampiny dia ny hoe ny rakitra fikirakirana yaml dia azo ampifandraisina amin'ny Ansible na rafitra fanamafisam-peo mandeha ho azy, ary avy eo dia afaka maka ny laharan'ny dikan-teny sy ny karazana fonosana izay tiantsika apetraka.

Inona no manaraka?

Tsy mbola vita ny tetikasa. Izao no iasantsika izao:

  • Manitatra ny mety hisian'ny fanamafisam-peo izahay, saingy mitazona izany ho tsotra araka izay azo atao. Tsy te hamaritra masontsivana arivo ianao raha mila roa fotsiny, ary ny ambiny dia mifanaraka amin'ny default. Tafiditra ao anatin'izany ny saina fanangonana (azonao atao ny manova azy ireo amin'ny fisie anatiny src/config.py), lalan'ny fametrahana ary ny mpampiasa fanombohana.
  • Manampy safidy handefasana fonosana ho azy any amin'ny trano fitehirizana artifact isan-karazany izahay.
  • Manaova baiko mahazatra rehefa mametaka module (ohatra, hampiasa github.com/nginx-modules/nginx_upstream_check_module tsy maintsy mampihatra patch amin'ny dikan-teny manokana aloha ianao)
  • Fanampiana fitsapana:
    • Napetraka tsara ny fonosana.
    • Ny Nginx dia manana ny dikan-teny ilaina ary namboarina miaraka amin'ireo saina sy maody ilaina.
    • Ny lalana ilaina, ny kaonty, sy ny sisa dia noforonina.

Saingy afaka mampiasa an'io fitaovana io ianao izao, ary manolotra fanatsarana koa - github.com/TinkoffCreditSystems/Nginx-builder tongasoa!

Source: www.habr.com

Add a comment