Pod-ka OpenVPN ee Kubernetes ma gudbiyo wax? Hubi ip_forward
Macaamiisha waxay ping gareeyaan pod-ka VPN oo wax ka sii fog ma jiro. Namespace-ku wuxuu leeyahay gudbin damisan, hagaajintuna waa inay ka gudubto admission, dib u bilaabid iyo wadada soo noqodka.
Laptop-kaagu wuxuu muujinayaa tunnel cagaar ah, log-ga macmiilku wuxuu sheegayaa in dariiqooyinka la riixay, iyo cinwaanka kaliya ee jawaaba waa IP-ga tunnel-ka ee server-ka VPN laftiisa. Ping-yada ka dambeeya way dhintaan wax kasta oo aad bartilmaameedsato, ha ahaado ClusterIP, cinwaanka pod kale ama magac martigeliye dadweyne. Isku-darkaas ma aha mid mugdi ah, waa cilmi-baaris: furitaanku wuu shaqeeyaa, boodhka labaadna ma shaqeeyo.
Tan waxaan kala kulmay node Debian oo ordineysa image OpenVPN oo chart lagu rakibay, tunnel-kuna wuxuu ahaa qaybta fudud. Macmiilku wuxuu qaatay kirada 10.8.0.x, 10.8.0.1 wuu jawaabay, iyo 10.96.0.10, adeegga DNS ee cluster-ka, wuu dhacay waqti. Waxba log-ga server-ka kama muuqan xanuun, taasna waa sababta dadku u bilaabaan dib u qorista sharciyada iptables oo aanay waligood u baahnayn inay taabtaan.
Pod-ka VPN waa router, waana in si cad loo yiraahdo. Xirmooyinka sirta ah way yimaadaan, waxaa lagu furaa namespace-ka shabakada ee pod-ka laftiisa, ka dibna waa inay ka baxaan interface kale. Linux wuu diidayaa tallaabada labaad taas haddii gudbinta aan laga shidin namespace-kaas.
Waxa macmiilku gaari karo iyo waxa aanu gaari karin
Cinwaanka jawaaba waxaa iska leh meesha ugu dambeysa ee tunnel-ka, process-ka VPN-na wuxuu ku leeyahay gudaha, sidaas darteed gudbintu waxba kama qeyb qaadaneyso. Wax kasta oo kale, oo ay ku jiraan pod kale, VIP adeeg ama internet-ka, waxay u baahan yihiin kernel-ka inuu xirmo ka guuriyo tun0 ilaa eth0. Marka guuritaankaas la diido, calaamaddu ma aha diidmo, waa aamusnaan isku mid ah, sababtoo ah waxba ma abuuro khalad ICMP oo dib ugu soo noqda tunnel-ka. Waxaad heshaa waqti-dhaaf, ma aha fariimo aan la gaari karin, taasna waa tilmaanta inaan cidina jid-gooynayn.
Laba daqiiqo oo kala-saarid ah ayaa cidhiidhiya lakabka. Haddii magacyada DNS guuldareystaan halka ping-ka ceyriinka ah ee IP adeeggu guulaysto, dhibaatadu waa tuubbada DNS, ma aha gudbinta. Haddii meel kasta oo ka baxsan cinwaanka peer-ka ay waqti-dhaaf noqoto, oo ay ku jirto IP qaawan, ka bilow namespace-ka.
Akhri dejinta gudaha namespace-ka
Pod kastaa wuxuu helaa namespace shabakadeeda, iyo net.ipv4.ip_forward waa sysctl loogu talagalay namespace kasta. Inaad node-ka ku beddesho wax kama sheegayso container-ka, waana hab lagu kalsoonaan karo oo lagu qaato galabta mishiinka qaldan.
kubectl exec -it deploy/openvpn -- sysctl net.ipv4.ip_forward
# net.ipv4.ip_forward = 0
Eber ayaa xaqiijinaya cilmi-baarista. Qiimaha sidoo kale lama dhaxlo konfigurashada runtime-ka node-ka: wuxuu ka bilaabmaa default-ka image-ka mar kasta oo container la abuuro. Sidaas darteed hagaajin gacan lagu dabaqay kubectl exec ... sysctl -w ayaa lumaya dib u bilaabista xigta oo ku soo noqda cillad u eg mid goos-goos ah.
Daar si manifest-ku u hayo
Ikhtiyaarka waara waa init container ku shaqeeya isla pod sandbox-ka oo qora qiimaha ka hor inta container-ka VPN uusan bilaaban. Containers-ka pod-ku waxay wadaagaan namespace shabakadeed, sidaas darteed dejintu waxay u gudubtaa container-ka weyn.
initContainers:
- name: enable-forwarding
image: busybox:1.36
command: ["sysctl", "-w", "net.ipv4.ip_forward=1"]
securityContext:
privileged: true
Isla privileged: true waa safka ay dib-u-eegayaashu ka soo horjeedaan, waana sax. Qorista sysctl waxay u baahan tahay ama mudnaan ama awood cidhiidhi ah, cluster-ka ordineysa Pod Security Standard xaddidan ayaa laga yaabaa inuu si cad u diido init container mudnaan leh. Haddii admission-ku diido pod-ka, waxaad ogaataa marka la abuurayo, taas oo ugu yaraan daacad ah oo fudud in la akhriyo.
Beddelka nadiifka ah waa liiska securityContext.sysctls ee heerka pod-ka, kaas oo u oggolaanaya kubelet-ka inuu dabaqo sysctl-yo namespace leh isagoon siin wax mudnaan ah container kasta. Waxay kaliya daboolaa magacyada ku jira liiska oggolaanshaha cluster-ka. Haddii net.ipv4.ip_forward uu ku jiro liiskaas waxay ku xidhan tahay sida kubelet-ka loo habeeyay, iyo pod-ka codsada sysctl ka baxsan liiskaas waa lagu diidayaa admission ama wuxuu ku xayiran yahay CreateContainerConfigError inta sandbox-ka dib loo tijaabinayo. Hubi liiska oggolaanshaha ka hor inta aadan u malayn in goobtu jabtay.
Ka hor inta aadan mid ka mid ah labada hab gacan ku dhisin, eeg haddii chart-ku horey u soo bandhigo switch-ka, inta badan sida wax u eg ipForwardInitContainer: true. Isticmaalka qiimaha chart-ku wuxuu faylkaaga override yar ka dhigayaa wuxuuna ka badbaadayaa casriyeynta xigta, taas oo tafatirka Deployment-ka gacan lagu dhejiyay aanay samayn.
Qeybta labaad: wadada soo noqodka iyo siyaasadda
Gudbinta daaran waa lagama maarmaan, kuma filna. Haddii macaamiishu isticmaalaan barkad gaar ah oo aan shabakada cluster-ku waddo u lahayn, jawaabahu ma heli karaan wadada dib ugu noqota tunnel-ka, iyo pod-ku waa inuu taraafikadaas u qariyo dhanka meesha uu aadayo.
Siyaasaddu waxay dul fadhiisataa taas. Walxaha NetworkPolicy iyo sharciyada firewall-ka daruuraha waxaa lagu qiimeeyaa cinwaanka isha oo xirmadu qaado ka dib turjumaadda, sidaas darteed sharci loo qoray barkadda macaamiisha ayaa si aamusan u joojin kara isku-dhaca marka qarinta la daro.
Marka macaamiishu kaliya u baahan yihiin inay gaaraan adeegyada gudaha cluster-ka, in VPN-ka lagu dhammeeyo VIP-ga adeegga waa naqshad ka yar jid-gooynta shabakada pod-yada. Waxay sidoo kale barkadda macaamiisha ka fogaanaysaa shaxda jid-gooynta CNI gebi ahaanba.
Go'doominta boodhka guuldareystay ee macmiilka
Ka shaqee dhanka banaanka oo joogso tallaabada aamusan ee ugu horeysa. Ka bilow peer-ka VPN, ka dib tijaabi cinwaanka pod qaar, ka dib VIP adeeg, iyo ka dib oo kaliya meel dadweyne. Guul kastaa waxay xadka u rartaa hal boodh, guuldar kastaa waxay magacaabtaa lakabka mudan in la baaro. Ka dib hirgelin kasta, ku gal exec oo dib u akhri sysctl-ka, sababtoo ah pod-ka la beddelay wuxuu ka bilaabmaa default-ka image-ka, hagaajinta aan waligeed manifest-ka ku jirinna horey ayay u tagtay.
Dukumeentiga Kubernetes ee ku saabsan isticmaalka sysctl ee cluster-ka wuxuu taxayaa magacyada lagu dejin karo macnaha amniga pod-ka, waana meesha ugu horeysa ee la eego marka admission-ku diido isbeddelka.