VPN sidecar u Kubernetes Podu izgleda kao VPN na razini hosta s boljim manirima, a sličnost prestaje na granici prostora imena. Kontejneri u jednom Podu dijele mrežni prostor imena, uključujući adresni i portni prostor, pa sidecar koji instalira rute i politiku stvarno mijenja kamo idu paketi aplikacije. Za druge Podove na čvoru ne mijenja ništa i ne dira vlastiti stog čvora, osim ako ga tako konfigurirate. Ispravno shvatanje te granice određuje i šta možete uvesti i šta morate testirati. Odsjeci ispod prate to od prostora imena prema van.

Dijeljeni prostor imena, dijeljene posljedice

Dva kontejnera u Podu razgovaraju preko loopbacka i vide iste interfejse, i zato sidecar obrazac uopće funkcionira: aplikacija ne mora znati da tunel postoji, jer je ruta koju dobije instalirana u prostoru imena koji koristi. Isto svojstvo znači da su sidecarove greške aplikacijske greške. Ruta koja hvata previše, ili DNS promjena koja pokazuje na resolver unutar tunela, odmah se primjenjuje na svaki proces u tom Podu. U dijeljenom prostoru imena nema usmjeravanja po kontejneru, pa se sidecar ne može ograničiti na jedan proces.

To je mehanizam koji treba imati na umu tokom pregleda: radijus utjecaja je Pod, ne čvor i ne klaster.

Do čega sidecar ne dopire

Drugi Podovi zadržavaju svoje prostore imena i svoje usmjeravanje, pa radno opterećenje kojem treba isti izlaz treba isti sidecar ili, umjesto toga, dizajn na razini čvora. Ni promet čvora nije unutar prostora imena Poda, a Podovi s mrežom hosta svjesno potpuno odustaju od te izolacije. Ako sidecar pokrenete s mrežom hosta da dosegnete nešto zgodno, proširili ste obuhvat s jednog Poda na cijeli čvor i to treba glasno reći.

Promet prema servisima klastera je drugo često iznenađenje. Široka zadana ruta unutar Poda može uhvatiti zahtjeve namijenjene API serveru ili servisu ClusterIP, a oni potom padaju na način koji izgleda kao da je tunel pokvaren.

Plan ruta: Pod, servis, čvor i VPN rasponi

Zapišite četiri raspona i provjerite ih na preklapanje prije nego što bilo šta uvedete: Pod CIDR, servisni CIDR, adrese čvora i odredišta iza VPN-a. Preklapanje između privatnih raspona VPN-a i vlastitog prostora klastera nije rijetko, a zadana ruta je pogrešno rješenje za to. Plan ruta pripada u isti repozitorij kao i manifest, jer sljedeći klaster može dodijeliti posve drugačije Pod i servisne raspone.

DNS je dio plana, a ne odvojena briga. Sidecar koji prepisuje konfiguraciju resolvera može slomiti otkrivanje servisa unutar klastera dok vanjska pretraga radi savršeno.

Pokretanje i kvar su eksplicitna stanja

Pokrenuti sidecar proces nije izlazna politika. Odlučite koji promet smije teći prije nego tunel bude spreman i šta se dogodi ako poslije umre, pa tu odluku implementirajte: proba koja propušta kontejner aplikacije, mrežna politika koja odbija po zadanom, ili oboje. Bez jednog od toga aplikacija se pokrene, razriješi i pošalje promet izvan uobičajene putanje čvora dok se tunel još povezuje.

Ta praznina je kratka u zdravom klasteru i trajna u pokvarenom, i to je upravo svojstvo koje napadač ili slučajno curenje podataka preferira.

Uparite redoslijed s testom kvara. Ubijte sidecar i potvrdite da aplikacija gubi predviđeni izlaz umjesto da se tiho vraća na staro.

Sposobnosti, politike i testiranje iz kontejnera aplikacije

Dodjela sposobnosti potrebnih za stvaranje interfejsa i mijenjanje ruta je odluka o privilegijama, a privilegija prikladna za izolirani Pod nije automatski prikladna na stogu čvora. Koristite mehanizme mrežne i sigurnosne politike koje klaster podržava i ne pretpostavljajte da svaka implementacija CNI-ja ili politike tretira VPN interfejs jednako; razlike se pokažu upravo u slučajevima kvara do kojih vam je stalo.

Testirajte iz stvarnog kontejnera aplikacije, svježim zahtjevima prema privatnom odredištu, servisu klastera i javnom internetu. Test iz sidecara dokazuje da tunel radi, ne da aplikacija može dosegnuti ono što joj treba.

Dokumentirajte pretpostavke mreže klastera uz VPN konfiguraciju. Premještanje radnog opterećenja u drugi klaster tada je vježba provjere plana ruta, a ne promjena slike koja tiho prestane raditi.

Povezani članci