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' പ്രശ്നം പോലെ തോന്നുന്നു, അതിന് കാരണമായ ജോലി കഴിഞ്ഞ് മണിക്കൂറുകൾക്ക് ശേഷം.
പ്രൊഫൈലിന്റെ പേരും ക്രെഡൻഷ്യലിന്റെ പാതയും ജോലിയുടെ ഔട്ട്പുട്ടിൽ രേഖപ്പെടുത്തുക. തിരിച്ചറിയൽ ഇല്ലാത്ത വെറും ഡിസ്കണക്ട് കമാൻഡ് പിന്നീട് ഓഡിറ്റ് ചെയ്യാൻ ബുദ്ധിമുട്ടാണ്. ലോഗ് വരിയാണ് ബ്ലോക്ക് പ്രവർത്തിച്ചു എന്ന് തെളിയിക്കുന്നതും, പിന്നീടുള്ള അന്വേഷണം ചോദിക്കുമ്പോൾ.
മറ്റാരും ഉപയോഗിക്കാത്ത ഒരു ഹോസ്റ്റ് ജോലിക്ക് നൽകുക
ഒറ്റത്തവണ ഉപയോഗിക്കാവുന്ന ഇൻഫ്രാസ്ട്രക്ചർ പാരമ്പര്യ പ്രശ്നം കൈകാര്യം ചെയ്യുന്നതിന് പകരം നീക്കികളയുന്നു. ഓരോ ജോലിക്കും പുതിയ ഏജന്റ് റൂട്ടും പ്രൊഫൈലും മറ്റുള്ളവരുടെ ക്രെഡൻഷ്യലുകളും ഇല്ലാതെ തുടങ്ങുന്നു, അതിന്റെ നാശം ജോലി വിട്ടതെല്ലാം വൃത്തിയാക്കുന്നു. ഇത് ഓരോ ബിൽഡിനും കൂടുതൽ ചെലവുണ്ട്, വൃത്തിയാക്കൽ കോഡിനെ ആശ്രയിക്കാത്ത അതിർത്തിയുടെ സത്യസന്ധമായ വിലയാണത്. ഉത്പാദന നെറ്റ്വർക്കുകളെ സ്പർശിക്കുന്ന ജോലികൾക്ക്, സംഭവങ്ങൾ കണക്കാക്കിയാൽ സാധാരണയായി ഇതാണ് വിലകുറഞ്ഞ ഓപ്ഷൻ.
പങ്കിട്ട റണ്ണർ നിലനിർത്തേണ്ടയിടത്ത്, പരാജയവും റദ്ദാക്കലും വിജയകരമായ പകർത്തലിനൊപ്പം അത്രതന്നെ ശ്രദ്ധയോടെ പരിശോധിക്കുക. ഈ ജോലി പാതിവഴിയിൽ റദ്ദാക്കിയാൽ അടുത്ത ജോലി എന്ത് കാണുമെന്ന് പരിശോധന കാണിക്കണം. ജോലിയുടെ ആക്സസും താൽക്കാലിക അവസ്ഥയും അവസാനിക്കുമ്പോഴാണ് ജോലി കഴിയുന്നത്, പകർത്തൽ കമാൻഡ് പൂജ്യം തിരികെ നൽകുമ്പോഴല്ല.