Ένα sidecar VPN μέσα σε Pod του Kubernetes μοιάζει με VPN επιπέδου κεντρικού υπολογιστή με καλύτερους τρόπους, και η ομοιότητα σταματά στα όρια του χώρου ονομάτων. Τα κοντέινερ σε ένα Pod μοιράζονται τον χώρο ονομάτων δικτύου, μαζί με τον χώρο διευθύνσεων και θυρών, οπότε ένα sidecar που εγκαθιστά διαδρομές και πολιτική αλλάζει πράγματι πού πηγαίνουν τα πακέτα της εφαρμογής. Δεν αλλάζει τίποτα για τα άλλα Pod στον κόμβο, και δεν αγγίζει τη δική του στοίβα του κόμβου εκτός αν το ρυθμίσετε έτσι. Το να πετύχετε αυτό το όριο καθορίζει και τι μπορείτε να αναπτύξετε και τι πρέπει να δοκιμάσετε. Οι ενότητες παρακάτω το ακολουθούν από τον χώρο ονομάτων προς τα έξω.

Κοινός χώρος ονομάτων, κοινές συνέπειες

Δύο κοντέινερ σε ένα Pod μιλούν μέσω loopback και βλέπουν τις ίδιες διεπαφές, και γι' αυτό δουλεύει καθόλου το μοτίβο του sidecar: η εφαρμογή δεν χρειάζεται να ξέρει ότι υπάρχει σήραγγα, γιατί η διαδρομή στην οποία καταλήγει εγκαταστάθηκε στον χώρο ονομάτων που χρησιμοποιεί. Η ίδια ιδιότητα σημαίνει ότι τα λάθη του sidecar είναι λάθη της εφαρμογής. Μια διαδρομή που συλλαμβάνει πάρα πολλά, ή μια αλλαγή DNS που δείχνει σε resolver μέσα στη σήραγγα, εφαρμόζεται αμέσως σε κάθε διεργασία σε αυτό το Pod. Σε κοινόχρηστο χώρο ονομάτων δεν υπάρχει δρομολόγηση ανά κοντέινερ, οπότε ένα sidecar δεν μπορεί να περιοριστεί σε μία διεργασία.

Αυτός είναι ο μηχανισμός που πρέπει να θυμάστε στην αναθεώρηση: η ακτίνα επίπτωσης είναι το Pod, όχι ο κόμβος και όχι το σύμπλεγμα.

Πού δεν φτάνει το sidecar

Τα άλλα Pod κρατούν τους δικούς τους χώρους ονομάτων και τη δική τους δρομολόγηση, οπότε ένα φορτίο εργασίας που χρειάζεται την ίδια έξοδο χρειάζεται το ίδιο sidecar ή αντ' αυτού σχεδιασμό σε επίπεδο κόμβου. Και η κίνηση του κόμβου είναι έξω από τον χώρο ονομάτων του Pod, και τα Pod με δίκτυο υποδοχής επιλέγουν συνειδητά να βγουν εντελώς από αυτή την απομόνωση. Αν τρέξετε το sidecar με δίκτυο υποδοχής για να φτάσετε κάτι βολικό, έχετε διευρύνει το πεδίο από ένα Pod σε ολόκληρο τον κόμβο και θα πρέπει να το πείτε δυνατά.

Η κίνηση προς τις υπηρεσίες του συμπλέγματος είναι η άλλη συνηθισμένη έκπληξη. Μια φαρδιά προεπιλεγμένη διαδρομή μέσα στο Pod μπορεί να συλλάβει αιτήματα που προορίζονται για τον διακομιστή API ή για υπηρεσία ClusterIP, και μετά αποτυγχάνουν με τρόπους που μοιάζουν με χαλασμένη σήραγγα.

Σχέδιο διαδρομών: εύρη Pod, υπηρεσίας, κόμβου και VPN

Γράψτε τα τέσσερα εύρη και ελέγξτε τα για επικάλυψη πριν αναπτύξετε οτιδήποτε: CIDR του Pod, CIDR της υπηρεσίας, διευθύνσεις του κόμβου και προορισμοί πίσω από το VPN. Η επικάλυψη ανάμεσα στα ιδιωτικά εύρη του VPN και στον δικό του χώρο του συμπλέγματος δεν είναι σπάνια, και η προεπιλεγμένη διαδρομή είναι η λάθος λύση γι' αυτό. Το σχέδιο διαδρομών ανήκει στο ίδιο αποθετήριο με το manifest, γιατί το επόμενο σύμπλεγμα μπορεί να δώσει εντελώς άλλα εύρη Pod και υπηρεσιών.

Το DNS είναι μέρος του σχεδίου και όχι ξεχωριστή έγνοια. Ένα sidecar που ξαναγράφει τη ρύθμιση του resolver μπορεί να σπάσει την ανακάλυψη υπηρεσιών μέσα στο σύμπλεγμα ενώ οι εξωτερικές αναζητήσεις δουλεύουν τέλεια.

Η εκκίνηση και η αποτυχία είναι ρητές καταστάσεις

Μια διεργασία sidecar που τρέχει δεν είναι πολιτική εξόδου. Αποφασίστε ποια κίνηση επιτρέπεται να ρέει πριν είναι έτοιμη η σήραγγα και τι συμβαίνει αν πεθάνει μετά, και μετά υλοποιήστε την απόφαση: ένα probe που φιλτράρει το κοντέινερ της εφαρμογής, μια πολιτική δικτύου που αρνείται εξ ορισμού, ή και τα δύο. Χωρίς ένα από αυτά, η εφαρμογή ξεκινά, επιλύει και στέλνει κίνηση έξω από την κανονική διαδρομή του κόμβου όσο η σήραγγα ακόμα συνδέεται.

Αυτό το κενό είναι σύντομο σε υγιές σύμπλεγμα και μόνιμο σε χαλασμένο, και είναι ακριβώς η ιδιότητα που προτιμά ένας επιτιθέμενος ή μια τυχαία διαρροή δεδομένων.

Συνδυάστε τη σειρά με ένα τεστ αποτυχίας. Σκοτώστε το sidecar και επιβεβαιώστε ότι η εφαρμογή χάνει την προβλεπόμενη έξοδό της αντί να πέφτει σιωπηλά πίσω.

Δυνατότητες, πολιτικές και δοκιμές από το κοντέινερ της εφαρμογής

Η παραχώρηση των δυνατοτήτων που χρειάζονται για δημιουργία διεπαφών και αλλαγή διαδρομών είναι απόφαση προνομίων, και ένα προνόμιο κατάλληλο για απομονωμένο Pod δεν είναι αυτόματα κατάλληλο στη στοίβα του κόμβου. Χρησιμοποιήστε τους υποστηριζόμενους μηχανισμούς πολιτικής δικτύου και ασφάλειας του συμπλέγματος και μην υποθέσετε ότι κάθε υλοποίηση CNI ή πολιτικής αντιμετωπίζει τη διεπαφή VPN το ίδιο· οι διαφορές φαίνονται ακριβώς στις περιπτώσεις αποτυχίας που σας απασχολούν.

Δοκιμάστε από το πραγματικό κοντέινερ της εφαρμογής, με νέα αιτήματα προς ιδιωτικό προορισμό, υπηρεσία του συμπλέγματος και το δημόσιο διαδίκτυο. Μια δοκιμή από το sidecar αποδεικνύει ότι η σήραγγα δουλεύει, όχι ότι η εφαρμογή φτάνει ό,τι χρειάζεται.

Τεκμηριώστε τις παραδοχές δικτύου του συμπλέγματος δίπλα στη ρύθμιση του VPN. Η μετακίνηση του φορτίου σε άλλο σύμπλεγμα είναι τότε άσκηση ελέγχου του σχεδίου διαδρομών και όχι αλλαγή image που σταματά σιωπηλά να δουλεύει.

Σχετικά άρθρα