Re bokella Nginx ea rona ka litaelo tse 'maloa

Lumela!
Lebitso la ka ke Sergey, ke sebetsa ke le moenjiniere oa litšebeletso tsa motheo sehlopheng sa API sa sethala sa tinkoff.ru.

Sehloohong sena ke tla bua ka mathata ao sehlopha sa rona se ileng sa tobana le 'ona ha se lokisetsa li-balancers tse thehiloeng ho tsona Nginx bakeng sa merero e fapaneng. Ke tla boela ke u bolelle ka sesebelisoa se ileng sa ntumella ho hlōla boholo ba bona.

Nginx ke seva ea proxy e sebetsang ka bongata ebile e sebetsa ka mafolofolo. E na le palo e kholo ea li-module, lena ha se lenane le felletseng. Morero o mong le o mong o beha litlhoko tse itseng mabapi le ts'ebetso ea balancer le mofuta oa Nginx (mohlala, boteng ba http/2 le grpc proxying), le sebopeho sa li-module tsa eona.

Re ka thabela ho bona mofuta o mocha o nang le li-module tse hlokahalang, tse sebetsang tlasa kabo e itseng ea Linux. Tabeng ea rona, tsena ke litsamaiso tse thehiloeng ho deb le rpm. Khetho e nang le lijana ha e nahane ka sehlooho sena.

Re batla ho fetola kapele ts'ebetso ea li-balancers tsa rona. 'Me mona potso e hlaha hang-hang: u ka finyella see joang ha u ntse u sebelisa lisebelisoa tse fokolang kamoo ho ka khonehang? Ho ka ba molemo le ho feta ho theha ts'ebetso e le hore re tsebe ho bolela palo e lekanyelitsoeng ea li-parameter tsa ho kenya, 'me ka tlhahiso re fumane artifact ka mokhoa oa deb/rpm package bakeng sa OS eo u e batlang.

Ka lebaka leo, mathata a mangata a ka rarolloa:

  • Ha se kamehla liphutheloana tse nang le mofuta oa morao-rao oa Nginx.
  • Ha ho na liphutheloana tse nang le li-module tse hlokahalang.
  • Ho bokella le ho aha sephutheloana ka letsoho ho ja nako ebile ho tena haholo.
  • Ha ho na tlhaloso ea hore na mohlala ona kapa oa Nginx o bokelloa joang.

Ho rarolla mathata ana, ho hlaha tlhokahalo ea sesebelisoa se neng se tla nka e le ho kenya tlhaloso ka mokhoa o ka baloang ke motho le ho bokella sephutheloana sa Nginx ka ts'ebetso e hlokahalang e thehiloeng ho eona.

Ha re fumane khetho e nepahetseng bakeng sa rona ka boholo ba Github, re nkile qeto ea ho iketsetsa sesebelisoa sa rona - sehahi sa nginx.

Lintlha (edita)

Ka sesebelisoa sa rona, re ne re batla ho theha tlhaloso ea litlhaloso ka mokhoa oa khoutu, e ka kenngoa sebakeng sa polokelo ea Git. Ho etsa sena, re khethile mokhoa o tloaelehileng oa lintho tse joalo - yaml. Tlhaloso ea mohlala:

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

Mona re bonts'a hore re batla ho bona sephutheloana sa deb se nang le mofuta oa Nginx 1.14.2 ka sete e hlokahalang ea li-module. Karolo e nang le li-module ke boikhethelo. Bakeng sa e 'ngoe le e' ngoe ea tsona u ka khetha:

  • Lebitso.
  • Aterese moo o ka e fumanang teng:
    • Sebaka sa polokelo ea Git. U ka boela ua hlakisa lekala kapa tag.
    • Boloka sehokelo sa tepo.
    • Sehokelo sa lehae sa polokelo.

Li-module tse ling li hloka hore litšepe tse ling li kenngoe, mohlala, nginx-auth-ldap e hloka libldap2-dev e kentsoe. Litšepe tse hlokahalang le tsona li ka hlalosoa ha ho hlalosoa mojule.

Tikoloho

Ka sesebelisoa sa rona o ka fumana tikoloho ka potlako e nang le lisebelisoa tse kentsoeng bakeng sa ho bokella, kopano ea liphutheloana le lisebelisoa tse ling tse thusang. Sets'oants'o sa Docker se nang le sohle seo u se hlokang se nepahetse mona (sebaka sa polokelo se se se na le mehlala e 'maloa ea lifaele tsa Docker bakeng sa ubuntu le centos).

Kamora hore litlhaloso li lokisoe le tikoloho e lokisoe, re qala sehahi sa rona, re se re kentse litšepeho tsa sona pele:

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

Nomoro ea ntlafatso mona ke ea boikhethelo 'me e sebelisetsoa ho fetolela likopano. E ngotsoe ka har'a tlhahisoleseding ea meta ea sephutheloana, e leng ho nolofalletsang ho e ntlafatsa ho li-server.
Ho tsoa ho li-log u ka shebella se etsahalang. Mohlala oa lintlha tsa bohlokoa ke tsena:

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

Kahoo, ka litaelo tse 'maloa feela, re theha tikoloho le kopano e hlokahalang ea Nginx,' me sephutheloana se hlaha bukeng ho tloha moo script e qalisoang teng.

Ho kenyeletsoa

Hape re ka kopanya sesebelisoa sa rona lits'ebetsong tsa CI/CD. Leha e le efe ea mekhoa e mengata ea CI e teng kajeno e ka thusa ka sena, mohlala Teamcity kapa Gitlab CI.

Ka lebaka leo, nako le nako ha litlhaloso li fetoha sebakeng sa polokelo ea Git, moaho oa artifact o qala ka bohona. Nomoro ea ntlafatso e hokahane le k'haontareng ea ho qala kaho.
Ha nako e ntse e feta, u ka khona ho hlophisa lintho tsa khale tse tla romelloa sebakeng sa hau sa polokelo ea sephutheloana, Nexus, Artifactory, joalo-joalo.

Molemo o mong ke hore file ea tlhophiso ea yaml e ka hokahanngoa le Ansible kapa sistimi e 'ngoe ea othomathiki,' me ho tloha moo re ka nka nomoro ea mofuta le mofuta oa sephutheloana oo re batlang ho o sebelisa.

Ke eng e tlang

Morero ha o so phethoe. Mona ke seo re sebetsanang le sona hona joale:

  • Re atolosa monyetla oa ho hlophisa, empa ka nako e ts'oanang re e boloke e le bonolo kamoo ho ka khonehang. Ha u batle ho hlalosa liparamente tse sekete haeba u hloka tse peli feela, 'me tse ling kaofela li lumellana le kamehla. Sena se kenyelletsa lifolakha tsa pokello (hona joale u ka li fetola faeleng ea tlhophiso ea kahare src/config.py), tsela ea ho kenya, le ho qala mosebelisi.
  • Re ntse re eketsa likhetho tsa ho romella sephutheloana ka bohona libakeng tse fapaneng tsa polokelo ea lintho tsa khale.
  • Etsa taelo e tloaelehileng ha u kenya module (mohlala, ho e sebelisa github.com/nginx-modules/nginx_upstream_check_module o tlameha ho qala ka ho sebelisa patch ea mofuta o itseng)
  • E eketsa liteko:
    • Sephutheloana se kentsoe ka nepo.
    • Nginx e na le mofuta o hlokahalang mme e hahiloe ka lifolakha le li-module tse hlokahalang.
    • Litsela tse hlokahalang, litlaleho, joalo-joalo lia thehoa.

Empa o ka sebelisa sesebelisoa sena hona joale, hape o fana ka maikutlo a ntlafatso - github.com/TinkoffCreditSystems/Nginx-builder dumelang!

Source: www.habr.com

Eketsa ka tlhaloso