Matou te faʻapipiʻiina a matou Nginx ma ni nai faʻatonuga

Привет!
O loʻu igoa o Sergey, ou te galue o se inisinia atinaʻe i le vaega API o le tinkoff.ru platform.

I lenei tusiga o le a ou talanoa e uiga i faʻafitauli na feagai ma le matou 'au pe a saunia paleni faʻavae i luga Nginx mo galuega eseese. O le a ou taʻu atu foi ia te oe le meafaigaluega na mafai ai ona ou manumalo i le tele oi latou.

Nginx o se multifunctional ma faʻamalosia le atinaʻeina o sui sui. O loʻo faʻaalia ai le tele o modules, e le o se lisi atoa lea. O poloketi taʻitasi e tuʻuina atu nisi o manaʻoga i luga o le faʻatinoga o le paleni ma le faʻasologa o Nginx (mo se faʻataʻitaʻiga, o le i ai o le http / 2 ma le grpc proxying), ma le tuʻufaʻatasia o ona modules.

Matou te fia vaʻai i se faʻamatalaga fou ma le seti manaʻomia o modules, o loʻo taʻavale i lalo o se faʻasalalauga faʻapitoa Linux. I la matou tulaga, o nei mea o deb-ma rpm-faʻavae faiga. O le filifiliga ma pusa e le o mafaufauina i lenei tusiga.

Matou te mananaʻo e vave suia le faʻatinoga o matou paleni. Ma o iinei o le fesili e vave ona tulaʻi mai: faʻafefea ona ausia lenei mea aʻo faʻaalu ni nai punaoa pe a mafai? E sili atu le faʻatulagaina o le faʻagasologa ina ia mafai ai ona matou setiina se numera faʻatapulaʻa o faʻamaufaʻailoga, ma i le gaosiga e maua ai se mea faʻapitoa i le tulaga o se deb / rpm afifi mo le OS manaʻomia.

O le iʻuga, e mafai ona faʻatulagaina le tele o faʻafitauli:

  • E le o taimi uma e afifi ai ma le lomiga lata mai o Nginx.
  • E leai ni afifi ma modules manaʻomia.
  • O le tuufaatasia ma le fausiaina o se afifi ma le lima e alu ai le taimi ma e matua fiu lava.
  • E leai se faʻamatalaga pe faʻafefea ona faʻapotopotoina lenei poʻo lena Nginx faʻataʻitaʻiga.

Ina ia foia nei faʻafitauli, e tulaʻi mai se meafaigaluega faʻapitoa e faʻaaogaina se faʻamatalaga i se faatulagaga e mafai ona faitau tagata ma faʻapipiʻi se pusa Nginx faʻatasi ai ma galuega talafeagai e faʻavae i luga.

O le le mauaina o se filifiliga talafeagai mo i matou i le lautele o Github, na matou filifili e fai a matou lava meafaigaluega - nginx-fausia.

Faʻamatalaga

I la matou meafaigaluega, matou te manaʻo e fatuina se faʻamatalaga o le faʻamatalaga i le tulaga o le code, lea e mafai ona tuʻu i totonu o le Git repository. Ina ia faia lenei mea, na matou filifilia le faatulagaga masani mo ia mea - yaml. Fa'ata'ita'iga fa'amatalaga:

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

O iinei matou te faʻaalia ai matou te manaʻo e vaʻai i se pusa aitalafu ma le Nginx version 1.14.2 faʻatasi ai ma le seti manaʻomia o modules. O le vaega o lo'o iai modules e filifili. Mo i latou taʻitasi e mafai ona e setiina:

  • Igoa.
  • Tulaga e te maua ai:
    • Git fale teu oloa. E mafai foi ona e faʻamaonia se lala poʻo se pine.
    • Fa'amaumauga i luga ole laiga so'oga.
    • So'oga fa'apitonu'u ile fa'amaumauga.

O nisi modules e manaʻomia nisi faʻalagolago e faʻapipiʻi, mo se faʻataʻitaʻiga nginx-auth-ldap manaʻomia libldap2-dev faʻapipiʻi. O fa'alagolago e mana'omia e mafai fo'i ona fa'amaonia pe a fa'amatalaina le module.

Le siosiomaga

I la matou meafaigaluega e mafai ona vave maua se siosiomaga faʻapipiʻi mea faʻaoga mo le tuʻufaʻatasia, faʻapipiʻi afifi ma isi polokalama fesoasoani. O se pusa Docker ma mea uma e te manaʻomia e lelei iinei (o le fale teu oloa ua i ai ni nai faʻataʻitaʻiga o faila Docker mo ubuntu ma centos).

A maeʻa ona faʻatulagaina le faʻamatalaga ma saunia le siosiomaga, matou te faʻalauiloaina le matou faufale, ma faʻapipiʻi muamua ona faʻalagolago:

pip3 install -r requirements.txt
./main.py build -f [конфиг_файл].yaml -r [номер_ревизии]

O le numera toe iloilo iinei e filifili ma o loʻo faʻaaogaina mo faʻasalalauga faʻapotopotoga. O loʻo tusia i totonu o faʻamatalaga meta a le afifi, faʻafaigofie ona faʻafouina i luga o sapalai.
Mai ogalaau e mafai ona e mataʻituina le mea o loʻo tupu. O se faʻataʻitaʻiga lea o manatu autu:

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

O lea la, faʻatasi ai ma ni nai faʻatonuga, matou te fatuina le siosiomaga ma le faʻapotopotoga Nginx manaʻomia, ma o le afifi o loʻo faʻaalia i le lisi mai le mea na faʻalauiloa ai le tusitusiga.

Fa'apipi'i

E mafai fo'i ona tu'ufa'atasia a tatou mea faigaluega ile faiga CI/CD. Soʻo se tasi o le tele o faiga CI o loʻo i ai nei e mafai ona fesoasoani i lenei mea, mo se faʻataʻitaʻiga Teamcity poʻo Gitlab CI.

O le iʻuga, o taimi uma e suia ai le faʻamatalaga i le fale teu oloa Git, o le fausiaina o le mea faʻapitoa e otometi lava ona faʻalauiloa. O le numera toe iloilo e feso'ota'i i le fa'ailoga faufale.
Faatasi ai ma sina taimi itiiti, e mafai ona e faʻatulagaina le mea faʻapitoa e lafo i lau fale teu oloa, Nexus, Artifactory, ma isi.

O se fa'aopoopoga fa'aopoopo e mafai ona fa'afeso'ota'i le faila o le yaml i le Ansible po'o se isi faiga fa'aopoopo otometi, ma mai iina e mafai ona tatou ave le numera o le fa'asologa ma le ituaiga afifi tatou te manana'o e fa'apipi'i.

O le a le isi

E le'i mae'a le galuega. O le mea lenei o loʻo matou galulue i ai nei:

  • Matou te faʻalauteleina le avanoa e faʻapipiʻi ai, ae i le taimi lava e tasi ia faʻafaigofie pe a mafai. E te le manaʻo e faʻamatalaina le afe o faʻamaufaʻailoga pe afai e te manaʻomia naʻo le lua, ma o le isi e fetaui lelei. E aofia ai fuʻa tuʻufaʻatasia (lea e mafai ona e suia i le faila faʻapipiʻi totonu src/config.py), ala faʻapipiʻi, ma faʻalauiloa tagata faʻaoga.
  • O lo'o matou fa'aopoopoina filifiliga mo le tu'uina atu otometi se afifi i faleteuoloa eseese.
  • Fa'atino se fa'atonuga masani pe a utaina se module (mo se fa'ata'ita'iga, fa'aoga github.com/nginx-modules/nginx_upstream_check_module e tatau ona e faʻaaoga muamua se patch o se faʻamatalaga patino)
  • Fa'aopoopo su'ega:
    • Ua fa'apipi'i sa'o le afifi.
    • O le Nginx o loʻo i ai le faʻamatalaga manaʻomia ma fausia faʻatasi ma fuʻa manaʻomia ma modules.
    • O ala talafeagai, tala, ma isi mea ua faia.

Ae e mafai ona e faʻaogaina lenei meafaigaluega i le taimi nei, ma fautua mai faʻaleleia - github.com/TinkoffCreditSystems/Nginx-builder manuia!

puna: www.habr.com

Faaopoopo i ai se faamatalaga