చెల్యాబిన్స్క్‌లోని సౌత్‌బ్రిడ్జ్ మరియు కుబెర్నెట్స్‌లోని బిట్రిక్స్

Sysadminka సిస్టమ్ అడ్మినిస్ట్రేటర్ సమావేశాలు Chelyabinsk లో జరుగుతున్నాయి మరియు వాటిలో చివరిగా నేను Kubernetes లో 1C-Bitrixలో అప్లికేషన్లను అమలు చేయడానికి మా పరిష్కారంపై ఒక నివేదికను అందించాను.

Bitrix, Kubernetes, Ceph - ఒక గొప్ప మిశ్రమం?

వీటన్నింటి నుండి మేము పని చేసే పరిష్కారాన్ని ఎలా పెడతామో నేను మీకు చెప్తాను.

లెట్ యొక్క వెళ్ళి!

చెల్యాబిన్స్క్‌లోని సౌత్‌బ్రిడ్జ్ మరియు కుబెర్నెట్స్‌లోని బిట్రిక్స్

ఈ సమావేశం ఏప్రిల్ 18న చెల్యాబిన్స్క్‌లో జరిగింది. మీరు మా సమావేశాల గురించి ఇక్కడ చదువుకోవచ్చు టైమ్‌ప్యాడ్ మరియు చూడండి YouTube.

మీరు నివేదికతో లేదా శ్రోతగా మా వద్దకు రావాలనుకుంటే - స్వాగతం, వ్రాయండి [ఇమెయిల్ రక్షించబడింది] మరియు టెలిగ్రామ్ t.me/vadimisakanovలో.

నా నివేదిక

చెల్యాబిన్స్క్‌లోని సౌత్‌బ్రిడ్జ్ మరియు కుబెర్నెట్స్‌లోని బిట్రిక్స్

స్లయిడ్‌లు

పరిష్కారం "బిట్రిక్స్ ఇన్ కుబెర్నెట్స్, వెర్షన్ సౌత్‌బ్రిడ్జ్ 1.0"

నేను మీట్‌అప్‌లో చేసినట్లుగా "కుబెర్నెట్స్‌లో డమ్మీల కోసం" ఫార్మాట్‌లో మా పరిష్కారం గురించి మాట్లాడతాను. కానీ మీకు Bitrix, Docker, Kubernetes, Ceph అనే పదాలు కనీసం వికీపీడియాలో వ్యాసాల స్థాయిలో తెలుసని నేను అనుకుంటాను.

కుబెర్నెటెస్‌లో బిట్రిక్స్ గురించి రెడీమేడ్ ఏమిటి?

కుబెర్నెట్స్‌లో బిట్రిక్స్ అప్లికేషన్‌ల ఆపరేషన్ గురించి మొత్తం ఇంటర్నెట్‌లో చాలా తక్కువ సమాచారం ఉంది.
నేను ఈ పదార్థాలను మాత్రమే కనుగొన్నాను:

Qsoft నుండి Alexander Serbul, 1C-Bitrix మరియు Anton Tuzlukov ద్వారా నివేదిక:

నేను దానిని వినమని సిఫార్సు చేస్తున్నాను.

వినియోగదారు నుండి మీ స్వంత పరిష్కారాన్ని అభివృద్ధి చేయడం సెర్కిరాన్ హబ్రేపై.
మరిన్ని దొరికాయి అటువంటి నిర్ణయం.

Aaand... నిజానికి, అంతే.

నేను మిమ్మల్ని హెచ్చరిస్తున్నాను, పై లింక్‌లలోని పరిష్కారాల నాణ్యతను మేము తనిఖీ చేయలేదు :)
మార్గం ద్వారా, మా పరిష్కారాన్ని సిద్ధం చేసేటప్పుడు, నేను అలెగ్జాండర్ సెర్బుల్‌తో మాట్లాడాను, అప్పుడు అతని నివేదిక ఇంకా కనిపించలేదు, కాబట్టి నా స్లయిడ్‌లలో “బిట్రిక్స్ కుబెర్నెట్‌లను ఉపయోగించదు” అనే అంశం ఉంది.

కానీ డాకర్‌లో బిట్రిక్స్‌ని అమలు చేయడానికి ఇప్పటికే చాలా రెడీమేడ్ డాకర్ చిత్రాలు ఉన్నాయి: https://hub.docker.com/search?q=bitrix&type=image

కుబెర్నెట్స్‌లో బిట్రిక్స్ కోసం పూర్తి పరిష్కారాన్ని రూపొందించడానికి ఇది సరిపోతుందా?
నం. పరిష్కరించాల్సిన సమస్యలు పెద్ద సంఖ్యలో ఉన్నాయి.

కుబెర్నెట్స్‌లో బిట్రిక్స్‌తో సమస్యలు ఏమిటి?

ముందుగా, డాకర్‌హబ్ నుండి రెడీమేడ్ చిత్రాలు కుబెర్నెట్‌లకు తగినవి కావు

మేము మైక్రోసర్వీస్ ఆర్కిటెక్చర్‌ను నిర్మించాలనుకుంటే (మరియు మేము సాధారణంగా కుబెర్నెట్స్‌లో చేస్తాము), మేము మా కుబెర్నెట్స్ అప్లికేషన్‌ను కంటైనర్‌లుగా విభజించాలి మరియు ప్రతి కంటైనర్ ఒక చిన్న ఫంక్షన్‌ను నిర్వహించాలి (మరియు దీన్ని బాగా చేయండి). ఒక్కడే ఎందుకు? సంక్షిప్తంగా, సరళమైనది మరింత నమ్మదగినది.
మరింత నిర్దిష్టంగా చెప్పాలంటే, దయచేసి ఈ కథనం మరియు వీడియోను చూడండి: https://habr.com/ru/company/southbridge/blog/426637/

డాకర్‌హబ్‌లోని డాకర్ చిత్రాలు ప్రధానంగా ఆల్-ఇన్-వన్ సూత్రంపై నిర్మించబడ్డాయి, కాబట్టి మేము ఇప్పటికీ మా స్వంత బైక్‌ను తయారు చేయాల్సి ఉంటుంది మరియు మొదటి నుండి చిత్రాలను కూడా సృష్టించాలి.

రెండవది - సైట్ కోడ్ నిర్వాహక పానెల్ నుండి సవరించబడింది

మేము సైట్‌లో కొత్త విభాగాన్ని సృష్టించాము - కోడ్ నవీకరించబడింది (కొత్త విభాగం పేరుతో ఒక డైరెక్టరీ జోడించబడింది).

మీరు అడ్మిన్ ప్యానెల్ నుండి ఒక భాగం యొక్క లక్షణాలను మార్చినట్లయితే, కోడ్ మార్చబడింది.

కుబెర్నెట్‌లు "డిఫాల్ట్‌గా" దీనితో పని చేయలేరు; కంటైనర్లు స్థితిలేనివిగా ఉండాలి.

కారణం: క్లస్టర్‌లోని ప్రతి కంటైనర్ (పాడ్) ట్రాఫిక్‌లో కొంత భాగాన్ని మాత్రమే ప్రాసెస్ చేస్తుంది. మీరు ఒకే ఒక కంటైనర్‌లో (పాడ్) కోడ్‌ను మార్చినట్లయితే, వివిధ పాడ్‌లలో కోడ్ భిన్నంగా ఉంటుంది, సైట్ భిన్నంగా పని చేస్తుంది మరియు సైట్ యొక్క విభిన్న వెర్షన్‌లు వేర్వేరు వినియోగదారులకు చూపబడతాయి. మీరు అలా జీవించలేరు.

మూడవది - మీరు విస్తరణతో సమస్యను పరిష్కరించాలి

మనకు మోనోలిత్ మరియు ఒక "క్లాసిక్" సర్వర్ ఉంటే, ప్రతిదీ చాలా సులభం: మేము కొత్త కోడ్ బేస్‌ని అమలు చేస్తాము, డేటాబేస్‌ను మైగ్రేట్ చేస్తాము, ట్రాఫిక్‌ను కోడ్ యొక్క కొత్త వెర్షన్‌కి మారుస్తాము. మార్పిడి తక్షణమే జరుగుతుంది.
మేము Kubernetes లో ఒక సైట్ కలిగి ఉంటే, microservices లోకి కట్, కోడ్ తో కంటైనర్లు చాలా ఉన్నాయి - ఓహ్. మీరు కోడ్ యొక్క కొత్త వెర్షన్‌తో కంటైనర్‌లను సేకరించాలి, పాత వాటికి బదులుగా వాటిని బయటకు తీయాలి, డేటాబేస్‌ను సరిగ్గా మైగ్రేట్ చేయాలి మరియు సందర్శకులు గుర్తించకుండా దీన్ని ఆదర్శంగా చేయాలి. అదృష్టవశాత్తూ, Kubernetes దీనితో మాకు సహాయం చేస్తుంది, వివిధ రకాల విస్తరణల సమూహానికి మద్దతు ఇస్తుంది.

నాల్గవది - మీరు స్టాటిక్స్ నిల్వ సమస్యను పరిష్కరించాలి

మీ సైట్ "మాత్రమే" 10 గిగాబైట్‌లు మరియు మీరు దానిని పూర్తిగా కంటైనర్‌లలో అమర్చినట్లయితే, మీరు 10 గిగాబైట్ కంటైనర్‌లను ఎప్పటికీ అమలు చేయడానికి తీసుకుంటారు.
మీరు సైట్ యొక్క "భారీ" భాగాలను కంటైనర్ల వెలుపల నిల్వ చేయాలి మరియు దీన్ని సరిగ్గా ఎలా చేయాలనే ప్రశ్న తలెత్తుతుంది.

మా పరిష్కారంలో ఏమి లేదు?

మొత్తం Bitrix కోడ్ మైక్రోఫంక్షన్‌లు/మైక్రో సర్వీసెస్‌గా విభజించబడలేదు (తద్వారా రిజిస్ట్రేషన్ వేరుగా ఉంటుంది, ఆన్‌లైన్ స్టోర్ మాడ్యూల్ వేరుగా ఉంటుంది, మొదలైనవి). మేము ప్రతి కంటైనర్‌లో మొత్తం కోడ్ బేస్‌ను నిల్వ చేస్తాము.

మేము కుబెర్నెట్స్‌లో డేటాబేస్‌ను కూడా నిల్వ చేయము (నేను ఇప్పటికీ డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్‌ల కోసం కుబెర్నెట్స్‌లోని డేటాబేస్‌తో పరిష్కారాలను అమలు చేసాను, కానీ ఉత్పత్తి కోసం కాదు).

సైట్ కుబెర్నెట్స్‌లో నడుస్తుందని సైట్ నిర్వాహకులు ఇప్పటికీ గమనించవచ్చు. "సిస్టమ్ చెక్" ఫంక్షన్ సరిగ్గా పని చేయదు; అడ్మిన్ ప్యానెల్ నుండి సైట్ కోడ్‌ను సవరించడానికి, మీరు ముందుగా "నేను కోడ్‌ని సవరించాలనుకుంటున్నాను" బటన్‌ను క్లిక్ చేయాలి.

సమస్యలు గుర్తించబడ్డాయి, మైక్రోసర్వీస్‌లను అమలు చేయవలసిన అవసరం నిర్ణయించబడింది, లక్ష్యం స్పష్టంగా ఉంది - కుబెర్నెట్స్‌లో బిట్రిక్స్‌లో అప్లికేషన్‌లను అమలు చేయడానికి వర్కింగ్ సిస్టమ్‌ను పొందడం, బిట్రిక్స్ యొక్క సామర్థ్యాలు మరియు కుబెర్నెట్స్ యొక్క ప్రయోజనాలు రెండింటినీ సంరక్షించడం. అమలును ప్రారంభిద్దాం.

నిర్మాణం

వెబ్ సర్వర్ (కార్మికులు)తో అనేక "పని" పాడ్‌లు ఉన్నాయి.
క్రాన్ టాస్క్‌లతో కింద ఒకటి (ఒకటి మాత్రమే అవసరం).
అడ్మిన్ ప్యానెల్ నుండి సైట్ కోడ్‌ని సవరించడానికి ఒక అప్‌గ్రేడ్ (అలాగే ఒకటి మాత్రమే అవసరం).

చెల్యాబిన్స్క్‌లోని సౌత్‌బ్రిడ్జ్ మరియు కుబెర్నెట్స్‌లోని బిట్రిక్స్

మేము ప్రశ్నలను పరిష్కరిస్తాము:

  • సెషన్లను ఎక్కడ నిల్వ చేయాలి?
  • కాష్‌ను ఎక్కడ నిల్వ చేయాలి?
  • స్టాటిక్స్ ఎక్కడ నిల్వ చేయాలి, గిగాబైట్ల స్టాటిక్‌లను కంటైనర్‌ల సమూహంలో ఉంచకూడదు?
  • డేటాబేస్ ఎలా పని చేస్తుంది?

డాకర్ చిత్రం

మేము డాకర్ చిత్రాన్ని నిర్మించడం ద్వారా ప్రారంభిస్తాము.

ఆదర్శవంతమైన ఎంపిక ఏమిటంటే, మనకు ఒక సార్వత్రిక చిత్రం ఉంది, దాని ఆధారంగా మేము వర్కర్ పాడ్‌లు, క్రాంటాస్క్‌లతో పాడ్‌లు మరియు అప్‌గ్రేడ్ పాడ్‌లను పొందుతాము.

మేము అలాంటి చిత్రాన్ని రూపొందించాము.

ఇందులో nginx, apache/php-fpm (బిల్డ్ సమయంలో ఎంచుకోవచ్చు), మెయిల్ పంపడానికి msmtp మరియు క్రాన్ ఉన్నాయి.

చిత్రాన్ని అసెంబ్లింగ్ చేస్తున్నప్పుడు, సైట్ యొక్క మొత్తం కోడ్ బేస్ /యాప్ డైరెక్టరీకి కాపీ చేయబడుతుంది (మేము ప్రత్యేక భాగస్వామ్య నిల్వకు తరలించే భాగాలను మినహాయించి).

మైక్రోసర్వీసెస్, సేవలు

వర్కర్ పాడ్స్:

  • nginx + కంటైనర్ apache/php-fpm + msmtp ఉన్న కంటైనర్
  • msmtpని ప్రత్యేక మైక్రోసర్వీస్‌లోకి తరలించడానికి ఇది పని చేయలేదు, Bitrix నేరుగా మెయిల్ పంపడం సాధ్యం కాదని ఆగ్రహం వ్యక్తం చేయడం ప్రారంభించింది.
  • ప్రతి కంటైనర్‌కు పూర్తి కోడ్‌బేస్ ఉంటుంది.
  • కంటైనర్లలో కోడ్ మార్చడంపై నిషేధం.

క్రాన్ కింద:

  • అపాచీ, php, క్రాన్‌తో కూడిన కంటైనర్
  • పూర్తి కోడ్ బేస్ చేర్చబడింది
  • కంటైనర్లలో కోడ్ మార్చడంపై నిషేధం

కింద అప్‌గ్రేడ్ చేయండి:

  • nginx కంటైనర్ + apache/php-fpm కంటైనర్ + msmtp
  • కంటైనర్లలో కోడ్ మార్చడంపై నిషేధం లేదు

సెషన్ నిల్వ

Bitrix కాష్ నిల్వ

మరో ముఖ్యమైన విషయం: మేము డేటాబేస్ నుండి మెయిల్ వరకు, kubernetes సీక్రెట్స్‌లో ప్రతిదానికీ కనెక్ట్ చేయడానికి పాస్‌వర్డ్‌లను నిల్వ చేస్తాము. మేము బోనస్ పొందుతాము: పాస్‌వర్డ్‌లు మేము రహస్యాలను యాక్సెస్ చేసే వారికి మాత్రమే కనిపిస్తాయి మరియు ప్రాజెక్ట్ కోడ్ బేస్‌కు యాక్సెస్ ఉన్న ప్రతి ఒక్కరికీ కాదు.

స్టాటిక్స్ కోసం నిల్వ

మీరు దేనినైనా ఉపయోగించవచ్చు: ceph, nfs (కానీ మేము ఉత్పత్తి కోసం nfsని సిఫార్సు చేయము), క్లౌడ్ ప్రొవైడర్ల నుండి నెట్‌వర్క్ నిల్వ మొదలైనవి.

నిల్వను సైట్ యొక్క /upload/ డైరెక్టరీకి మరియు స్టాటిక్ కంటెంట్‌తో ఇతర డైరెక్టరీలకు కంటైనర్‌లలో కనెక్ట్ చేయాలి.

డేటాబేస్

సరళత కోసం, డేటాబేస్‌ను కుబెర్నెటెస్ వెలుపలికి తరలించాలని మేము సిఫార్సు చేస్తున్నాము. కుబెర్నెటెస్‌లోని స్థావరం ఒక ప్రత్యేక సంక్లిష్టమైన పని; ఇది స్కీమ్‌ను మరింత క్లిష్టంగా మారుస్తుంది.

సెషన్ నిల్వ

మేము memcachedని ఉపయోగిస్తాము :)

ఇది సెషన్ నిల్వను చక్కగా నిర్వహిస్తుంది, క్లస్టర్ చేయబడింది మరియు phpలో session.save_path వలె "స్థానికంగా" మద్దతునిస్తుంది. మేము పెద్ద సంఖ్యలో వెబ్ సర్వర్‌లతో క్లస్టర్‌లను నిర్మించినప్పుడు, క్లాసికల్ మోనోలిథిక్ ఆర్కిటెక్చర్‌లో ఇటువంటి వ్యవస్థ చాలాసార్లు పరీక్షించబడింది. విస్తరణ కోసం మేము హెల్మ్‌ని ఉపయోగిస్తాము.

$ helm install stable/memcached --name session

php.ini - ఇక్కడ చిత్రం memcachedలో సెషన్‌లను నిల్వ చేయడానికి సెట్టింగ్‌లను కలిగి ఉంది

మెమ్‌క్యాచ్‌తో హోస్ట్‌ల గురించి డేటాను పాస్ చేయడానికి మేము ఎన్విరాన్‌మెంట్ వేరియబుల్స్‌ని ఉపయోగించాము https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/.
dev, stage, test, prod పరిసరాలలో ఒకే కోడ్‌ని ఉపయోగించడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది (వాటిలో మెమ్‌క్యాచ్ చేయబడిన హోస్ట్ పేర్లు భిన్నంగా ఉంటాయి, కాబట్టి మేము ప్రతి పర్యావరణానికి సెషన్‌ల కోసం ప్రత్యేకమైన హోస్ట్ పేరును పాస్ చేయాలి).
Bitrix కాష్ నిల్వ

మాకు అన్ని పాడ్‌లు వ్రాయగలిగే మరియు చదవగలిగే తప్పు-తట్టుకునే నిల్వ అవసరం.

మేము memcached కూడా ఉపయోగిస్తాము.
ఈ పరిష్కారం Bitrix ద్వారానే సిఫార్సు చేయబడింది.

$ helm install stable/memcached --name cache

bitrix/.settings_extra.php - ఇక్కడ Bitrixలో కాష్ ఎక్కడ నిల్వ చేయబడిందో పేర్కొనబడింది

మేము పర్యావరణ వేరియబుల్స్‌ని కూడా ఉపయోగిస్తాము.

క్రోంటాస్కీ

కుబెర్నెట్స్‌లో క్రాంటాస్క్‌లను అమలు చేయడానికి విభిన్న విధానాలు ఉన్నాయి.

  • క్రాంటాస్క్‌లను అమలు చేయడానికి పాడ్‌తో ప్రత్యేక విస్తరణ
  • క్రాంటాస్క్‌లను అమలు చేయడానికి cronjob (ఇది వెబ్ యాప్ అయితే - wgetతో https://$host$cronjobname, లేదా వర్కర్ పాడ్‌లలో ఒకదాని లోపల kubectl ఎగ్జిక్యూటివ్, మొదలైనవి)
  • మొదలైనవి

మీరు చాలా సరైన దాని గురించి వాదించవచ్చు, కానీ ఈ సందర్భంలో మేము "క్రోంటాస్క్‌ల కోసం పాడ్‌లతో ప్రత్యేక విస్తరణ" ఎంపికను ఎంచుకున్నాము.

ఇది ఎలా పూర్తయింది:

  • ConfigMap ద్వారా లేదా config/addcron ఫైల్ ద్వారా క్రాన్ టాస్క్‌లను జోడించండి
  • ఒక సందర్భంలో మేము వర్కర్ పాడ్‌కు సమానమైన కంటైనర్‌ను ప్రారంభించాము + దానిలో కిరీటం పనులను అమలు చేయడానికి అనుమతిస్తాము
  • అదే కోడ్ బేస్ ఉపయోగించబడుతుంది, ఏకీకరణకు ధన్యవాదాలు, కంటైనర్ అసెంబ్లీ సులభం

మనం ఏమి పొందుతాము:

  • డెవలపర్‌ల వాతావరణం (డాకర్)కి సమానమైన వాతావరణంలో మేము పని చేసే క్రోంటాస్క్‌లను కలిగి ఉన్నాము
  • క్రోంటాస్క్‌లు కుబెర్నెట్స్ కోసం "తిరిగి వ్రాయవలసిన అవసరం లేదు", అవి అదే రూపంలో మరియు మునుపటి కోడ్ బేస్‌లో పని చేస్తాయి
  • క్రాన్ టాస్క్‌లను అడ్మిన్‌లు మాత్రమే కాకుండా ప్రొడక్షన్ బ్రాంచ్‌కు కమిట్ రైట్స్‌తో టీమ్ సభ్యులందరూ జోడించవచ్చు

సౌత్‌బ్రిడ్జ్ K8SDdeploy మాడ్యూల్ మరియు అడ్మిన్ పానెల్ నుండి కోడ్ సవరణ

మేము కింద అప్‌గ్రేడ్ గురించి మాట్లాడుతున్నామా?
అక్కడ ట్రాఫిక్‌ను ఎలా మళ్లించాలి?
హుర్రే, మేము దీని కోసం PHPలో మాడ్యూల్ వ్రాసాము :) ఇది Bitrix కోసం ఒక చిన్న క్లాసిక్ మాడ్యూల్. ఇది ఇంకా పబ్లిక్‌గా అందుబాటులో లేదు, కానీ మేము దీన్ని తెరవాలని ప్లాన్ చేస్తున్నాము.
మాడ్యూల్ Bitrixలో సాధారణ మాడ్యూల్ వలె ఇన్‌స్టాల్ చేయబడింది:

చెల్యాబిన్స్క్‌లోని సౌత్‌బ్రిడ్జ్ మరియు కుబెర్నెట్స్‌లోని బిట్రిక్స్

మరియు ఇది ఇలా కనిపిస్తుంది:

చెల్యాబిన్స్క్‌లోని సౌత్‌బ్రిడ్జ్ మరియు కుబెర్నెట్స్‌లోని బిట్రిక్స్

ఇది సైట్ అడ్మినిస్ట్రేటర్‌ను గుర్తించే కుక్కీని సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు అప్‌గ్రేడ్ పాడ్‌కి ట్రాఫిక్‌ని పంపడానికి కుబెర్నెట్‌లను అనుమతిస్తుంది.

మార్పులు పూర్తయినప్పుడు, మీరు git పుష్ క్లిక్ చేయాలి, కోడ్ మార్పులు gitకి పంపబడతాయి, ఆపై సిస్టమ్ కోడ్ యొక్క కొత్త వెర్షన్‌తో చిత్రాన్ని నిర్మిస్తుంది మరియు పాత పాడ్‌లను భర్తీ చేస్తూ క్లస్టర్‌లో “రోల్ అవుట్” చేస్తుంది. .

అవును, ఇది కొంచెం ఊతకర్ర, కానీ అదే సమయంలో మేము మైక్రోసర్వీస్ ఆర్కిటెక్చర్‌ను నిర్వహిస్తాము మరియు అడ్మిన్ పానెల్ నుండి కోడ్‌ను సరిచేయడానికి బిట్రిక్స్ వినియోగదారులకు ఇష్టమైన అవకాశాన్ని తీసివేయము. చివరికి, ఇది ఒక ఎంపిక; మీరు కోడ్‌ను సవరించే సమస్యను వేరే విధంగా పరిష్కరించవచ్చు.

హెల్మ్ చార్ట్

కుబెర్నెట్స్‌లో అప్లికేషన్‌లను రూపొందించడానికి, మేము సాధారణంగా హెల్మ్ ప్యాకేజీ మేనేజర్‌ని ఉపయోగిస్తాము.
కుబెర్నెటెస్‌లోని మా బిట్రిక్స్ సొల్యూషన్ కోసం, మా ప్రముఖ సిస్టమ్ అడ్మినిస్ట్రేటర్ అయిన సెర్గీ బొండారెవ్ ప్రత్యేక హెల్మ్ చార్ట్‌ను రాశారు.

ఇది వర్కర్, ఉగ్రేడ్, క్రాన్ పాడ్‌లను నిర్మిస్తుంది, ప్రవేశాలు, సేవలను కాన్ఫిగర్ చేస్తుంది మరియు కుబెర్నెటెస్ రహస్యాల నుండి పాడ్‌లకు వేరియబుల్‌లను బదిలీ చేస్తుంది.

మేము Gitlabలో కోడ్‌ను నిల్వ చేస్తాము మరియు మేము Gitlab నుండి హెల్మ్ బిల్డ్‌ను కూడా అమలు చేస్తాము.

సంక్షిప్తంగా, ఇది ఇలా కనిపిస్తుంది

$ helm upgrade --install project .helm --set image=registrygitlab.local/k8s/bitrix -f .helm/values.yaml --wait --timeout 300 --debug --tiller-namespace=production

విస్తరణ సమయంలో అకస్మాత్తుగా ఏదైనా తప్పు జరిగితే "అతుకులు లేని" రోల్‌బ్యాక్ చేయడానికి కూడా హెల్మ్ మిమ్మల్ని అనుమతిస్తుంది. మీరు భయాందోళనలో లేనప్పుడు “ఉత్పత్తి పడిపోయినందున ftp ద్వారా కోడ్‌ను పరిష్కరించండి,” అయితే కుబెర్నెటెస్ స్వయంచాలకంగా మరియు పనికిరాని సమయం లేకుండా చేస్తుంది.

మోహరించేందుకు

అవును, మేము Gitlab & Gitlab CI యొక్క అభిమానులు, మేము దానిని ఉపయోగిస్తాము :)
Gitlabలో ప్రాజెక్ట్ రిపోజిటరీకి కట్టుబడి ఉన్నప్పుడు, Gitlab పర్యావరణం యొక్క కొత్త సంస్కరణను అమలు చేసే పైప్‌లైన్‌ను ప్రారంభిస్తుంది.

దశల్లో:

  • బిల్డ్ (కొత్త డాకర్ చిత్రాన్ని నిర్మించడం)
  • పరీక్ష (పరీక్ష)
  • శుభ్రపరచడం (పరీక్ష వాతావరణాన్ని తొలగించడం)
  • పుష్ (మేము దానిని డాకర్ రిజిస్ట్రీకి పంపుతాము)
  • నియోగించండి (మేము హెల్మ్ ద్వారా అప్లికేషన్‌ను కుబెర్నెట్స్‌కి అమలు చేస్తాము).

చెల్యాబిన్స్క్‌లోని సౌత్‌బ్రిడ్జ్ మరియు కుబెర్నెట్స్‌లోని బిట్రిక్స్

హుర్రే, ఇది సిద్ధంగా ఉంది, దానిని అమలు చేద్దాం!
సరే, లేదా ఏవైనా ప్రశ్నలు ఉంటే అడగండి.

కాబట్టి మేము ఏమి చేసాము

సాంకేతిక కోణం నుండి:

  • డాకరైజ్డ్ బిట్రిక్స్;
  • కంటైనర్లలో బిట్రిక్స్ "కట్", వీటిలో ప్రతి ఒక్కటి కనీస విధులను నిర్వహిస్తుంది;
  • కంటైనర్ల స్థితిలేని స్థితిని సాధించింది;
  • కుబెర్నెట్స్‌లో బిట్రిక్స్‌ని నవీకరించడంలో సమస్యను పరిష్కరించారు;
  • అన్ని Bitrix విధులు పని చేస్తూనే ఉన్నాయి (దాదాపు అన్నీ);
  • మేము కుబెర్నెటెస్‌కు విస్తరణ మరియు సంస్కరణల మధ్య రోల్‌బ్యాక్‌పై పని చేసాము.

వ్యాపార దృక్కోణం నుండి:

  • తప్పు సహనం;
  • కుబెర్నెటెస్ సాధనాలు (గిట్‌లాబ్ CIతో సులభంగా ఏకీకరణ, అతుకులు లేని విస్తరణ మొదలైనవి);
  • రహస్య పాస్‌వర్డ్‌లు (పాస్‌వర్డ్‌లకు నేరుగా యాక్సెస్ మంజూరు చేయబడిన వారికి మాత్రమే కనిపిస్తుంది);
  • ఒకే ఇన్‌ఫ్రాస్ట్రక్చర్‌లో అదనపు వాతావరణాలను (అభివృద్ధి, పరీక్షలు మొదలైనవి) సృష్టించడం సౌకర్యంగా ఉంటుంది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి