VPN sidecar u Kubernetes Podu izgleda kao VPN na nivou hosta sa boljim manirima, i sličnost prestaje na granici imenskog prostora. Kontejneri u jednom Podu dijele mrežni imenski prostor, uključujući adresni i portni prostor, pa sidecar koji instalira rute i politiku zaista mijenja kuda idu paketi aplikacije. Za ostale Podove na čvoru ne mijenja ništa, i ne dira vlastiti stek čvora osim ako ga tako konfigurišete. Ispravno razumijevanje te granice određuje i šta možete uvesti i šta morate testirati. Odsjeci ispod prate to od imenskog prostora prema van.

Zajednički imenski prostor, zajedničke posljedice

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

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

Dokle sidecar ne dopire

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

Saobraćaj prema servisima klastera je drugo često iznenađenje. Široka podrazumijevana 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 podrazumijevana ruta je pogrešno rješenje za to. Plan ruta pripada u isti repozitorij kao i manifest, jer sljedeći klaster može dodijeliti sasvim 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 besprijekorno.

Pokretanje i kvar su eksplicitna stanja

Pokrenut sidecar proces nije izlazna politika. Odlučite koji saobraćaj smije teći prije nego tunel bude spreman i šta se dogodi ako poslije umre, pa tu odluku sprovedite: proba koja propušta kontejner aplikacije, mrežna politika koja odbija po podrazumijevanom, ili oboje. Bez jednog od toga aplikacija se pokrene, razriješi i pošalje saobraćaj 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 sa testom kvara. Ubijte sidecar i potvrdite da aplikacija gubi predviđeni izlaz umjesto da se tiho vraća nazad.

Sposobnosti, politike i testiranje iz kontejnera aplikacije

Dodjela sposobnosti potrebnih za stvaranje interfejsa i mijenjanje ruta je odluka o privilegijama, a privilegija prikladna za izolovani Pod nije automatski prikladna na steku č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.

Dokumentujte 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 prestaje raditi.

Povezani članci