ΠΡΠΈΠ²Π΅Ρ!
Dzina langa ndi Sergey, ndimagwira ntchito ngati injiniya wa zomangamanga mu gulu la API la nsanja ya tinkoff.ru.
M'nkhaniyi ndilankhula za mavuto omwe gulu lathu lidakumana nalo pokonzekera ma balancers potengera Nginx za ntchito zosiyanasiyana. Ndikuuzaninso za chida chomwe chinandilola kugonjetsa ambiri a iwo.
Nginx ndi seva ya proxy yogwira ntchito zambiri komanso yokhazikika. Ili ndi ma module ambiri, uwu si mndandanda wathunthu. Pulojekiti iliyonse imayika zofunikira zina pakugwira ntchito kwa balancer ndi mtundu wa Nginx (mwachitsanzo, kukhalapo kwa http/2 ndi grpc proxying), komanso mapangidwe ake.
Tikufuna kuwona mtundu watsopano wokhala ndi ma module ofunikira, omwe akuyenda pansi pa kugawa kwa Linux. Kwa ife, awa ndi machitidwe a deb- ndi rpm. Chosankha chokhala ndi zotengera sichikuganiziridwa m'nkhaniyi.
Tikufuna kusintha mwamsanga ntchito ya balancers athu. Ndipo apa funso limadza nthawi yomweyo: momwe mungakwaniritsire izi mukugwiritsa ntchito zinthu zochepa momwe mungathere? Zingakhale bwinonso kukhazikitsa ndondomekoyi kuti tithe kutchula chiwerengero chochepa cha magawo olowera, ndipo pazotulukapo tilandire chojambula mu mawonekedwe a deb/rpm phukusi la OS yomwe mukufuna.
Apa tikuwonetsa kuti tikufuna kuwona phukusi la deb ndi mtundu wa Nginx 1.14.2 wokhala ndi ma module ofunikira. Gawo lokhala ndi ma module ndilosankha. Kwa aliyense wa iwo mutha kupanga:
Ma module ena amafunikira zodalira zina kuti ziyikidwe, mwachitsanzo nginx-auth-ldap imafuna libldap2-dev kuyika. Kudalira kofunikira kungatchulidwenso pofotokoza gawoli.
Zachilengedwe
Mu chida chathu mutha kupeza mwachangu malo okhala ndi zida zomwe zidayikidwa kuti muphatikize, kuphatikiza phukusi ndi mapulogalamu ena othandizira. Chidebe cha Docker chokhala ndi chilichonse chomwe mungafune ndichabwino apa (malo osungira ali kale ndi zitsanzo zingapo zamafayilo a Docker a ubuntu ndi centos).
Mafotokozedwewo akapangidwa ndi chilengedwe chakonzedwa, timayambitsa omanga athu, atayikapo zodalira zake m'mbuyomu:
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'.
Kotero, ndi malamulo angapo chabe, timapanga chilengedwe ndi msonkhano wofunikira wa Nginx, ndipo phukusi likuwonekera mu bukhuli kuchokera kumene script imayambitsidwa.
Kuyika
Titha kuphatikizanso chida chathu munjira za CI/CD. Zina mwazinthu zambiri za CI zomwe zilipo masiku ano zingathandize pa izi, mwachitsanzo Teamcity kapena Gitlab CI.
Zotsatira zake, nthawi iliyonse yomwe mafotokozedwe akusintha munkhokwe ya Git, kumangidwa kwa chinthucho kumangoyambitsidwa. Nambala yokonzanso imalumikizidwa ndi kauntala yoyambira yomanga.
Pokhala ndi nthawi yochulukirapo, mutha kukonza chojambulacho kuti chitumizidwe kumalo osungira kwanuko, Nexus, Artifactory, ndi zina zotero.
Ubwino wowonjezera ndikuti fayilo yosinthira yaml imatha kulumikizidwa ku Ansible kapena njira ina yosinthira yokha, ndipo kuchokera pamenepo titha kutenga nambala yamtunduwu ndi mtundu wa phukusi womwe tikufuna kuyika.
Chotsatira
Ntchitoyi sinamalizidwebe. Nazi zomwe tikugwira pano:
Timakulitsa kuthekera kwa kasinthidwe, koma nthawi yomweyo sungani mophweka momwe tingathere. Simukufuna kufotokozera magawo chikwi ngati mukufuna awiri okha, ndipo ena onse amakwanira mwachisawawa. Izi zikuphatikiza mbendera zophatikiza (tsopano mutha kuzisintha mu fayilo yamkati src/config.py), njira yoyika, ndikuyambitsa wosuta.