VPN-сайдкар у Kubernetes Pod выглядае як VPN узроўню хоста з лепшымі паводзінамі, і падабенства сканчаецца на мяжы прасторы імёнаў. Кантэйнеры ў адным Pod дзеляць сеткавую прастору імёнаў, уключаючы прастору адрасоў і партоў, таму сайдкар, які ўсталёўвае маршруты і палітыкі, сапраўды змяняе, куды ідуць пакеты праграмы. Для іншых Pod на вузле ён не змяняе нічога, і ён не закранае ўласны стек вузла, калі вы не наладзіце гэта. Правільнае разуменне гэтай мяжы вызначае і тое, што вы можаце разгортваць, і тое, што павінны тэставаць. Раздзелы ніжэй прасочваюць гэта ад прасторы імёнаў вонкі.

Агульная прастора імёнаў, агульныя наступствы

Два кантэйнеры ў Pod размаўляюць праз loopback і бачаць адныя і тыя ж інтэрфейсы, і менавіта таму шаблон сайдкара ўвогуле працуе: праграме не трэба ведаць пра існаванне тунэля, бо маршрут, які яна атрымлівае, усталяваны ў прасторы імёнаў, якую яна выкарыстоўвае. Тая ж уласцівасць азначае, што памылкі сайдкара — гэта памылкі праграмы. Маршрут, які захоплівае занадта шмат, або змена DNS, якая паказвае на рэзолвер унутры тунэля, неадкладна ўжываецца да кожнага працэсу ў гэтым Pod. У агульнай прасторы імёнаў няма маршрутызацыі па кантэйнерах, таму сайдкар немагчыма абмежаваць адным працэсам.

Гэта механізм, які варта трымаць у галаве падчас агляду: зона ўплыву — гэта Pod, а не вузел і не кластар.

Чаго сайдкар не дасягае

Іншыя Pod захоўваюць свае прасторы імёнаў і сваю маршрутызацыю, таму рабочая нагрузка, якой патрэбны той жа выхад, патрабуе таго ж сайдкара або дызайну на ўзроўні вузла. Трафік вузла таксама па-за прасторай імёнаў Pod, а Pod з сеткай хоста свядома цалкам адмаўляюцца ад гэтай ізаляцыі. Калі вы запускаеце сайдкар з сеткай хоста, каб дабрацца да чагосьці зручнага, вы пашырылі ахоп з аднаго Pod на ўвесь вузел і павінны сказаць пра гэта ўголас.

Трафік службаў кластара — яшчэ адзін тыповы сюрпрыз. Шырокі маршрут па змаўчанні ўнутры Pod можа перахапіць запыты, прызначаныя серверу API або службе ClusterIP, і яны потым падаюць так, што выглядае, нібы тунэль зламаны.

План маршрутаў: дыяпазоны Pod, службы, вузла і VPN

Запішыце чатыры дыяпазоны і праверце іх на перасячэнне перад разгортваннем чаго-небудзь: CIDR Pod, CIDR службы, адрасы вузла і прызначэнні за VPN. Перасячэнне прыватных дыяпазонаў VPN з уласнай прасторай кластара не рэдкасць, і маршрут па змаўчанні — няправільнае рашэнне для гэтага. План маршрутаў павінен ляжаць у тым жа рэпазіторыі, што і маніфест, бо наступны кластар можа выдаць зусім іншыя дыяпазоны Pod і службаў.

DNS — частка плана, а не асобная праблема. Сайдкар, які перапісвае канфігурацыю рэзолвера, можа зламаць выяўленне службаў у кластары, робячы знешнія запыты ідэальнымі.

Запуск і адмова — гэта яўныя станы

Працэс сайдкара, які працуе, — не палітыка выхаду. Вызначце, які трафік можа ісці да гатоўнасці тунэля і што адбудзецца, калі ён загіне пасля, затым рэалізуйце гэтае рашэнне: проба, якая стрымлівае кантэйнер праграмы, сеткавая палітыка, якая адмаўляе па змаўчанні, або і тое, і іншае. Без аднаго з гэтага праграма запускаецца, развязвае імёны і адпраўляе трафік звычайным шляхам вузла, пакуль тунэль яшчэ падключаецца.

Гэтая прамежка — кароткая ў здаровым кластары і пастаянная ў зламаным, і гэта менавіта тая ўласцівасць, якой аддае перавагу зламыснік або выпадковая ўцечка даных.

Спалучыце парадак з тэстам адмовы. Забіце сайдкар і пераканайцеся, што праграма губляе патрэбны выхад, а не моўчкі вяртаецца да звычайнага шляху.

Магчымасці, палітыкі і тэставанне з кантэйнера праграмы

Дазвол магчымасцяў, патрэбных для стварэння інтэрфейсаў і змянення маршрутаў, — гэта рашэнне аб прывілеях, і прывілей, прыдатны для ізаляванага Pod, не абавязкова прыдатны на стэку вузла. Выкарыстоўвайце падтрыманыя кластарам механізмы сеткавай і палітыкі бяспекі і не мяркуйце, што кожная рэалізацыя CNI або палітыкі ставіцца да VPN-інтэрфейса аднолькава; адрозненні праяўляюцца менавіта ў тых выпадках адмовы, якія вас хвалююць.

Тэстуйце з рэальнага кантэйнера праграмы, свежымі запытамі да прыватнага прызначэння, службы кластара і публічнага інтэрнэту. Тэст з сайдкара даказвае, што тунэль працуе, а не што праграма дасягае таго, што ёй патрэбна.

Задакументуйце сеткавыя дапушчэнні кластара побач з канфігурацыяй VPN. Тады перанос рабочай нагрузкі ў іншы кластар — гэта практыкаванне ў праверцы плана маршрутаў, а не змена вобраза, якая моўчкі перастае працаваць.

Падобныя артыкулы