CI runner və VPN: tunel quraşdırmadan çox yaşayırmı?
Ortaq CI runner işlər arasında marşrutları və prosesləri saxlayır. VPN-in işdən əvvəl, iş zamanı və sonrakı vəziyyətlərini planlaşdırın və yalnız işin sahib olduğu bağlantını təmizləyin.
Yerləşdirmə işi bağlanır, artefaktını köçürür və uğur bildirir. Açdığı tunel növbəti iş başlayanda hələ də qalxa bilər, dəyişdirdiyi marşrut isə bütün hosta aiddir. Quraşdırma nəticəsi əmri təsvir edir, arxada qoyduğu vəziyyəti yox. VPN-ə ömrü olan resurs kimi yanaşın, mərhələnin əvvəlindəki bir sətir kimi yox.
Bu hostda başqa nə işləyir
Jenkins node-u eyni anda bir neçə icraçı işlədə bilər və host marşrutlarını, həlledici ayarlarını və ya sistem səviyyəli bağlantını dəyişən iş bunları hamı üçün dəyişir. Başqa işin bunu görüb-görməməsi marşrut və filtr siyasətindən asılıdır, VPN-lər haqqında ümumi qaydadan yox. Repozitoriyaya giriş, artefakta giriş və idarəetmə kanalı runner-in hələ də ehtiyac duyduğu ayrı tələblərdir. Tam tunel seçməzdən əvvəl bunları yerləşdirmə təyinat siyahısına əlavə edin.
Əgər idarəetmə kanalı tuneldən keçəcəksə, dizayn bunu qəsdən deməlidir. Geri qaytarma zamanı bunu kəşf etmək plan deyil. İki siyahını yazın: işin şəxsi olaraq nəyə çatmalı olduğunu və runner-in nədən asılı olmayaraq çatmalı olduğunu.
Bu işə ümumiyyətlə şəxsi giriş lazımdırmı?
Tunel əlavə etməzdən əvvəl soruşun ki, quraşdırma mərhələsinə bu lazımdırmı. Şəxsi yerləşdirmə agenti təsdiqlənmiş artefaktı götürüb yerləşdirməni yerinə yetirə bilər və bu, ümumi quraşdırma mərhələsini şəxsi şəbəkədən kənarda saxlayır. Bu bölgü adətən hər quraşdırma addımına tuneldən marşrutlaşdırmağı öyrətməkdən ucuzdur.
Sərhədi vərdişdən deyil, iş axınından seçin. Əgər cavab yoxdursa, bu səhifənin qalan hissəsi lazımsızdır və bu, mövcud ən yaxşı nəticədir.
Növbəti işin miras aldığı vəziyyət
İşdən əvvəl, şəxsi girişə sahib olduğu zaman və bitdikdən sonra, ləğvetmə də daxil olmaqla nəyin doğru olması lazım olduğunu təsvir edin. Son vəziyyət ən çox üstüörtülü qalan və növbəti işin miras aldığı vəziyyətdir. Bunu kiminsə yaddaşında saxlamaq əvəzinə boru xəttinin yanında yazın.
| 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 |
Xüsusi və ya birdəfəlik agent həmin sərhədləri tətbiq etməyi asanlaşdırır. Konteyner və ya ad məkanı yalnız şəbəkə və imtiyaz quruluşu dəyişikliyi həqiqətən təcrid edirsə kömək edir.
Proqramı deyil, bağlantını dayandırın
Bu işin başlatdığı bağlantını bağlamaq və müvəqqəti etimadnamələrini silmək üçün boru xəttinin yekunlaşdırma yolundan istifadə edin. Başqa işlərin istifadə etdiyi hostda prosesləri proqram adına görə uyğunlaşdırmayın; əvəzində konkret bağlantını dayandırın. Aşağıdakı iki əmr bütün təmizləmədir və heç biri proses tapmaqdan asılı deyil.
vpn-cli disconnect --profile "$PROFILE"
rm -f "$RUNNER_TEMP/client.key"
Yekunlaşdırma təcrid deyil: ölən runner açdığı tuneli saxlayır və zorla dayandırılan proses bloku tamamilə atlayır. Buna görə təmizləmə əmri tək başına bütün dizayn ola bilməz. Praktikada belə uğursuz olur: yerləşdirmə işi köçürmə addımında ləğv edilir, yekunlaşdırma bloku heç vaxt işləmir və eyni hostdakı növbəti iş canlı tunel və çata bilmədiyi şəbəkəyə yönələn marşrutla başlayır. Nasazlıq növbəti quraşdırmada 'DNS' problemi kimi görünür, hadisəyə səbəb olan iş bitdikdən saatlar sonra.
Profil adını və etimadnamə yolunu iş çıxışında qeyd edin. Heç bir identifikatoru olmayan çılpaq əlaqə kəsmə əmrinin sonradan audit edilməsi çətindir. Log sətri həm də sonrakı araşdırma soruşanda blokun işlədiyini sübut edən şeydir.
İşə başqa heç kimin istifadə etmədiyi host verin
Birdəfəlik infrastruktur miras problemini idarə etmək əvəzinə aradan qaldırır. Hər iş üçün təzə agent heç bir marşrut, profil və başqasının etimadnaməsi olmadan başlayır və onun məhv edilməsi işin qoyduğu hər şeyi təmizləyir. Bu, hər quraşdırma üçün daha baha başa gəlir və təmizləmə kodundan asılı olmayan sərhədin dürüst qiymətidir. İstehsal şəbəkələrinə toxunan işlər üçün hadisələr sayıldıqdan sonra adətən daha ucuz seçimdir.
Ortaq runner qalmalı olduqda, uğursuzluğu və ləğvetməni uğurlu köçürmə qədər diqqətlə sınaqdan keçirin. Test bu iş yarı yolda ləğv edilsəydi, növbəti işin nə görəcəyini göstərməlidir. İş onun girişi və müvəqqəti vəziyyəti bitəndə tamamlanır, köçürmə əmri sıfır qaytaranda yox.