მოდის განახლება და გვირაბის მეორე მხარეს არსებული სისტემები იწყებენ იმ პოდების ტრაფიკის უარყოფას, რომელიც წინა კვირაში მუშაობდა. გვირაბი აწეულია, firewall-ის წესები ხელუხლებელია და არავის შეუცვლია პირის პოლიტიკა. რაც შეიცვალა, კლასტერის ჟურნალებში უხილავია: ის წყაროს მისამართი, რომელსაც ეს სისტემები ახლა ხედავენ. ეს სხვაობა ხსნის ხარვეზს, რომელიც ქსელის შეფერხებას ჰგავს და ნებართვის პრობლემასავით იქცევა.

ორი სწორი პასუხი არსებობს და ისინი სხვადასხვა ადგილას მიგიყვანენ. ConfigMap-ის რედაქტირებამდე აირჩიეთ წყაროს ხელშეკრულება.

ნაგულისხმევი წესი, რომლის დაყენებაც შეწყვიტეს

GKE-ის ადრინდელი გამოშვებები აყენებდნენ masquerade წესს, რომელიც პოდების წყაროებს კვანძის მისამართით ცვლიდა, როცა დანიშნულება 10.0.0.0/8-ის გარეთ იყო. ამ დიაპაზონის შიგნით მყოფი VPN-ის კარიბჭე პოდის მისამართს ხედავდა, უფრო შორს კი ყველაფერი ისე გამოიყურებოდა, თითქოს კვანძიდან მოდიოდა. პირებმა ნებადართულების სიები და დაბრუნების მარშრუტები კვანძების მისამართების გარშემო ააშენეს, რადგან სწორედ ამას აკვირდებოდნენ.

მოგვიანებით გამოშვებებმა ამ ნაგულისხმევი წესის დაყენება შეწყვიტეს. პოდების ტრაფიკი ახლა კარიბჭეს პოდების მისამართებით აღწევს, როგორც არ უნდა იყოს დანიშნულება. პირი, რომელიც მხოლოდ კვანძების მისამართებს მარშრუტიზებს, პასუხებს ყრის და არც ერთი მხარე არ წერს სასარგებლო ჩანაწერს ჟურნალში. მოთხოვნა შეიძლება შორეულ ბოლოში წარმატებითაც დასრულდეს და სწორედ ეს ხდის ხარვეზის დევნას დამაბნეველს.

მკვდარი კომპონენტის გაგებით არაფერი არ არის გატეხილი. ორი მხარე უბრალოდ არ თანხმდება, რომელი წყაროა ლეგიტიმური.

აირჩიეთ წყარო, რომელიც პირმა უნდა დაინახოს

პოდების მისამართების შენარჩუნება უფრო ზუსტი ხელშეკრულებაა. შორეული მხარე ხედავს იმ დატვირთვას, რომელმაც ტრაფიკი წარმოქმნა, ჟურნალები პატიოსანი რჩება და თითოეული პოდის პოლიტიკა შესაძლებელი ხდება. ფასი ის არის, რომ პირმა პოდების პრეფიქსი უნდა ატაროს.

კვანძების მისამართების შენარჩუნება უფრო იაფი ხელშეკრულებაა. ხელახლა ჩართეთ masquerade ამ დანიშნულებისთვის და პირი კვლავ იხილავს მისამართს, რომელსაც უკვე ენდობა.

ერთი კითხვა წყვეტს მათ შორის: რას აკეთებს პირი წყაროსთან? თუ ის ჟურნალს აწარმოებს, წყაროზე დაფუძნებულ პოლიტიკას იყენებს ან ვიწრო დაბრუნების მარშრუტს ავალდებულებს, პოდების მისამართები ამართლებს დამატებით კონფიგურაციას. თუ მხოლოდ პასუხების გაგზავნა სჭირდება, masquerade ნაკლები ღირს და მეორე მხარისგან არაფერს ითხოვს. ნებისმიერი არჩევანი დასაცავია, სანამ ორივე გუნდი ჩაწერს.

მესამე ვარიანტი ჩვეულებრივ შეცდომაა: ყველაფრის masquerade და ტრაფიკის მიკუთვნების უნარის დაკარგვა. მოერიდეთ მას, თუ პირი ნამდვილად ვერ მარშრუტიზებს კვანძების მისამართების გარდა სხვა არაფერს.

მიმართეთ nonMasqueradeCIDRs რეალურ დიაპაზონებზე

GKE kube-system-ში ip-masq-agent-ს უშვებს და მისი ConfigMap ჩამოთვლის იმ დანიშნულებებს, რომლებიც masquerade-ს გვერდს უვლიან. პოდების წყაროების გვირაბისკენ შესანარჩუნებლად პოდების დიაპაზონი, კვანძის ქვექსელი და ლოკალური პრეფიქსი ყველა ამ სიაში შედის.

შეცვალეთ სანიმუშო მნიშვნელობები თქვენივე კლასტერის დიაპაზონებით. ნუ გახდით სიას უფრო ფართოს, ვიდრე მოთხოვნა მოითხოვს, რადგან ყოველი დამატებითი ჩანაწერი ცვლის, თუ რას ხედავს სხვა დანიშნულება. ქვემოთ სამი ჩანაწერი წარმოადგენს პოდების ქსელს, კვანძის ქვექსელს და გვირაბის უკან არსებულ პრეფიქსს:

nonMasqueradeCIDRs:
  - 10.12.0.0/14
  - 10.100.0.0/16
  - 172.16.0.0/12
masqLinkLocal: false
resyncInterval: 60s

0.0.0.0/0 ჩანაწერი გამორთავს masquerade-ს ყველა დანიშნულებისთვის, რაც ცვლის, თუ როგორ ჩანან დაუკავშირებელი დატვირთვები გარე სერვისებისთვის და იშვიათად არის განზრახული. აგენტი კითხულობს თავის კონფიგურაციას ხელახლა resyncInterval-ზე, ამიტომ გადატვირთვა ჩვეულებრივ არ არის საჭირო. შეამოწმეთ, მუშაობს თუ არა აგენტის პოდი, შემდეგ გახსენით მის შიგნით ჩამონტაჟებული ფაილი. სწორედ ამ ფაილის წაკითხვა ამტკიცებს, რომ ცვლილებამ მიაღწია.

პასუხის გზა მეორე ნახევარია

masquerade ცვლის მოთხოვნის წყაროს და სხვა არაფერს. რომელი წყაროც არ უნდა მიიღოს პირმა, მას მაინც სჭირდება მარშრუტი უკან მისკენ, ხოლო კლასტერს მაინც სჭირდება მარშრუტი პირისკენ.

VPN-ის კარიბჭეზე გადაღება სწრაფად ჰყოფს ორ ხარვეზს. პაკეტები, რომლებიც პოდების მისამართებით მოდიან და პასუხს არასდროს იღებენ, ნიშნავს, რომ პირს პოდების პრეფიქსისთვის მარშრუტი არ აქვს. პასუხი, რომელიც კარიბჭეზე ჩნდება, მაგრამ კლასტერს არასდროს აღწევს, ნიშნავს, რომ ლოკალური მარშრუტი აკლია. ნებისმიერ შემთხვევაში ჩაწერეთ ხელშეკრულება ბილეთში: რომელ წყაროს ხედავს პირი და რომელ პრეფიქსზე აბრუნებს პასუხს.

ყოველი განახლების შემდეგ ხელახლა შეამოწმეთ

masquerade-ის ნაგულისხმევი ქცევა უკვე ერთხელ შეიცვალა და კვანძების აუზის შეცვლამ შეიძლება კლასტერის ქსელი გადატვირთოს. მოეპყარით წყაროს ხელშეკრულებას, როგორც შესამოწმებელს და არა როგორც ვარაუდს.

განახლების შემდეგ გაგზავნეთ ერთი მოთხოვნა პოდიდან ლოკალურ სერვისზე და წაიკითხეთ ის წყარო, რომელსაც პირი ჟურნალში წერს. სწორედ ეს ერთი დაკვირვება იჭერს რეგრესიას, რომელსაც გვირაბის სტატუსის გვერდი სიამოვნებით შეატყობინებს როგორც ჯანსაღს. მისი გამეორება ერთი წუთი ღირს და შემდეგ ადამიანს საღამოს უზოგავს.

დაკავშირებული სტატიები