CI રનરનું VPN: શું ટનલ બિલ્ડ કરતાં વધુ ટકે છે?
શેર કરેલ CI રનર કામો વચ્ચે રૂટ અને પ્રક્રિયાઓ રાખે છે. કામ પહેલાં, દરમિયાન અને પછી VPN ની સ્થિતિનું આયોજન કરો, અને ફક્ત એ જ જોડાણ સાફ કરો જે કામનું પોતાનું છે.
એક ડિપ્લોયમેન્ટ કામ જોડાય છે, તેનું આર્ટિફેક્ટ કોપી કરે છે અને સફળતા જાહેર કરે છે. તેણે ખોલેલી ટનલ આગલું કામ શરૂ થાય ત્યારે પણ ચાલુ હોઈ શકે છે, અને તેણે બદલેલો રૂટ આખા હોસ્ટનો છે. બિલ્ડ પરિણામ આદેશનું વર્ણન કરે છે, તેણે પાછળ છોડેલી સ્થિતિનું નહીં. VPN ને આયુષ્ય ધરાવતા સંસાધન તરીકે ગણો, સ્ટેજની શરૂઆતમાં એક લીટી તરીકે નહીં.
આ હોસ્ટ પર બીજું શું ચાલે છે
એક Jenkins નોડ એકસાથે ઘણા એક્ઝિક્યુટર ચલાવી શકે છે, અને હોસ્ટના રૂટ, રિઝોલ્વર સેટિંગ્સ કે સિસ્ટમ-વ્યાપી જોડાણ બદલતું કામ તેને બધા માટે બદલે છે. બીજું કામ તેને ધ્યાનમાં લેશે કે નહીં તે રૂટ અને ફિલ્ટરિંગ નીતિ પર આધાર રાખે છે, VPN વિશેના સામાન્ય નિયમ પર નહીં. રિપોઝિટરી ઍક્સેસ, આર્ટિફેક્ટ ઍક્સેસ અને કંટ્રોલ ચેનલ અલગ જરૂરિયાતો છે જે રનરને હજી પણ જોઈએ છે. પૂર્ણ ટનલ પસંદ કરતાં પહેલાં તેને ડિપ્લોયમેન્ટ ગંતવ્યોની યાદીમાં ઉમેરો.
જો કંટ્રોલ ચેનલ ટનલમાંથી પસાર થવાની હોય, તો ડિઝાઇનને તે જાણી જોઈને કહેવું પડશે. રોલબેક દરમિયાન તે શોધવું એ યોજના નથી. બે યાદીઓ લખો: કામને ખાનગી રીતે શું પહોંચવું છે, અને રનરને કોઈ પણ સ્થિતિમાં શું પહોંચવું છે.
શું આ કામને બિલકુલ ખાનગી ઍક્સેસની જરૂર છે?
ટનલ ઉમેરતાં પહેલાં પૂછો કે બિલ્ડ સ્ટેજને તેની જરૂર છે કે નહીં. ખાનગી ડિપ્લોયમેન્ટ એજન્ટ મંજૂર આર્ટિફેક્ટ લાવીને ડિપ્લોયમેન્ટ કરી શકે છે, જે સામાન્ય બિલ્ડ સ્ટેજને ખાનગી નેટવર્કની બહાર રાખે છે. આ વિભાજન સામાન્ય રીતે દરેક બિલ્ડ પગલાને ટનલમાંથી રૂટ કરવાનું શીખવવા કરતાં સસ્તું છે.
સીમા અનુભવમાંથી નહીં, વર્કફ્લોમાંથી પસંદ કરો. જવાબ ના હોય, તો આ પાનાનો બાકીનો ભાગ બિનજરૂરી છે, અને તે ઉપલબ્ધ શ્રેષ્ઠ પરિણામ છે.
આગલું કામ જે સ્થિતિ વારસામાં લે છે
કામ પહેલાં, ખાનગી ઍક્સેસ હોય ત્યારે અને તે પૂરું થયા પછી—રદ કરવાનો પણ સમાવેશ કરીને—શું સાચું હોવું જોઈએ તે વર્ણવો. અંતિમ સ્થિતિ જ સૌથી વધુ ગર્ભિત રહે છે, અને તે જ આગલું કામ વારસામાં લે છે. તેને કોઈની યાદમાં રાખવાને બદલે પાઇપલાઇનની બાજુમાં લખો.
| Moment | What proves it | What leaks if it is skipped |
|---|---|---|
| Job start: pre-flight route check | The route table shows no tunnel from an earlier job, and the profile list is empty | A stale route sends deployment traffic into a dead tunnel |
| Job end: disconnect and shred | The profile is down and the temporary key file is gone | The next job inherits an open tunnel and a usable credential |
| Cancelled job: reboot or disposal | The host is replaced or rebooted before the next job starts | A killed process leaves the tunnel up with no owner |
સમર્પિત કે એકવાર વપરાતું એજન્ટ આ સીમાઓ લાગુ કરવી સરળ બનાવે છે. કન્ટેનર કે નેમસ્પેસ ત્યારે જ મદદ કરે છે જ્યારે તેની નેટવર્ક અને વિશેષાધિકાર ગોઠવણ ખરેખર ફેરફારને અલગ પાડે છે.
પ્રોગ્રામ નહીં, જોડાણ બંધ કરો
આ કામે શરૂ કરેલું જોડાણ બંધ કરવા અને તેના કામચલાઉ ઓળખપત્રો દૂર કરવા પાઇપલાઇનનો ફાઇનલાઇઝેશન માર્ગ વાપરો. બીજા કામો વાપરતા હોસ્ટ પર પ્રોગ્રામના નામ પ્રમાણે પ્રક્રિયાઓ મેળવશો નહીં; તેના બદલે ચોક્કસ જોડાણ બંધ કરો. નીચેના બે આદેશો આખી સફાઈ છે, અને એક પણ પ્રક્રિયા શોધવા પર આધાર રાખતો નથી.
vpn-cli disconnect --profile "$PROFILE"
rm -f "$RUNNER_TEMP/client.key"
ફાઇનલાઇઝેશન અલગીકરણ નથી: મરતું રનર તેની ખોલેલી ટનલ રાખે છે, અને જબરદસ્તીથી અટકાવેલી પ્રક્રિયા બ્લોકને સંપૂર્ણપણે છોડી દે છે. તેથી ફક્ત સફાઈનો આદેશ આખી ડિઝાઇન ન હોઈ શકે. વ્યવહારમાં તે આમ નિષ્ફળ જાય છે: ડિપ્લોયમેન્ટ કામ કોપી પગલા પર રદ થાય છે, ફાઇનલાઇઝેશન બ્લોક ક્યારેય ચાલતો નથી, અને એ જ હોસ્ટ પરનું આગલું કામ ચાલુ ટનલ અને એવા નેટવર્ક તરફ જતા રૂટ સાથે શરૂ થાય છે જ્યાં તે પહોંચી શકતું નથી. નિષ્ફળતા આગલા બિલ્ડમાં 'DNS' સમસ્યા જેવી લાગે છે, જે કામે તેને સર્જી તે પૂરું થયાના કલાકો પછી.
કામના આઉટપુટમાં પ્રોફાઇલનું નામ અને ઓળખપત્રનો માર્ગ નોંધો. કોઈ ઓળખકર્તા વગરનો ખાલી ડિસ્કનેક્ટ આદેશ પછીથી ઓડિટ કરવો મુશ્કેલ છે. લોગની લીટી પણ એ જ છે જે સાબિત કરે છે કે બ્લોક ચાલ્યો હતો, જ્યારે પછીની તપાસ તે માંગે છે.
કામને એવું હોસ્ટ આપો જે બીજું કોઈ વાપરતું નથી
નિકાલજોગ ઇન્ફ્રાસ્ટ્રક્ચર વારસાની સમસ્યાને સંભાળવાને બદલે દૂર કરે છે. દરેક કામ માટે નવું એજન્ટ કોઈ રૂટ, પ્રોફાઇલ કે બીજાના ઓળખપત્રો વગર શરૂ થાય છે, અને તેનો નાશ કામે છોડેલું બધું સાફ કરે છે. તેનો દરેક બિલ્ડ પર વધુ ખર્ચ થાય છે, અને તે સફાઈ કોડ પર આધાર ન રાખતી સીમાની પ્રામાણિક કિંમત છે. ઉત્પાદન નેટવર્કને અડતા કામો માટે, ઘટનાઓ ગણ્યા પછી સામાન્ય રીતે આ જ સસ્તો વિકલ્પ છે.
જ્યાં શેર કરેલ રનર રહેવું જ પડે, ત્યાં નિષ્ફળતા અને રદ કરવાની પરીક્ષા સફળ કોપી જેટલી જ કાળજીથી કરો. પરીક્ષણે દર્શાવવું જોઈએ કે આ કામ અડધા રસ્તે રદ થાય તો આગલું કામ શું જોશે. કામ ત્યારે પૂરું થાય છે જ્યારે તેની ઍક્સેસ અને કામચલાઉ સ્થિતિ પૂરી થાય, જ્યારે કોપી આદેશ શૂન્ય પરત કરે ત્યારે નહીં.