Isu tinounganidza yedu Nginx nemimwe mirairo

Nhai!
Zita rangu ndiSergey, ndinoshanda seinjiniya yezvivakwa muchikwata cheAPI chetinkoff.ru chikuva.

Muchinyorwa chino ini ndichataura nezve matambudziko ayo timu yedu yakatarisana nayo pakugadzirira mabharari zvichienderana Nginx kumapurojekiti akasiyana. Ini zvakare ndichakuudza nezve chishandiso chakandibvumira kukunda mazhinji acho.

Nginx inoshanda yakawanda uye inoshingairira kugadzira proxy server. Inosanganisira nhamba huru yemamodule, iyi haisi rondedzero yakakwana. Imwe neimwe purojekiti inoisa zvimwe zvinodiwa pakushanda kweiyo balancer uye vhezheni yeNginx (semuenzaniso, kuvapo kwehttp/2 uye grpc proxying), uye kuumbwa kwemamodule ayo.

Tinoda kuona vhezheni nyowani ine inodiwa seti yemamodule, inoshanda pasi peiyo Linux kugovera. Kwatiri, aya madeb- uye rpm-based system. Sarudzo ine midziyo haina kutariswa mune ino chinyorwa.

Tinoda kukurumidza kuchinja kushanda kwevalancers vedu. Uye pano mubvunzo unomuka pakarepo: sei kuita izvi uchishandisa zvishoma zviwanikwa sezvinobvira? Zvingatove nani kumisikidza maitiro kuitira kuti isu tikwanise kudoma nhamba inogumira yemaparamendi ekuisa, uye pakubuda tigamuchire artifact muchimiro che deb/rpm package yeinodiwa OS.

Nekuda kweizvozvo, akati wandei ematambudziko anogona kugadzirwa:

  • Iko hakusi nguva dzose mapakeji ane yazvino vhezheni yeNginx.
  • Iko hakuna mapakeji ane ma module anodiwa.
  • Kugadzira uye kuvaka pasuru nemawoko inotora nguva uye inonetesa.
  • Iko hakuna tsananguro yekuti iyi kana iyo Nginx muenzaniso yakaunganidzwa sei.

Kugadzirisa matambudziko aya, kudiwa kunomuka kwechishandiso chinozotora sekuisa chirevo muchimiro chinoverengeka nevanhu uye kuunganidza pasuru yeNginx ine mashandiro anodiwa kubva pairi.

Tisingawane sarudzo yakakodzera kwatiri pakukura kweGithub, takasarudza kugadzira yedu chishandiso - nginx-muvaki.

Specs

Muchishandiso chedu, taida kugadzira tsananguro yezvakatsanangurwa muchimiro chekodhi, iyo inogona kuiswa muGit repository. Kuti tiite izvi, takasarudza fomati yakajairika yezvinhu zvakadaro - yaml. Specification muenzaniso:

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

Pano tinoratidza kuti tinoda kuona deb package ine Nginx version 1.14.2 ine inodiwa seti yemamodule. Chikamu chine ma module ndechisarudzo. Kune mumwe nemumwe wavo unogona kuseta:

  • Zita.
  • Kero kwaunogona kuiwana:
    • Git repository. Iwe unogona zvakare kutsanangura bazi kana tag.
    • Chengetedza web link.
    • Local link kune archive.

Mamwe ma module anoda mamwe anotsamira kuti aiswe, semuenzaniso nginx-auth-ldap inoda libldap2-dev yakaiswa. Zvinodiwa zvinotsamira zvinogona zvakare kutsanangurwa kana uchitsanangura module.

Nzvimbo

Muchishandiso chedu unogona kukurumidza kuwana nharaunda ine zvakaiswa zvinoshandiswa zvekubatanidza, pasuru kusangana uye imwe yekubatsira software. Chigadziko cheDocker chine zvese zvaunoda chakanakira pano (iyo repository yatove nemienzaniso miviri yeDocker mafaera e ubuntu uye centos).

Mushure mekunge iyo yakatarwa yadhirowa uye nharaunda yagadzirwa, isu tinotangisa muvaki wedu, takamboisa zvinoenderana nazvo:

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

Nhamba yekudzokorora pano ndeyekusarudza uye inoshandiswa pakushandura magungano. Iyo yakanyorwa mune iyo meta ruzivo rwepakeji, zvichiita kuti zvive nyore kugadzirisa pamaseva.
Kubva pamatanda unogona kutarisa zviri kuitika. Heino muenzaniso wezvibodzwa zvikuru:

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

Saka, nemirairo mishoma, isu tinogadzira nharaunda uye inodiwa Nginx gungano, uye iyo package inoonekwa mudhairekitori kubva kwakatangwa script.

Embedding

Isu tinogona zvakare kubatanidza chishandiso chedu muCI/CD maitiro. Chero yeakawanda maCI masisitimu aripo nhasi anogona kubatsira neizvi, semuenzaniso Teamcity kana Gitlab CI.

Nekuda kweizvozvo, pese pese panochinjika dhizaini muGit repository, kuvakwa kweiyo artifact kunotangwa otomatiki. Iyo nhamba yekudzokorora yakabatanidzwa kune kuvaka yekutanga counter.
Uine imwe nguva shoma, iwe unogona kugadzirisa iyo artifact kuti itumirwe kune yako yepakeji repository, Nexus, Artifactory, zvichingodaro.

Imwezve mukana ndeyekuti iyo yaml yekumisikidza faira inogona kubatana neAnsible kana imwe otomatiki yekumisikidza sisitimu, uye kubva ipapo tinogona kutora iyo vhezheni nhamba uye package mhando yatinoda kuendesa.

Chii chinotevera

Chirongwa hachisati chapera. Hezvino zvatiri kushandira izvozvi:

  • Isu tinowedzera mukana wekugadzirisa, asi panguva imwechete chengetedza zviri nyore sezvinobvira. Iwe hausi kuda kutsanangura chiuru paramita kana iwe uchingoda maviri chete, uye mamwe anoenderana nekusarudzika. Izvi zvinosanganisira mireza yekubatanidza (ikozvino unogona kuishandura mukati meiyo faira yekumisikidza src/config.py), nzira yekuisa, uye kutanga mushandisi.
  • Isu tiri kuwedzera sarudzo dzekutumira otomatiki pasuru kune akasiyana artifact repositories.
  • Ita murairo wetsika paunenge uchiisa module (semuenzaniso, kushandisa github.com/nginx-modules/nginx_upstream_check_module unofanira kutanga waisa chigamba cheimwe shanduro)
  • Kuwedzera bvunzo:
    • Iyo package yakaiswa nemazvo.
    • Nginx ine vhezheni inodiwa uye inovakwa neinodiwa mireza nemamodule.
    • Nzira dzinodiwa, maakaunti, nezvimwe zvinogadzirwa.

Asi iwe unogona kushandisa chishandiso ichi izvozvi, uye zvakare kupa zano kuvandudza - github.com/TinkoffCreditSystems/Nginx-builder zvakanaka!

Source: www.habr.com

Voeg