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 kumapurojekiti akasiyana. Ini zvakare ndichakuudza nezve chishandiso chakandibvumira kukunda mazhinji acho.
Nginx inoshanda yakawanda uye inoshingairira kugadzira proxy server. Inosanganisira nhamba huru yemamodule, . 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 shanduro itsva ine mamodule anodiwa, achimhanya pasi pekugoverwa kwakatarwa. LinuxMuchiitiko chedu, aya masisitimu akavakirwa pa deb- uye rpm. Masisitimu akavakirwa pa container haana kutaurwa nezvawo munyaya ino.
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 - .
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
Chishandiso chedu chinokutendera kuti ugadzire nzvimbo nekukurumidza nemidziyo yakaiswa yekuunganidza, kugadzira mapakeji, uye mamwe masoftware ekuwedzera. Chirongo cheDocker chine zvese zvaunoda chakanakira chinangwa ichi (nzvimbo yacho yatove nemuenzaniso wemafaira eDocker emuenzaniso ubuntu и 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 kana .
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 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 - zvakanaka!
Source: www.habr.com
